aboutsummaryrefslogtreecommitdiff
path: root/externals/grill
diff options
context:
space:
mode:
authorThomas Grill <xovo@users.sourceforge.net>2009-04-01 21:13:09 +0000
committerThomas Grill <xovo@users.sourceforge.net>2009-04-01 21:13:09 +0000
commit0ed7a8b68dd73e2b0473b8127aeca99f3bac9061 (patch)
tree5c67818b38a5cc2f9caa5ca7f8640ca356adf02b /externals/grill
parentbb4c7f6a245394d09dac9adfb2efb093d3d98452 (diff)
cleaned up grill externals - replaced with svn:externals to svn.grrrr.org/ext/trunk/
svn path=/trunk/; revision=10951
Diffstat (limited to 'externals/grill')
-rw-r--r--externals/grill/deljoin/deljoin-help.pd20
-rwxr-xr-xexternals/grill/deljoin/deljoin.cwbin141089 -> 0 bytes
-rwxr-xr-xexternals/grill/deljoin/deljoin.helpbin521 -> 0 bytes
-rw-r--r--externals/grill/deljoin/deljoin.vcproj176
-rw-r--r--externals/grill/deljoin/gpl.txt346
-rw-r--r--externals/grill/deljoin/license.txt50
-rw-r--r--externals/grill/deljoin/main.cpp147
-rw-r--r--externals/grill/deljoin/package.txt2
-rw-r--r--externals/grill/delsplit/delsplit-help.pd22
-rwxr-xr-xexternals/grill/delsplit/delsplit.helpbin529 -> 0 bytes
-rwxr-xr-xexternals/grill/delsplit/delsplit.mcpbin141165 -> 0 bytes
-rw-r--r--externals/grill/delsplit/delsplit.vcproj176
-rw-r--r--externals/grill/delsplit/gpl.txt346
-rw-r--r--externals/grill/delsplit/license.txt50
-rw-r--r--externals/grill/delsplit/main.cpp174
-rw-r--r--externals/grill/delsplit/package.txt2
-rw-r--r--externals/grill/dynext/dynext.vcproj255
-rw-r--r--externals/grill/dynext/gpl.txt346
-rw-r--r--externals/grill/dynext/license.txt50
-rw-r--r--externals/grill/dynext/package.txt6
-rw-r--r--externals/grill/dynext/pd/dyn~-help.pd169
-rw-r--r--externals/grill/dynext/readme.txt73
-rw-r--r--externals/grill/dynext/src/main.cpp954
-rwxr-xr-xexternals/grill/fftease/fftease.mcpbin207912 -> 0 bytes
-rw-r--r--externals/grill/fftease/fftease.vcproj3346
-rw-r--r--externals/grill/fftease/gpl.txt346
-rw-r--r--externals/grill/fftease/license.txt86
-rwxr-xr-xexternals/grill/fftease/maxmsp/burrow~.helpbin2230 -> 0 bytes
-rwxr-xr-xexternals/grill/fftease/maxmsp/cross~.helpbin1822 -> 0 bytes
-rwxr-xr-xexternals/grill/fftease/maxmsp/dentist~.helpbin1821 -> 0 bytes
-rwxr-xr-xexternals/grill/fftease/maxmsp/disarray~.helpbin2069 -> 0 bytes
-rwxr-xr-xexternals/grill/fftease/maxmsp/drown~.helpbin1527 -> 0 bytes
-rwxr-xr-xexternals/grill/fftease/maxmsp/ether~.helpbin2298 -> 0 bytes
-rw-r--r--externals/grill/fftease/maxmsp/fftease-objectmappings.txt29
-rwxr-xr-xexternals/grill/fftease/maxmsp/fftease4.PICTbin8002 -> 0 bytes
-rw-r--r--externals/grill/fftease/media/nixon.aiffbin449214 -> 0 bytes
-rw-r--r--externals/grill/fftease/media/schubert.aiffbin451774 -> 0 bytes
-rw-r--r--externals/grill/fftease/package.txt15
-rw-r--r--externals/grill/fftease/pd/burrow~-help.pd90
-rw-r--r--externals/grill/fftease/pd/cross~-help.pd88
-rw-r--r--externals/grill/fftease/pd/dentist~-help.pd65
-rw-r--r--externals/grill/fftease/pd/disarray~-help.pd67
-rw-r--r--externals/grill/fftease/pd/drown~-help.pd61
-rw-r--r--externals/grill/fftease/pd/ether~-help.pd84
-rw-r--r--externals/grill/fftease/pd/morphine~-help.pd77
-rw-r--r--externals/grill/fftease/pd/scrape~-help.pd72
-rw-r--r--externals/grill/fftease/pd/shapee~-help.pd62
-rw-r--r--externals/grill/fftease/pd/swinger~-help.pd62
-rw-r--r--externals/grill/fftease/pd/taint~-help.pd83
-rw-r--r--externals/grill/fftease/pd/thresher~-help.pd46
-rw-r--r--externals/grill/fftease/pd/vacancy~-help.pd97
-rw-r--r--externals/grill/fftease/pd/xsyn~-help.pd61
-rw-r--r--externals/grill/fftease/readme.txt75
-rw-r--r--externals/grill/fftease/src/burrow~.cpp107
-rw-r--r--externals/grill/fftease/src/convert.c134
-rw-r--r--externals/grill/fftease/src/cross~.cpp92
-rw-r--r--externals/grill/fftease/src/dentist~.cpp149
-rw-r--r--externals/grill/fftease/src/disarray~.cpp164
-rw-r--r--externals/grill/fftease/src/drown~.cpp50
-rw-r--r--externals/grill/fftease/src/ether~.cpp87
-rw-r--r--externals/grill/fftease/src/fft.c157
-rw-r--r--externals/grill/fftease/src/fft4.c340
-rw-r--r--externals/grill/fftease/src/fftease.cpp236
-rw-r--r--externals/grill/fftease/src/fold.c67
-rw-r--r--externals/grill/fftease/src/leanconvert.c84
-rw-r--r--externals/grill/fftease/src/main.cpp51
-rw-r--r--externals/grill/fftease/src/main.h110
-rw-r--r--externals/grill/fftease/src/makewindows.c190
-rw-r--r--externals/grill/fftease/src/morphine~.cpp119
-rw-r--r--externals/grill/fftease/src/pv.h65
-rw-r--r--externals/grill/fftease/src/pvoc~.cpp130
-rw-r--r--externals/grill/fftease/src/scrape~.cpp154
-rw-r--r--externals/grill/fftease/src/shapee~.cpp88
-rw-r--r--externals/grill/fftease/src/swinger~.cpp64
-rw-r--r--externals/grill/fftease/src/taint~.cpp99
-rw-r--r--externals/grill/fftease/src/thresher~.cpp112
-rw-r--r--externals/grill/fftease/src/vacancy~.cpp134
-rw-r--r--externals/grill/fftease/src/xsyn~.cpp50
-rw-r--r--externals/grill/flext/Doxyfile273
-rwxr-xr-xexternals/grill/flext/Makefile.am8
-rwxr-xr-xexternals/grill/flext/bootstrap.sh5
-rw-r--r--externals/grill/flext/build.bat58
-rw-r--r--externals/grill/flext/build.sh57
-rw-r--r--externals/grill/flext/build.txt251
-rw-r--r--externals/grill/flext/build/bmake-win-bcc.inc17
-rw-r--r--externals/grill/flext/build/config-lnx.def2
-rw-r--r--externals/grill/flext/build/config-mac.def2
-rw-r--r--externals/grill/flext/build/config-win.def2
-rw-r--r--externals/grill/flext/build/gnumake-lnx-gcc.inc13
-rw-r--r--externals/grill/flext/build/gnumake-lnx-icc.inc13
-rw-r--r--externals/grill/flext/build/gnumake-mac-gcc.inc13
-rw-r--r--externals/grill/flext/build/gnumake-win-cygwin.inc17
-rw-r--r--externals/grill/flext/build/gnumake-win-mingw.inc17
-rw-r--r--externals/grill/flext/build/nmake-win-msvc.inc3
-rw-r--r--externals/grill/flext/buildsys/bmake-ext.inc1
-rw-r--r--externals/grill/flext/buildsys/bmake-flext.inc3
-rw-r--r--externals/grill/flext/buildsys/bmake-sub.mak44
-rw-r--r--externals/grill/flext/buildsys/bmake.inc67
-rw-r--r--externals/grill/flext/buildsys/bmake.mak110
-rw-r--r--externals/grill/flext/buildsys/build-bcc.bat3
-rw-r--r--externals/grill/flext/buildsys/build-cygwin.sh5
-rw-r--r--externals/grill/flext/buildsys/build-gcc.sh5
-rw-r--r--externals/grill/flext/buildsys/build-icc.sh5
-rw-r--r--externals/grill/flext/buildsys/build-mingw.bat3
-rw-r--r--externals/grill/flext/buildsys/build-msvc.bat3
-rw-r--r--externals/grill/flext/buildsys/gnumake-ext.inc1
-rw-r--r--externals/grill/flext/buildsys/gnumake-flext.inc3
-rw-r--r--externals/grill/flext/buildsys/gnumake-sub.mak44
-rw-r--r--externals/grill/flext/buildsys/gnumake.inc95
-rw-r--r--externals/grill/flext/buildsys/gnumake.mak142
-rw-r--r--externals/grill/flext/buildsys/lnx/gnumake-gcc-ext.inc56
-rw-r--r--externals/grill/flext/buildsys/lnx/gnumake-gcc-flext.inc72
-rw-r--r--externals/grill/flext/buildsys/lnx/gnumake-gcc.inc64
-rw-r--r--externals/grill/flext/buildsys/lnx/gnumake-icc-ext.inc56
-rw-r--r--externals/grill/flext/buildsys/lnx/gnumake-icc-flext.inc72
-rw-r--r--externals/grill/flext/buildsys/lnx/gnumake-icc.inc64
-rw-r--r--externals/grill/flext/buildsys/lnx/pd/config-gcc.def56
-rw-r--r--externals/grill/flext/buildsys/lnx/pd/config-icc.def56
-rw-r--r--externals/grill/flext/buildsys/lnx/pd/gnumake-gcc-ext.inc1
-rw-r--r--externals/grill/flext/buildsys/lnx/pd/gnumake-gcc-flext.inc6
-rw-r--r--externals/grill/flext/buildsys/lnx/pd/gnumake-gcc.inc4
-rw-r--r--externals/grill/flext/buildsys/lnx/pd/gnumake-icc-ext.inc1
-rw-r--r--externals/grill/flext/buildsys/lnx/pd/gnumake-icc-flext.inc6
-rw-r--r--externals/grill/flext/buildsys/lnx/pd/gnumake-icc.inc4
-rw-r--r--externals/grill/flext/buildsys/mac/gnumake-gcc-ext.inc37
-rw-r--r--externals/grill/flext/buildsys/mac/gnumake-gcc-flext.inc77
-rw-r--r--externals/grill/flext/buildsys/mac/gnumake-gcc-targets.inc70
-rw-r--r--externals/grill/flext/buildsys/mac/gnumake-gcc.inc74
-rw-r--r--externals/grill/flext/buildsys/mac/max/config-gcc.def75
-rw-r--r--externals/grill/flext/buildsys/mac/max/gnumake-gcc-ext.inc23
-rw-r--r--externals/grill/flext/buildsys/mac/max/gnumake-gcc-flext.inc20
-rw-r--r--externals/grill/flext/buildsys/mac/max/gnumake-gcc.inc6
-rw-r--r--externals/grill/flext/buildsys/mac/pd/config-gcc.def72
-rw-r--r--externals/grill/flext/buildsys/mac/pd/gnumake-gcc-ext.inc10
-rw-r--r--externals/grill/flext/buildsys/mac/pd/gnumake-gcc-flext.inc11
-rw-r--r--externals/grill/flext/buildsys/mac/pd/gnumake-gcc.inc10
-rw-r--r--externals/grill/flext/buildsys/nmake-ext.inc1
-rw-r--r--externals/grill/flext/buildsys/nmake-flext.inc3
-rw-r--r--externals/grill/flext/buildsys/nmake-shlib.inc1
-rw-r--r--externals/grill/flext/buildsys/nmake-sub.mak44
-rw-r--r--externals/grill/flext/buildsys/nmake.inc64
-rw-r--r--externals/grill/flext/buildsys/nmake.mak110
-rw-r--r--externals/grill/flext/buildsys/readme.txt180
-rw-r--r--externals/grill/flext/buildsys/targets-ext.inc51
-rw-r--r--externals/grill/flext/buildsys/targets-flext.inc52
-rw-r--r--externals/grill/flext/buildsys/targets-shlib.inc51
-rw-r--r--externals/grill/flext/buildsys/targets.inc148
-rw-r--r--externals/grill/flext/buildsys/version.inc3
-rw-r--r--externals/grill/flext/buildsys/win/bmake-bcc-ext.inc53
-rw-r--r--externals/grill/flext/buildsys/win/bmake-bcc-flext.inc70
-rw-r--r--externals/grill/flext/buildsys/win/bmake-bcc.inc36
-rw-r--r--externals/grill/flext/buildsys/win/gnumake-cygwin-ext.inc42
-rw-r--r--externals/grill/flext/buildsys/win/gnumake-cygwin-flext.inc52
-rw-r--r--externals/grill/flext/buildsys/win/gnumake-cygwin.inc30
-rw-r--r--externals/grill/flext/buildsys/win/gnumake-mingw-ext.inc48
-rw-r--r--externals/grill/flext/buildsys/win/gnumake-mingw-flext.inc52
-rw-r--r--externals/grill/flext/buildsys/win/gnumake-mingw.inc30
-rw-r--r--externals/grill/flext/buildsys/win/max/config-cygwin.def51
-rw-r--r--externals/grill/flext/buildsys/win/max/config-mingw.def42
-rw-r--r--externals/grill/flext/buildsys/win/max/config-msvc.def46
-rw-r--r--externals/grill/flext/buildsys/win/max/gnumake-cygwin-ext.inc1
-rw-r--r--externals/grill/flext/buildsys/win/max/gnumake-cygwin-flext.inc6
-rw-r--r--externals/grill/flext/buildsys/win/max/gnumake-cygwin.inc10
-rw-r--r--externals/grill/flext/buildsys/win/max/gnumake-mingw-ext.inc1
-rw-r--r--externals/grill/flext/buildsys/win/max/gnumake-mingw-flext.inc6
-rw-r--r--externals/grill/flext/buildsys/win/max/gnumake-mingw.inc12
-rw-r--r--externals/grill/flext/buildsys/win/max/nmake-msvc-ext.inc1
-rw-r--r--externals/grill/flext/buildsys/win/max/nmake-msvc-flext.inc5
-rw-r--r--externals/grill/flext/buildsys/win/max/nmake-msvc.inc8
-rw-r--r--externals/grill/flext/buildsys/win/nmake-msvc-ext.inc43
-rw-r--r--externals/grill/flext/buildsys/win/nmake-msvc-flext.inc59
-rw-r--r--externals/grill/flext/buildsys/win/nmake-msvc-shlib.inc45
-rw-r--r--externals/grill/flext/buildsys/win/nmake-msvc.inc59
-rw-r--r--externals/grill/flext/buildsys/win/pd/bmake-bcc-ext.inc1
-rw-r--r--externals/grill/flext/buildsys/win/pd/bmake-bcc-flext.inc5
-rw-r--r--externals/grill/flext/buildsys/win/pd/bmake-bcc-shlib.inc1
-rw-r--r--externals/grill/flext/buildsys/win/pd/bmake-bcc.inc12
-rw-r--r--externals/grill/flext/buildsys/win/pd/config-bcc.def38
-rw-r--r--externals/grill/flext/buildsys/win/pd/config-cygwin.def34
-rw-r--r--externals/grill/flext/buildsys/win/pd/config-mingw.def37
-rw-r--r--externals/grill/flext/buildsys/win/pd/config-msvc.def46
-rw-r--r--externals/grill/flext/buildsys/win/pd/gnumake-cygwin-ext.inc1
-rw-r--r--externals/grill/flext/buildsys/win/pd/gnumake-cygwin-flext.inc5
-rw-r--r--externals/grill/flext/buildsys/win/pd/gnumake-cygwin-shlib.inc1
-rw-r--r--externals/grill/flext/buildsys/win/pd/gnumake-cygwin.inc6
-rw-r--r--externals/grill/flext/buildsys/win/pd/gnumake-mingw-ext.inc1
-rw-r--r--externals/grill/flext/buildsys/win/pd/gnumake-mingw-flext.inc5
-rw-r--r--externals/grill/flext/buildsys/win/pd/gnumake-mingw-shlib.inc1
-rw-r--r--externals/grill/flext/buildsys/win/pd/gnumake-mingw.inc13
-rw-r--r--externals/grill/flext/buildsys/win/pd/nmake-msvc-ext.inc1
-rw-r--r--externals/grill/flext/buildsys/win/pd/nmake-msvc-flext.inc5
-rw-r--r--externals/grill/flext/buildsys/win/pd/nmake-msvc-shlib.inc1
-rw-r--r--externals/grill/flext/buildsys/win/pd/nmake-msvc.inc13
-rw-r--r--externals/grill/flext/changes.txt355
-rwxr-xr-xexternals/grill/flext/configure.ac160
-rw-r--r--externals/grill/flext/examples/examples.dsw33
-rw-r--r--externals/grill/flext/examples/pd/ex-henon.pd87
-rw-r--r--externals/grill/flext/examples/source/henon.cpp122
-rw-r--r--externals/grill/flext/examples/source/henon.cwbin101183 -> 0 bytes
-rw-r--r--externals/grill/flext/examples/source/henon.dsp95
-rw-r--r--externals/grill/flext/flext.mcpbin935395 -> 0 bytes
-rw-r--r--externals/grill/flext/flext.vcproj4333
-rwxr-xr-xexternals/grill/flext/flext.xcode/project.pbxproj3066
-rwxr-xr-xexternals/grill/flext/flext.xcodeproj/project.pbxproj1697
-rw-r--r--externals/grill/flext/gpl.txt346
-rw-r--r--externals/grill/flext/license.txt19
-rw-r--r--externals/grill/flext/notes.txt69
-rw-r--r--externals/grill/flext/package.txt48
-rw-r--r--externals/grill/flext/readme.txt91
-rwxr-xr-xexternals/grill/flext/source/Makefile.am129
-rw-r--r--externals/grill/flext/source/flatom.cpp165
-rw-r--r--externals/grill/flext/source/flatom_part.cpp37
-rw-r--r--externals/grill/flext/source/flatom_pr.cpp119
-rw-r--r--externals/grill/flext/source/flattr.cpp445
-rw-r--r--externals/grill/flext/source/flattr_ed.cpp872
-rw-r--r--externals/grill/flext/source/flbase.cpp204
-rw-r--r--externals/grill/flext/source/flbase.h575
-rw-r--r--externals/grill/flext/source/flbind.cpp261
-rw-r--r--externals/grill/flext/source/flbuf.cpp348
-rw-r--r--externals/grill/flext/source/flclass.h1098
-rw-r--r--externals/grill/flext/source/flcontainers.h473
-rw-r--r--externals/grill/flext/source/flcwmax-thr.h31
-rw-r--r--externals/grill/flext/source/flcwmax-x-thr.h31
-rw-r--r--externals/grill/flext/source/flcwmax-x.h24
-rw-r--r--externals/grill/flext/source/flcwmax.h36
-rw-r--r--externals/grill/flext/source/flcwpd-x-thr.h31
-rw-r--r--externals/grill/flext/source/flcwpd-x.h37
-rw-r--r--externals/grill/flext/source/fldefs.h70
-rw-r--r--externals/grill/flext/source/fldefs_attradd.h121
-rw-r--r--externals/grill/flext/source/fldefs_attrcb.h158
-rw-r--r--externals/grill/flext/source/fldefs_attrvar.h158
-rw-r--r--externals/grill/flext/source/fldefs_hdr.h61
-rw-r--r--externals/grill/flext/source/fldefs_methadd.h232
-rw-r--r--externals/grill/flext/source/fldefs_methbind.h48
-rw-r--r--externals/grill/flext/source/fldefs_methcall.h78
-rw-r--r--externals/grill/flext/source/fldefs_methcb.h129
-rw-r--r--externals/grill/flext/source/fldefs_meththr.h273
-rw-r--r--externals/grill/flext/source/fldefs_setup.h337
-rw-r--r--externals/grill/flext/source/fldoxygen.h216
-rw-r--r--externals/grill/flext/source/fldsp.cpp118
-rw-r--r--externals/grill/flext/source/fldsp.h184
-rw-r--r--externals/grill/flext/source/flext.cpp261
-rw-r--r--externals/grill/flext/source/flext.h68
-rw-r--r--externals/grill/flext/source/flfeatures.h34
-rw-r--r--externals/grill/flext/source/flinternal.h119
-rw-r--r--externals/grill/flext/source/flitem.cpp127
-rw-r--r--externals/grill/flext/source/fllib.cpp578
-rw-r--r--externals/grill/flext/source/flmap.cpp249
-rw-r--r--externals/grill/flext/source/flmap.h255
-rw-r--r--externals/grill/flext/source/flmeth.cpp132
-rw-r--r--externals/grill/flext/source/flmsg.cpp295
-rw-r--r--externals/grill/flext/source/flmspbuffer.h83
-rw-r--r--externals/grill/flext/source/flout.cpp332
-rw-r--r--externals/grill/flext/source/flprefix.h433
-rw-r--r--externals/grill/flext/source/flproxy.cpp222
-rw-r--r--externals/grill/flext/source/flqueue.cpp559
-rw-r--r--externals/grill/flext/source/flsimd.cpp2002
-rw-r--r--externals/grill/flext/source/flsndobj.cpp132
-rw-r--r--externals/grill/flext/source/flsndobj.h95
-rw-r--r--externals/grill/flext/source/flstdc.h311
-rw-r--r--externals/grill/flext/source/flstk.cpp117
-rw-r--r--externals/grill/flext/source/flstk.h103
-rw-r--r--externals/grill/flext/source/flsupport.cpp316
-rw-r--r--externals/grill/flext/source/flsupport.h1285
-rw-r--r--externals/grill/flext/source/flthr.cpp646
-rw-r--r--externals/grill/flext/source/fltimer.cpp275
-rw-r--r--externals/grill/flext/source/flutil.cpp48
-rw-r--r--externals/grill/flext/source/flxlet.cpp112
-rw-r--r--externals/grill/flext/tutorial/Makefile.am55
-rw-r--r--externals/grill/flext/tutorial/adv1/Makefile.am51
-rwxr-xr-xexternals/grill/flext/tutorial/adv1/adv1.mcpbin146697 -> 0 bytes
-rw-r--r--externals/grill/flext/tutorial/adv1/adv1.vcproj177
-rw-r--r--externals/grill/flext/tutorial/adv1/main.cpp101
-rw-r--r--externals/grill/flext/tutorial/adv1/package.txt2
-rw-r--r--externals/grill/flext/tutorial/adv2/Makefile.am51
-rwxr-xr-xexternals/grill/flext/tutorial/adv2/adv2.mcpbin148873 -> 0 bytes
-rw-r--r--externals/grill/flext/tutorial/adv2/adv2.vcproj176
-rw-r--r--externals/grill/flext/tutorial/adv2/main.cpp100
-rw-r--r--externals/grill/flext/tutorial/adv2/package.txt2
-rw-r--r--externals/grill/flext/tutorial/adv3/Makefile.am51
-rwxr-xr-xexternals/grill/flext/tutorial/adv3/adv3.mcpbin148873 -> 0 bytes
-rw-r--r--externals/grill/flext/tutorial/adv3/adv3.vcproj176
-rw-r--r--externals/grill/flext/tutorial/adv3/main.cpp153
-rw-r--r--externals/grill/flext/tutorial/adv3/package.txt2
-rw-r--r--externals/grill/flext/tutorial/attr1/Makefile.am51
-rwxr-xr-xexternals/grill/flext/tutorial/attr1/attr1.mcpbin147321 -> 0 bytes
-rw-r--r--externals/grill/flext/tutorial/attr1/attr1.vcproj176
-rw-r--r--externals/grill/flext/tutorial/attr1/main.cpp79
-rw-r--r--externals/grill/flext/tutorial/attr1/package.txt2
-rw-r--r--externals/grill/flext/tutorial/attr2/Makefile.am51
-rwxr-xr-xexternals/grill/flext/tutorial/attr2/attr2.mcpbin148873 -> 0 bytes
-rw-r--r--externals/grill/flext/tutorial/attr2/attr2.vcproj176
-rw-r--r--externals/grill/flext/tutorial/attr2/main.cpp195
-rw-r--r--externals/grill/flext/tutorial/attr2/package.txt2
-rw-r--r--externals/grill/flext/tutorial/attr3/Makefile.am51
-rwxr-xr-xexternals/grill/flext/tutorial/attr3/attr3.mcpbin148873 -> 0 bytes
-rw-r--r--externals/grill/flext/tutorial/attr3/attr3.vcproj176
-rw-r--r--externals/grill/flext/tutorial/attr3/main.cpp157
-rw-r--r--externals/grill/flext/tutorial/attr3/package.txt2
-rw-r--r--externals/grill/flext/tutorial/bind1/Makefile.am51
-rwxr-xr-xexternals/grill/flext/tutorial/bind1/bind1.mcpbin148873 -> 0 bytes
-rw-r--r--externals/grill/flext/tutorial/bind1/bind1.vcproj177
-rw-r--r--externals/grill/flext/tutorial/bind1/main.cpp134
-rw-r--r--externals/grill/flext/tutorial/bind1/package.txt2
-rw-r--r--externals/grill/flext/tutorial/buffer1/Makefile.am51
-rwxr-xr-xexternals/grill/flext/tutorial/buffer1/buffer1.mcpbin147321 -> 0 bytes
-rw-r--r--externals/grill/flext/tutorial/buffer1/buffer1.vcproj177
-rw-r--r--externals/grill/flext/tutorial/buffer1/main.cpp257
-rw-r--r--externals/grill/flext/tutorial/buffer1/package.txt2
-rw-r--r--externals/grill/flext/tutorial/build.bat32
-rw-r--r--externals/grill/flext/tutorial/build.sh27
-rw-r--r--externals/grill/flext/tutorial/gpl.txt346
-rw-r--r--externals/grill/flext/tutorial/lib1/Makefile.am51
-rwxr-xr-xexternals/grill/flext/tutorial/lib1/lib1.mcpbin148873 -> 0 bytes
-rw-r--r--externals/grill/flext/tutorial/lib1/lib1.vcproj177
-rw-r--r--externals/grill/flext/tutorial/lib1/main.cpp132
-rw-r--r--externals/grill/flext/tutorial/lib1/package.txt2
-rw-r--r--externals/grill/flext/tutorial/license.txt50
-rw-r--r--externals/grill/flext/tutorial/maxmsp/Makefile.am6
-rwxr-xr-xexternals/grill/flext/tutorial/maxmsp/ex-adv1.patbin540 -> 0 bytes
-rwxr-xr-xexternals/grill/flext/tutorial/maxmsp/ex-adv2.patbin726 -> 0 bytes
-rwxr-xr-xexternals/grill/flext/tutorial/maxmsp/ex-adv3.patbin801 -> 0 bytes
-rwxr-xr-xexternals/grill/flext/tutorial/maxmsp/ex-attr1.patbin1050 -> 0 bytes
-rwxr-xr-xexternals/grill/flext/tutorial/maxmsp/ex-attr2.patbin1389 -> 0 bytes
-rwxr-xr-xexternals/grill/flext/tutorial/maxmsp/ex-attr3.patbin1358 -> 0 bytes
-rwxr-xr-xexternals/grill/flext/tutorial/maxmsp/ex-bind1.patbin1509 -> 0 bytes
-rwxr-xr-xexternals/grill/flext/tutorial/maxmsp/ex-buffer1.patbin1364 -> 0 bytes
-rwxr-xr-xexternals/grill/flext/tutorial/maxmsp/ex-lib1.patbin1440 -> 0 bytes
-rwxr-xr-xexternals/grill/flext/tutorial/maxmsp/ex-signal1.patbin740 -> 0 bytes
-rwxr-xr-xexternals/grill/flext/tutorial/maxmsp/ex-signal2.patbin708 -> 0 bytes
-rwxr-xr-xexternals/grill/flext/tutorial/maxmsp/ex-simple1.patbin725 -> 0 bytes
-rwxr-xr-xexternals/grill/flext/tutorial/maxmsp/ex-simple2.patbin668 -> 0 bytes
-rwxr-xr-xexternals/grill/flext/tutorial/maxmsp/ex-simple3.patbin662 -> 0 bytes
-rwxr-xr-xexternals/grill/flext/tutorial/maxmsp/ex-thread1.patbin1004 -> 0 bytes
-rwxr-xr-xexternals/grill/flext/tutorial/maxmsp/ex-thread2.patbin874 -> 0 bytes
-rwxr-xr-xexternals/grill/flext/tutorial/maxmsp/ex-timer1.patbin1247 -> 0 bytes
-rw-r--r--externals/grill/flext/tutorial/pd/Makefile.am6
-rw-r--r--externals/grill/flext/tutorial/pd/ex-adv1.pd23
-rw-r--r--externals/grill/flext/tutorial/pd/ex-adv2.pd23
-rw-r--r--externals/grill/flext/tutorial/pd/ex-adv3.pd40
-rw-r--r--externals/grill/flext/tutorial/pd/ex-attr1.pd31
-rw-r--r--externals/grill/flext/tutorial/pd/ex-attr2.pd47
-rw-r--r--externals/grill/flext/tutorial/pd/ex-attr3.pd60
-rw-r--r--externals/grill/flext/tutorial/pd/ex-bind1.pd55
-rw-r--r--externals/grill/flext/tutorial/pd/ex-buffer1.pd121
-rw-r--r--externals/grill/flext/tutorial/pd/ex-lib1.pd51
-rw-r--r--externals/grill/flext/tutorial/pd/ex-signal1.pd27
-rw-r--r--externals/grill/flext/tutorial/pd/ex-signal2.pd25
-rw-r--r--externals/grill/flext/tutorial/pd/ex-simple1.pd12
-rw-r--r--externals/grill/flext/tutorial/pd/ex-simple2.pd16
-rw-r--r--externals/grill/flext/tutorial/pd/ex-simple3.pd22
-rw-r--r--externals/grill/flext/tutorial/pd/ex-sndobj1.pd34
-rw-r--r--externals/grill/flext/tutorial/pd/ex-stk1.pd15
-rw-r--r--externals/grill/flext/tutorial/pd/ex-stk2.pd32
-rw-r--r--externals/grill/flext/tutorial/pd/ex-thread1.pd43
-rw-r--r--externals/grill/flext/tutorial/pd/ex-thread2.pd47
-rw-r--r--externals/grill/flext/tutorial/pd/ex-timer1.pd62
-rw-r--r--externals/grill/flext/tutorial/readme.txt77
-rw-r--r--externals/grill/flext/tutorial/signal1/Makefile.am51
-rw-r--r--externals/grill/flext/tutorial/signal1/main.cpp129
-rw-r--r--externals/grill/flext/tutorial/signal1/package.txt2
-rw-r--r--externals/grill/flext/tutorial/signal1/signal1.mcpbin101183 -> 0 bytes
-rw-r--r--externals/grill/flext/tutorial/signal1/signal1.vcproj177
-rw-r--r--externals/grill/flext/tutorial/signal2/Makefile.am51
-rw-r--r--externals/grill/flext/tutorial/signal2/main.cpp69
-rw-r--r--externals/grill/flext/tutorial/signal2/package.txt2
-rw-r--r--externals/grill/flext/tutorial/signal2/signal2.mcpbin101183 -> 0 bytes
-rw-r--r--externals/grill/flext/tutorial/signal2/signal2.vcproj177
-rw-r--r--externals/grill/flext/tutorial/simple1/Makefile.am51
-rw-r--r--externals/grill/flext/tutorial/simple1/main.cpp73
-rw-r--r--externals/grill/flext/tutorial/simple1/package.txt2
-rwxr-xr-xexternals/grill/flext/tutorial/simple1/simple1.mcpbin147321 -> 0 bytes
-rw-r--r--externals/grill/flext/tutorial/simple1/simple1.vcproj177
-rw-r--r--externals/grill/flext/tutorial/simple2/Makefile.am51
-rw-r--r--externals/grill/flext/tutorial/simple2/main.cpp77
-rw-r--r--externals/grill/flext/tutorial/simple2/package.txt2
-rwxr-xr-xexternals/grill/flext/tutorial/simple2/simple2.mcpbin101183 -> 0 bytes
-rw-r--r--externals/grill/flext/tutorial/simple2/simple2.vcproj176
-rw-r--r--externals/grill/flext/tutorial/simple3/Makefile.am51
-rw-r--r--externals/grill/flext/tutorial/simple3/main.cpp91
-rw-r--r--externals/grill/flext/tutorial/simple3/package.txt2
-rw-r--r--externals/grill/flext/tutorial/simple3/simple3.mcpbin101183 -> 0 bytes
-rw-r--r--externals/grill/flext/tutorial/simple3/simple3.vcproj176
-rw-r--r--externals/grill/flext/tutorial/sndobj1/Makefile.am51
-rw-r--r--externals/grill/flext/tutorial/sndobj1/main.cpp101
-rw-r--r--externals/grill/flext/tutorial/sndobj1/package.txt2
-rw-r--r--externals/grill/flext/tutorial/sndobj1/sndobj1.mcpbin101183 -> 0 bytes
-rw-r--r--externals/grill/flext/tutorial/sndobj1/sndobj1.vcproj177
-rw-r--r--externals/grill/flext/tutorial/stk1/Makefile.am51
-rw-r--r--externals/grill/flext/tutorial/stk1/main.cpp89
-rw-r--r--externals/grill/flext/tutorial/stk1/package.txt2
-rw-r--r--externals/grill/flext/tutorial/stk1/stk1.vcproj177
-rw-r--r--externals/grill/flext/tutorial/stk2/Makefile.am51
-rw-r--r--externals/grill/flext/tutorial/stk2/main.cpp115
-rw-r--r--externals/grill/flext/tutorial/stk2/package.txt2
-rw-r--r--externals/grill/flext/tutorial/stk2/stk2.vcproj177
-rw-r--r--externals/grill/flext/tutorial/thread1/Makefile.am51
-rw-r--r--externals/grill/flext/tutorial/thread1/main.cpp83
-rw-r--r--externals/grill/flext/tutorial/thread1/package.txt3
-rw-r--r--externals/grill/flext/tutorial/thread1/thread1.mcpbin149552 -> 0 bytes
-rw-r--r--externals/grill/flext/tutorial/thread1/thread1.vcproj176
-rw-r--r--externals/grill/flext/tutorial/thread2/Makefile.am51
-rw-r--r--externals/grill/flext/tutorial/thread2/main.cpp134
-rw-r--r--externals/grill/flext/tutorial/thread2/package.txt3
-rwxr-xr-xexternals/grill/flext/tutorial/thread2/thread2.mcpbin148836 -> 0 bytes
-rw-r--r--externals/grill/flext/tutorial/thread2/thread2.vcproj176
-rw-r--r--externals/grill/flext/tutorial/timer1/Makefile.am51
-rw-r--r--externals/grill/flext/tutorial/timer1/main.cpp100
-rw-r--r--externals/grill/flext/tutorial/timer1/package.txt2
-rwxr-xr-xexternals/grill/flext/tutorial/timer1/timer1.mcpbin207765 -> 0 bytes
-rw-r--r--externals/grill/flext/tutorial/timer1/timer1.vcproj177
-rw-r--r--externals/grill/flext/tutorial/tutorial.sln473
-rw-r--r--externals/grill/guitest/build-pd-linux.sh11
-rw-r--r--externals/grill/guitest/config-pd-linux.txt27
-rw-r--r--externals/grill/guitest/flgui.cpp781
-rw-r--r--externals/grill/guitest/flgui.h237
-rw-r--r--externals/grill/guitest/flguiobj.cpp801
-rw-r--r--externals/grill/guitest/flguiobj.h362
-rw-r--r--externals/grill/guitest/guitest.vcproj226
-rw-r--r--externals/grill/guitest/main.cpp166
-rw-r--r--externals/grill/guitest/make-files.txt7
-rw-r--r--externals/grill/guitest/makefile.pd-linux87
-rw-r--r--externals/grill/guitest/pd/guitest1.pd7
-rw-r--r--externals/grill/namedobjs/gpl.txt346
-rw-r--r--externals/grill/namedobjs/license.txt1
-rw-r--r--externals/grill/namedobjs/main.cpp94
-rwxr-xr-xexternals/grill/namedobjs/namedobjs.cwbin144679 -> 0 bytes
-rwxr-xr-xexternals/grill/namedobjs/namedobjs.helpbin5976 -> 0 bytes
-rwxr-xr-xexternals/grill/namedobjs/namedobjs.mpw1
-rw-r--r--externals/grill/namedobjs/readme.txt1
-rw-r--r--externals/grill/pool/gpl.txt346
-rw-r--r--externals/grill/pool/license.txt50
-rw-r--r--externals/grill/pool/package.txt7
-rw-r--r--externals/grill/pool/pool-0.2.dtd5
-rw-r--r--externals/grill/pool/pool-help.pd319
-rwxr-xr-xexternals/grill/pool/pool.helpbin6478 -> 0 bytes
-rwxr-xr-xexternals/grill/pool/pool.mcpbin202236 -> 0 bytes
-rw-r--r--externals/grill/pool/pool.vcproj371
-rw-r--r--externals/grill/pool/readme.txt127
-rw-r--r--externals/grill/pool/source/data.cpp210
-rw-r--r--externals/grill/pool/source/main.cpp1395
-rw-r--r--externals/grill/pool/source/pool.cpp1216
-rw-r--r--externals/grill/pool/source/pool.h253
-rw-r--r--externals/grill/prepend/gpl.txt346
-rw-r--r--externals/grill/prepend/license.txt49
-rw-r--r--externals/grill/prepend/main.cpp134
-rw-r--r--externals/grill/prepend/makefile.bcc75
-rw-r--r--externals/grill/prepend/makefile.pd-linux69
-rw-r--r--externals/grill/prepend/prepend.dsp95
-rw-r--r--externals/grill/prepend/prepend.vcproj174
-rw-r--r--externals/grill/py/build/config-lnx.def17
-rw-r--r--externals/grill/py/build/config-mac.def14
-rw-r--r--externals/grill/py/build/config-win.def17
-rw-r--r--externals/grill/py/build/gnumake-lnx-gcc.inc21
-rw-r--r--externals/grill/py/build/gnumake-mac-gcc.inc22
-rw-r--r--externals/grill/py/build/gnumake-win-cygwin.inc22
-rw-r--r--externals/grill/py/build/nmake-win-msvc.inc23
-rw-r--r--externals/grill/py/gpl.txt284
-rw-r--r--externals/grill/py/license.txt50
-rw-r--r--externals/grill/py/maxmsp/py-objectmappings.txt19
-rw-r--r--externals/grill/py/maxmsp/thread-1.mxbbin3080 -> 0 bytes
-rw-r--r--externals/grill/py/package.txt16
-rw-r--r--externals/grill/py/pd/attr-1.pd37
-rw-r--r--externals/grill/py/pd/buffer-1.pd61
-rw-r--r--externals/grill/py/pd/buffer-2.pd37
-rw-r--r--externals/grill/py/pd/builtins-1.pd53
-rw-r--r--externals/grill/py/pd/methods-1.pd24
-rw-r--r--externals/grill/py/pd/methods-2.pd30
-rw-r--r--externals/grill/py/pd/pak.pd28
-rw-r--r--externals/grill/py/pd/script-1.pd64
-rw-r--r--externals/grill/py/pd/sendrecv-1.pd33
-rw-r--r--externals/grill/py/pd/sendrecv-2.pd12
-rw-r--r--externals/grill/py/pd/sendrecv-3.pd10
-rw-r--r--externals/grill/py/pd/sig-1.pd28
-rw-r--r--externals/grill/py/pd/sig-2.pd23
-rw-r--r--externals/grill/py/pd/simple-1.pd45
-rw-r--r--externals/grill/py/pd/simple-2.pd37
-rw-r--r--externals/grill/py/pd/simple-3.pd30
-rw-r--r--externals/grill/py/pd/tcltk.pd18
-rw-r--r--externals/grill/py/pd/thread-1.pd62
-rw-r--r--externals/grill/py/py.vcproj1347
-rw-r--r--externals/grill/py/py.xcode/project.pbxproj995
-rw-r--r--externals/grill/py/py.xcodeproj/project.pbxproj661
-rw-r--r--externals/grill/py/readme.txt222
-rw-r--r--externals/grill/py/scripts/buffer.py60
-rw-r--r--externals/grill/py/scripts/pak.py14
-rw-r--r--externals/grill/py/scripts/script.py48
-rw-r--r--externals/grill/py/scripts/sendrecv.py180
-rw-r--r--externals/grill/py/scripts/sig.py100
-rw-r--r--externals/grill/py/scripts/simple.py214
-rw-r--r--externals/grill/py/scripts/tcltk.py81
-rw-r--r--externals/grill/py/scripts/threads.py50
-rw-r--r--externals/grill/py/source/bound.cpp202
-rw-r--r--externals/grill/py/source/clmeth.cpp426
-rw-r--r--externals/grill/py/source/main.cpp15
-rw-r--r--externals/grill/py/source/main.h43
-rw-r--r--externals/grill/py/source/modmeth.cpp304
-rw-r--r--externals/grill/py/source/py.cpp419
-rw-r--r--externals/grill/py/source/pyargs.cpp231
-rw-r--r--externals/grill/py/source/pyatom.cpp63
-rw-r--r--externals/grill/py/source/pyatom.h21
-rw-r--r--externals/grill/py/source/pybase.cpp923
-rw-r--r--externals/grill/py/source/pybase.h256
-rw-r--r--externals/grill/py/source/pybuffer.cpp828
-rw-r--r--externals/grill/py/source/pybuffer.h81
-rw-r--r--externals/grill/py/source/pybundle.cpp234
-rw-r--r--externals/grill/py/source/pybundle.h62
-rw-r--r--externals/grill/py/source/pydsp.cpp192
-rw-r--r--externals/grill/py/source/pyext.cpp662
-rw-r--r--externals/grill/py/source/pyext.h158
-rw-r--r--externals/grill/py/source/pymeth.cpp430
-rw-r--r--externals/grill/py/source/pyprefix.h54
-rw-r--r--externals/grill/py/source/pysymbol.cpp266
-rw-r--r--externals/grill/py/source/pysymbol.h94
-rw-r--r--externals/grill/py/source/register.cpp153
-rw-r--r--externals/grill/vasp/changes.txt148
-rw-r--r--externals/grill/vasp/gpl.txt346
-rw-r--r--externals/grill/vasp/license.txt64
-rwxr-xr-xexternals/grill/vasp/max-ex/convolvebin5668 -> 0 bytes
-rwxr-xr-xexternals/grill/vasp/max-ex/freezebin4384 -> 0 bytes
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.abs.help56
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.add.help68
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.amaxq.help104
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.aminq.help92
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.beveldn.help92
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.bevelup.help92
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.cdiv.help12
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.cfft.help414
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.chk.help20
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.cifft.help407
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.cmul.help12
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.cnoise.help116
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.cnorm.help177
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.cosc.help139
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.cplus.help12
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.cpowi.help166
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.crsub.help12
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.cset.help11
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.csqr.help164
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.csub.help12
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.dif.help7
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.div.help52
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.equ.help145
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.exp.help96
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.fhp.help138
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.flp.help138
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.frames.help134
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.framesd.help134
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.framesq.help25
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.gate.help166
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.gather.help65
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.geq.help128
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.gtr.help128
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.help710
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.int.help93
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.join.help31
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.leq.help128
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.list.help85
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.log.help8
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.lwr.help128
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.max.help125
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.maxq.help86
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.mbeveldn.help100
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.mbevelup.help100
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.mcosc.help144
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.min.help125
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.minmax.help149
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.minq.help86
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.mirr.help88
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.mod.help62
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.mphasor.help127
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.mul.help227
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.multi.help23
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.neq.help145
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.noise.help100
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.nonzero.help162
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.offset.help32
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.offsetd.help31
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.offsetq.help17
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.opt.help104
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.osc.help123
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.part.help30
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.peaks.help176
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.phasor.help123
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.polar.help291
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.pow.help98
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.pwrap.help6
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.radd.help168
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.rect.help301
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.rfft.help137
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.rgate.help170
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.rifft.help137
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.rmax.help165
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.rmaxq.help179
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.rmin.help167
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.rminq.help149
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.ropt.help168
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.rot.help91
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.rpeaks.help174
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.rpow.help171
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.rsub.help52
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.rvalleys.help177
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.set.help326
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.shift.help92
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.sign.help94
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.spit.help42
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.split.help31
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.sqr.help91
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.sqrt.help91
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.ssqr.help219
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.ssqrt.help219
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.sub.help67
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.sync.help164
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.tilt.help89
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.update.help41
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.valleys.help174
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.vector.help175
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.vectors.help12
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.xmirr.help169
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.xrot.help91
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.xshift.help91
-rwxr-xr-xexternals/grill/vasp/max/rndup2bin416 -> 0 bytes
-rwxr-xr-xexternals/grill/vasp/max/vasp.cconjbin400 -> 0 bytes
-rwxr-xr-xexternals/grill/vasp/max/vasp.cconvbin718 -> 0 bytes
-rwxr-xr-xexternals/grill/vasp/max/vasp.convbin387 -> 0 bytes
-rwxr-xr-xexternals/grill/vasp/max/vasp.deferbin545 -> 0 bytes
-rwxr-xr-xexternals/grill/vasp/max/vasp.freezebin516 -> 0 bytes
-rwxr-xr-xexternals/grill/vasp/max/vasp.hilbertbin457 -> 0 bytes
-rwxr-xr-xexternals/grill/vasp/max/vasp.imbin132 -> 0 bytes
-rwxr-xr-xexternals/grill/vasp/max/vasp.lowerbin319 -> 0 bytes
-rwxr-xr-xexternals/grill/vasp/max/vasp.meanqbin377 -> 0 bytes
-rwxr-xr-xexternals/grill/vasp/max/vasp.nodcbin198 -> 0 bytes
-rwxr-xr-xexternals/grill/vasp/max/vasp.optbin530 -> 0 bytes
-rwxr-xr-xexternals/grill/vasp/max/vasp.partsbin518 -> 0 bytes
-rwxr-xr-xexternals/grill/vasp/max/vasp.pwrapbin203 -> 0 bytes
-rwxr-xr-xexternals/grill/vasp/max/vasp.rebin132 -> 0 bytes
-rwxr-xr-xexternals/grill/vasp/max/vasp.roptbin531 -> 0 bytes
-rwxr-xr-xexternals/grill/vasp/max/vasp.spinbin499 -> 0 bytes
-rwxr-xr-xexternals/grill/vasp/max/vasp.upperbin370 -> 0 bytes
-rw-r--r--externals/grill/vasp/mixfft.txt85
-rw-r--r--externals/grill/vasp/package.txt20
-rw-r--r--externals/grill/vasp/pd-ex/convolve.pd194
-rw-r--r--externals/grill/vasp/pd-ex/enhance.pd478
-rw-r--r--externals/grill/vasp/pd-ex/freeze.pd414
-rw-r--r--externals/grill/vasp/pd-ex/frqmax.pd336
-rw-r--r--externals/grill/vasp/pd-ex/loudness.pd207
-rw-r--r--externals/grill/vasp/pd-ex/wedit.pd1727
-rw-r--r--externals/grill/vasp/pd-help/vasp_abs.pd48
-rw-r--r--externals/grill/vasp/pd-help/vasp_add.pd54
-rw-r--r--externals/grill/vasp/pd-help/vasp_ageq.pd50
-rw-r--r--externals/grill/vasp/pd-help/vasp_agtr.pd52
-rw-r--r--externals/grill/vasp/pd-help/vasp_aleq.pd52
-rw-r--r--externals/grill/vasp/pd-help/vasp_alwr.pd52
-rw-r--r--externals/grill/vasp/pd-help/vasp_cadd.pd21
-rw-r--r--externals/grill/vasp/pd-help/vasp_cconj.pd33
-rw-r--r--externals/grill/vasp/pd-help/vasp_ccopy.pd83
-rw-r--r--externals/grill/vasp/pd-help/vasp_cdiv.pd16
-rw-r--r--externals/grill/vasp/pd-help/vasp_cdivr.pd18
-rw-r--r--externals/grill/vasp/pd-help/vasp_cfft.pd98
-rw-r--r--externals/grill/vasp/pd-help/vasp_channel.pd10
-rw-r--r--externals/grill/vasp/pd-help/vasp_check.pd26
-rw-r--r--externals/grill/vasp/pd-help/vasp_cifft.pd89
-rw-r--r--externals/grill/vasp/pd-help/vasp_cmul.pd21
-rw-r--r--externals/grill/vasp/pd-help/vasp_cnoise.pd53
-rw-r--r--externals/grill/vasp/pd-help/vasp_cnorm.pd94
-rw-r--r--externals/grill/vasp/pd-help/vasp_copy.pd70
-rw-r--r--externals/grill/vasp/pd-help/vasp_cosc.pd63
-rw-r--r--externals/grill/vasp/pd-help/vasp_cpowi.pd84
-rw-r--r--externals/grill/vasp/pd-help/vasp_crsub.pd22
-rw-r--r--externals/grill/vasp/pd-help/vasp_cset.pd20
-rw-r--r--externals/grill/vasp/pd-help/vasp_csqr.pd79
-rw-r--r--externals/grill/vasp/pd-help/vasp_csub.pd21
-rw-r--r--externals/grill/vasp/pd-help/vasp_csubr.pd21
-rw-r--r--externals/grill/vasp/pd-help/vasp_dframes.pd65
-rw-r--r--externals/grill/vasp/pd-help/vasp_dif.pd49
-rw-r--r--externals/grill/vasp/pd-help/vasp_div.pd42
-rw-r--r--externals/grill/vasp/pd-help/vasp_divr.pd37
-rw-r--r--externals/grill/vasp/pd-help/vasp_doffset.pd28
-rw-r--r--externals/grill/vasp/pd-help/vasp_dsize.pd39
-rw-r--r--externals/grill/vasp/pd-help/vasp_equ.pd53
-rw-r--r--externals/grill/vasp/pd-help/vasp_exp.pd42
-rw-r--r--externals/grill/vasp/pd-help/vasp_fhp.pd88
-rw-r--r--externals/grill/vasp/pd-help/vasp_fix.pd64
-rw-r--r--externals/grill/vasp/pd-help/vasp_flp.pd85
-rw-r--r--externals/grill/vasp/pd-help/vasp_frames.pd60
-rw-r--r--externals/grill/vasp/pd-help/vasp_gate.pd74
-rw-r--r--externals/grill/vasp/pd-help/vasp_gather.pd64
-rw-r--r--externals/grill/vasp/pd-help/vasp_geq.pd50
-rw-r--r--externals/grill/vasp/pd-help/vasp_gtr.pd52
-rw-r--r--externals/grill/vasp/pd-help/vasp_imm.pd77
-rw-r--r--externals/grill/vasp/pd-help/vasp_int.pd40
-rw-r--r--externals/grill/vasp/pd-help/vasp_iwindow.pd61
-rw-r--r--externals/grill/vasp/pd-help/vasp_join.pd26
-rw-r--r--externals/grill/vasp/pd-help/vasp_leq.pd52
-rw-r--r--externals/grill/vasp/pd-help/vasp_list.pd28
-rw-r--r--externals/grill/vasp/pd-help/vasp_log.pd50
-rw-r--r--externals/grill/vasp/pd-help/vasp_lwr.pd52
-rw-r--r--externals/grill/vasp/pd-help/vasp_max.pd51
-rw-r--r--externals/grill/vasp/pd-help/vasp_mcosc.pd68
-rw-r--r--externals/grill/vasp/pd-help/vasp_mframes.pd63
-rw-r--r--externals/grill/vasp/pd-help/vasp_min.pd51
-rw-r--r--externals/grill/vasp/pd-help/vasp_minmax.pd59
-rw-r--r--externals/grill/vasp/pd-help/vasp_mirr.pd45
-rw-r--r--externals/grill/vasp/pd-help/vasp_miwindow.pd64
-rw-r--r--externals/grill/vasp/pd-help/vasp_mod.pd48
-rw-r--r--externals/grill/vasp/pd-help/vasp_mosc.pd80
-rw-r--r--externals/grill/vasp/pd-help/vasp_mphasor.pd78
-rw-r--r--externals/grill/vasp/pd-help/vasp_msize.pd38
-rw-r--r--externals/grill/vasp/pd-help/vasp_mul.pd135
-rw-r--r--externals/grill/vasp/pd-help/vasp_multi.pd20
-rw-r--r--externals/grill/vasp/pd-help/vasp_mwindow.pd64
-rw-r--r--externals/grill/vasp/pd-help/vasp_mxwindow.pd64
-rw-r--r--externals/grill/vasp/pd-help/vasp_neq.pd52
-rw-r--r--externals/grill/vasp/pd-help/vasp_noise.pd43
-rw-r--r--externals/grill/vasp/pd-help/vasp_nonzero.pd160
-rw-r--r--externals/grill/vasp/pd-help/vasp_offset.pd30
-rw-r--r--externals/grill/vasp/pd-help/vasp_offsetd.pd28
-rw-r--r--externals/grill/vasp/pd-help/vasp_offsetq.pd25
-rw-r--r--externals/grill/vasp/pd-help/vasp_opt.pd71
-rw-r--r--externals/grill/vasp/pd-help/vasp_osc.pd63
-rw-r--r--externals/grill/vasp/pd-help/vasp_part.pd34
-rw-r--r--externals/grill/vasp/pd-help/vasp_peaks.pd89
-rw-r--r--externals/grill/vasp/pd-help/vasp_phasor.pd67
-rw-r--r--externals/grill/vasp/pd-help/vasp_polar.pd90
-rw-r--r--externals/grill/vasp/pd-help/vasp_pow.pd44
-rw-r--r--externals/grill/vasp/pd-help/vasp_qamax.pd75
-rw-r--r--externals/grill/vasp/pd-help/vasp_qamin.pd53
-rw-r--r--externals/grill/vasp/pd-help/vasp_qchannel.pd10
-rw-r--r--externals/grill/vasp/pd-help/vasp_qframes.pd27
-rw-r--r--externals/grill/vasp/pd-help/vasp_qmax.pd44
-rw-r--r--externals/grill/vasp/pd-help/vasp_qmin.pd44
-rw-r--r--externals/grill/vasp/pd-help/vasp_qoffset.pd19
-rw-r--r--externals/grill/vasp/pd-help/vasp_qrmax.pd99
-rw-r--r--externals/grill/vasp/pd-help/vasp_qrmin.pd59
-rw-r--r--externals/grill/vasp/pd-help/vasp_qsize.pd31
-rw-r--r--externals/grill/vasp/pd-help/vasp_qsum.pd50
-rw-r--r--externals/grill/vasp/pd-help/vasp_qvector.pd13
-rw-r--r--externals/grill/vasp/pd-help/vasp_qvectors.pd17
-rw-r--r--externals/grill/vasp/pd-help/vasp_radd.pd84
-rw-r--r--externals/grill/vasp/pd-help/vasp_radio.pd28
-rw-r--r--externals/grill/vasp/pd-help/vasp_rect.pd87
-rw-r--r--externals/grill/vasp/pd-help/vasp_rfft.pd74
-rw-r--r--externals/grill/vasp/pd-help/vasp_rframes.pd63
-rw-r--r--externals/grill/vasp/pd-help/vasp_rgate.pd86
-rw-r--r--externals/grill/vasp/pd-help/vasp_rifft.pd75
-rw-r--r--externals/grill/vasp/pd-help/vasp_rmax.pd81
-rw-r--r--externals/grill/vasp/pd-help/vasp_rmin.pd84
-rw-r--r--externals/grill/vasp/pd-help/vasp_ropt.pd86
-rw-r--r--externals/grill/vasp/pd-help/vasp_rot.pd48
-rw-r--r--externals/grill/vasp/pd-help/vasp_rpeaks.pd94
-rw-r--r--externals/grill/vasp/pd-help/vasp_rpow.pd83
-rw-r--r--externals/grill/vasp/pd-help/vasp_rsize.pd37
-rw-r--r--externals/grill/vasp/pd-help/vasp_rvalleys.pd91
-rw-r--r--externals/grill/vasp/pd-help/vasp_set.pd93
-rw-r--r--externals/grill/vasp/pd-help/vasp_sframes.pd191
-rw-r--r--externals/grill/vasp/pd-help/vasp_shift.pd57
-rw-r--r--externals/grill/vasp/pd-help/vasp_sign.pd42
-rw-r--r--externals/grill/vasp/pd-help/vasp_size.pd43
-rw-r--r--externals/grill/vasp/pd-help/vasp_soffset.pd211
-rw-r--r--externals/grill/vasp/pd-help/vasp_spit.pd46
-rw-r--r--externals/grill/vasp/pd-help/vasp_split.pd27
-rw-r--r--externals/grill/vasp/pd-help/vasp_sqr.pd38
-rw-r--r--externals/grill/vasp/pd-help/vasp_sqrt.pd38
-rw-r--r--externals/grill/vasp/pd-help/vasp_ssqr.pd96
-rw-r--r--externals/grill/vasp/pd-help/vasp_ssqrt.pd96
-rw-r--r--externals/grill/vasp/pd-help/vasp_sub.pd54
-rw-r--r--externals/grill/vasp/pd-help/vasp_subr.pd48
-rw-r--r--externals/grill/vasp/pd-help/vasp_sync.pd81
-rw-r--r--externals/grill/vasp/pd-help/vasp_tilt.pd100
-rw-r--r--externals/grill/vasp/pd-help/vasp_update.pd36
-rw-r--r--externals/grill/vasp/pd-help/vasp_v.pd50
-rw-r--r--externals/grill/vasp/pd-help/vasp_valleys.pd86
-rw-r--r--externals/grill/vasp/pd-help/vasp_vector.pd31
-rw-r--r--externals/grill/vasp/pd-help/vasp_vectors.pd13
-rw-r--r--externals/grill/vasp/pd-help/vasp_window.pd62
-rw-r--r--externals/grill/vasp/pd-help/vasp_xmirr.pd86
-rw-r--r--externals/grill/vasp/pd-help/vasp_xrot.pd48
-rw-r--r--externals/grill/vasp/pd-help/vasp_xshift.pd57
-rw-r--r--externals/grill/vasp/pd-help/vasp_xtilt.pd107
-rw-r--r--externals/grill/vasp/pd-help/vasp_xwindow.pd61
-rw-r--r--externals/grill/vasp/pd-test/granular1.pd341
-rw-r--r--externals/grill/vasp/pd-test/granular2.pd366
-rw-r--r--externals/grill/vasp/pd/VASP-HELP.pd1157
-rw-r--r--externals/grill/vasp/pd/bass.aifbin337210 -> 0 bytes
-rw-r--r--externals/grill/vasp/pd/beat.aifbin176468 -> 0 bytes
-rw-r--r--externals/grill/vasp/pd/change2.pd25
-rw-r--r--externals/grill/vasp/pd/filelist.pd24
-rw-r--r--externals/grill/vasp/pd/filelisthandler.pd102
-rw-r--r--externals/grill/vasp/pd/filter_example.pd190
-rw-r--r--externals/grill/vasp/pd/filter_examplei.pd191
-rw-r--r--externals/grill/vasp/pd/fly.aifbin353412 -> 0 bytes
-rw-r--r--externals/grill/vasp/pd/phase-random_example.pd86
-rw-r--r--externals/grill/vasp/pd/plastic.aifbin352518 -> 0 bytes
-rw-r--r--externals/grill/vasp/pd/ringmod_example.pd63
-rw-r--r--externals/grill/vasp/pd/rndup2.pd48
-rw-r--r--externals/grill/vasp/pd/runden.pd27
-rw-r--r--externals/grill/vasp/pd/synchrodisplay.pd13
-rw-r--r--externals/grill/vasp/pd/vasp.cconj.pd18
-rw-r--r--externals/grill/vasp/pd/vasp.cconv.pd53
-rw-r--r--externals/grill/vasp/pd/vasp.clr0.pd12
-rw-r--r--externals/grill/vasp/pd/vasp.conv.pd37
-rw-r--r--externals/grill/vasp/pd/vasp.db2pow.pd18
-rw-r--r--externals/grill/vasp/pd/vasp.defer.pd28
-rw-r--r--externals/grill/vasp/pd/vasp.even.pd12
-rw-r--r--externals/grill/vasp/pd/vasp.freeze.pd22
-rw-r--r--externals/grill/vasp/pd/vasp.hilbert.pd28
-rw-r--r--externals/grill/vasp/pd/vasp.im.pd6
-rw-r--r--externals/grill/vasp/pd/vasp.lower.pd19
-rw-r--r--externals/grill/vasp/pd/vasp.odd.pd10
-rw-r--r--externals/grill/vasp/pd/vasp.opt.pd35
-rw-r--r--externals/grill/vasp/pd/vasp.ov.pd10
-rw-r--r--externals/grill/vasp/pd/vasp.parts.pd27
-rw-r--r--externals/grill/vasp/pd/vasp.pwrap.pd10
-rw-r--r--externals/grill/vasp/pd/vasp.qmean.pd20
-rw-r--r--externals/grill/vasp/pd/vasp.re.pd6
-rw-r--r--externals/grill/vasp/pd/vasp.rms.pd16
-rw-r--r--externals/grill/vasp/pd/vasp.ropt.pd30
-rw-r--r--externals/grill/vasp/pd/vasp.spin.pd22
-rw-r--r--externals/grill/vasp/pd/vasp.upper.pd22
-rw-r--r--externals/grill/vasp/pd/vaspset_examples.pd109
-rw-r--r--externals/grill/vasp/pd/wavedisplay-select.pd617
-rw-r--r--externals/grill/vasp/pd/wavedisplay-simple.pd135
-rw-r--r--externals/grill/vasp/pd/xtilt_example.pd88
-rw-r--r--externals/grill/vasp/readme.txt110
-rw-r--r--externals/grill/vasp/source/arg.cpp277
-rw-r--r--externals/grill/vasp/source/arg.h111
-rw-r--r--externals/grill/vasp/source/buflib.cpp343
-rw-r--r--externals/grill/vasp/source/buflib.h37
-rw-r--r--externals/grill/vasp/source/classes.cpp416
-rw-r--r--externals/grill/vasp/source/classes.h320
-rw-r--r--externals/grill/vasp/source/env.cpp153
-rw-r--r--externals/grill/vasp/source/env.h76
-rw-r--r--externals/grill/vasp/source/main.cpp216
-rw-r--r--externals/grill/vasp/source/main.h94
-rw-r--r--externals/grill/vasp/source/mixfft.cpp588
-rw-r--r--externals/grill/vasp/source/obj_chns.cpp160
-rw-r--r--externals/grill/vasp/source/obj_frames.cpp241
-rw-r--r--externals/grill/vasp/source/obj_imm.cpp123
-rw-r--r--externals/grill/vasp/source/obj_offs.cpp179
-rw-r--r--externals/grill/vasp/source/obj_part.cpp115
-rw-r--r--externals/grill/vasp/source/obj_peaks.cpp119
-rw-r--r--externals/grill/vasp/source/obj_q.cpp124
-rw-r--r--externals/grill/vasp/source/obj_radio.cpp59
-rw-r--r--externals/grill/vasp/source/obj_size.cpp265
-rw-r--r--externals/grill/vasp/source/obj_split.cpp290
-rw-r--r--externals/grill/vasp/source/obj_sync.cpp130
-rw-r--r--externals/grill/vasp/source/obj_vasp.cpp205
-rw-r--r--externals/grill/vasp/source/obj_vecs.cpp111
-rw-r--r--externals/grill/vasp/source/opbase.cpp85
-rw-r--r--externals/grill/vasp/source/opbase.h47
-rw-r--r--externals/grill/vasp/source/opdefs.h495
-rw-r--r--externals/grill/vasp/source/opfuns.h529
-rw-r--r--externals/grill/vasp/source/oploop.h95
-rw-r--r--externals/grill/vasp/source/opparam.cpp255
-rw-r--r--externals/grill/vasp/source/opparam.h128
-rw-r--r--externals/grill/vasp/source/oppermute.h121
-rw-r--r--externals/grill/vasp/source/ops.h27
-rw-r--r--externals/grill/vasp/source/ops_arith.cpp79
-rw-r--r--externals/grill/vasp/source/ops_arith.h54
-rw-r--r--externals/grill/vasp/source/ops_assign.cpp95
-rw-r--r--externals/grill/vasp/source/ops_assign.h33
-rw-r--r--externals/grill/vasp/source/ops_carith.cpp82
-rw-r--r--externals/grill/vasp/source/ops_carith.h48
-rw-r--r--externals/grill/vasp/source/ops_cmp.cpp49
-rw-r--r--externals/grill/vasp/source/ops_cmp.h83
-rw-r--r--externals/grill/vasp/source/ops_cplx.cpp56
-rw-r--r--externals/grill/vasp/source/ops_cplx.h40
-rw-r--r--externals/grill/vasp/source/ops_dft.cpp652
-rw-r--r--externals/grill/vasp/source/ops_dft.h25
-rw-r--r--externals/grill/vasp/source/ops_feature.cpp226
-rw-r--r--externals/grill/vasp/source/ops_feature.h29
-rw-r--r--externals/grill/vasp/source/ops_flt.cpp205
-rw-r--r--externals/grill/vasp/source/ops_flt.h41
-rw-r--r--externals/grill/vasp/source/ops_gate.cpp63
-rw-r--r--externals/grill/vasp/source/ops_gen.cpp266
-rw-r--r--externals/grill/vasp/source/ops_gen.h40
-rw-r--r--externals/grill/vasp/source/ops_qminmax.cpp267
-rw-r--r--externals/grill/vasp/source/ops_rearr.cpp248
-rw-r--r--externals/grill/vasp/source/ops_rearr.h34
-rw-r--r--externals/grill/vasp/source/ops_resmp.cpp275
-rw-r--r--externals/grill/vasp/source/ops_resmp.h28
-rw-r--r--externals/grill/vasp/source/ops_search.cpp213
-rw-r--r--externals/grill/vasp/source/ops_search.h29
-rw-r--r--externals/grill/vasp/source/ops_trnsc.cpp52
-rw-r--r--externals/grill/vasp/source/ops_trnsc.h43
-rw-r--r--externals/grill/vasp/source/ops_wnd.cpp192
-rw-r--r--externals/grill/vasp/source/ops_wnd.h41
-rw-r--r--externals/grill/vasp/source/opvecs.cpp631
-rw-r--r--externals/grill/vasp/source/rdx2fft.cpp82
-rw-r--r--externals/grill/vasp/source/rvfft.cpp357
-rw-r--r--externals/grill/vasp/source/util.cpp24
-rw-r--r--externals/grill/vasp/source/util.h58
-rw-r--r--externals/grill/vasp/source/vasp.cpp384
-rw-r--r--externals/grill/vasp/source/vasp.h161
-rwxr-xr-xexternals/grill/vasp/source/vasp.rsrc13
-rw-r--r--externals/grill/vasp/source/vbuffer.cpp51
-rw-r--r--externals/grill/vasp/source/vbuffer.h128
-rw-r--r--externals/grill/vasp/source/vecblk.cpp60
-rw-r--r--externals/grill/vasp/source/vecblk.h106
-rw-r--r--externals/grill/vasp/todo.txt70
-rw-r--r--externals/grill/vasp/todo/allgemein.txt42
-rw-r--r--externals/grill/vasp/todo/marius.txt5
-rw-r--r--externals/grill/vasp/todo/neue-objekte.txt3
-rw-r--r--externals/grill/vasp/todo/patcher-boys.txt3
-rw-r--r--externals/grill/vasp/todo/thomas.txt5
-rw-r--r--externals/grill/vasp/todo/vasp-objects.csv164
-rw-r--r--externals/grill/vasp/vasp.doxy188
-rw-r--r--externals/grill/vasp/vasp.mcpbin360200 -> 0 bytes
-rw-r--r--externals/grill/vasp/vasp.vcproj2785
-rw-r--r--externals/grill/vasp/vasp.xcodeproj/project.pbxproj507
-rw-r--r--externals/grill/vst/build/config-mac.def6
-rw-r--r--externals/grill/vst/build/config-win.def3
-rw-r--r--externals/grill/vst/build/gnumake-mac-gcc.inc3
-rw-r--r--externals/grill/vst/build/nmake-win-msvc.inc2
-rw-r--r--externals/grill/vst/gpl.txt346
-rw-r--r--externals/grill/vst/license.txt74
-rw-r--r--externals/grill/vst/package.txt10
-rw-r--r--externals/grill/vst/pd/vst~-help.pd449
-rw-r--r--externals/grill/vst/readme.txt78
-rw-r--r--externals/grill/vst/src/editor.cpp27
-rw-r--r--externals/grill/vst/src/editor.h26
-rw-r--r--externals/grill/vst/src/editormac.hpp58
-rw-r--r--externals/grill/vst/src/editorwin.hpp361
-rw-r--r--externals/grill/vst/src/main.cpp980
-rw-r--r--externals/grill/vst/src/main.h28
-rw-r--r--externals/grill/vst/src/vst.rc135
-rw-r--r--externals/grill/vst/src/vstedit.cpp82
-rw-r--r--externals/grill/vst/src/vsthost.cpp461
-rw-r--r--externals/grill/vst/src/vsthost.h357
-rw-r--r--externals/grill/vst/src/vstmaster.cpp282
-rw-r--r--externals/grill/vst/src/vstmidi.cpp52
-rw-r--r--externals/grill/vst/src/vstparam.cpp106
-rw-r--r--externals/grill/vst/vst.vcproj348
-rw-r--r--externals/grill/vst/vst.xcode/project.pbxproj422
-rw-r--r--externals/grill/xsample/.DS_Storebin6148 -> 0 bytes
-rw-r--r--externals/grill/xsample/gpl.txt346
-rw-r--r--externals/grill/xsample/license.txt51
-rw-r--r--externals/grill/xsample/maxmsp/xsample-objectmappings.txt7
-rwxr-xr-xexternals/grill/xsample/maxmsp/xsample.helpbin19194 -> 0 bytes
-rw-r--r--externals/grill/xsample/package.txt23
-rw-r--r--externals/grill/xsample/pd-ex/xplaydemo.pd79
-rw-r--r--externals/grill/xsample/pd-ex/xsampledemo.pd68
-rw-r--r--externals/grill/xsample/pd/xgroove~-help.pd250
-rw-r--r--externals/grill/xsample/pd/xplay~-help.pd123
-rw-r--r--externals/grill/xsample/pd/xrecord~-help.pd168
-rw-r--r--externals/grill/xsample/readme.txt172
-rw-r--r--externals/grill/xsample/source/groove.cpp810
-rw-r--r--externals/grill/xsample/source/inter.cpp82
-rw-r--r--externals/grill/xsample/source/inter.h420
-rw-r--r--externals/grill/xsample/source/main.cpp220
-rw-r--r--externals/grill/xsample/source/main.h464
-rw-r--r--externals/grill/xsample/source/play.cpp151
-rw-r--r--externals/grill/xsample/source/prefix.h15
-rw-r--r--externals/grill/xsample/source/record.cpp497
-rw-r--r--externals/grill/xsample/source/xsample-Info.plist22
-rwxr-xr-xexternals/grill/xsample/source/xsample.rsrc29
-rwxr-xr-xexternals/grill/xsample/xsample.mcpbin456081 -> 0 bytes
-rw-r--r--externals/grill/xsample/xsample.vcproj683
-rw-r--r--externals/grill/xsample/xsample.xcode/project.pbxproj625
-rw-r--r--externals/grill/xsample/xsample.xcodeproj/project.pbxproj529
960 files changed, 0 insertions, 125315 deletions
diff --git a/externals/grill/deljoin/deljoin-help.pd b/externals/grill/deljoin/deljoin-help.pd
deleted file mode 100644
index bf49460e..00000000
--- a/externals/grill/deljoin/deljoin-help.pd
+++ /dev/null
@@ -1,20 +0,0 @@
-#N canvas 300 90 462 290 12;
-#X msg 247 89 symbol -;
-#X msg 232 62 list;
-#X msg 259 115 list +;
-#X obj 105 229 print;
-#X symbolatom 266 143 10 0 0 0 - - -;
-#X msg 44 66 a b c d e f;
-#X msg 217 34 0;
-#X obj 105 203 deljoin 0;
-#X text 254 21 no delimiter;
-#X text 272 62 space;
-#X msg 208 11 bang;
-#X connect 0 0 7 1;
-#X connect 1 0 7 1;
-#X connect 2 0 7 1;
-#X connect 4 0 7 1;
-#X connect 5 0 7 0;
-#X connect 6 0 7 1;
-#X connect 7 0 3 0;
-#X connect 10 0 7 1;
diff --git a/externals/grill/deljoin/deljoin.cw b/externals/grill/deljoin/deljoin.cw
deleted file mode 100755
index d5aaf6f1..00000000
--- a/externals/grill/deljoin/deljoin.cw
+++ /dev/null
Binary files differ
diff --git a/externals/grill/deljoin/deljoin.help b/externals/grill/deljoin/deljoin.help
deleted file mode 100755
index f1421554..00000000
--- a/externals/grill/deljoin/deljoin.help
+++ /dev/null
Binary files differ
diff --git a/externals/grill/deljoin/deljoin.vcproj b/externals/grill/deljoin/deljoin.vcproj
deleted file mode 100644
index 68204c3a..00000000
--- a/externals/grill/deljoin/deljoin.vcproj
+++ /dev/null
@@ -1,176 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="deljoin"
- SccProjectName="deljoin"
- SccAuxPath=""
- SccLocalPath="."
- SccProvider="MSSCCI:Jalindi Igloo">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory=".\pd-msvc/d"
- IntermediateDirectory=".\pd-msvc/d"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src,f:\prog\max\flext\source"
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;FLEXT_SYS=2"
- BasicRuntimeChecks="3"
- RuntimeLibrary="5"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile=".\pd-msvc/d/deljoin.pch"
- AssemblerListingLocation=".\pd-msvc/d/"
- ObjectFile=".\pd-msvc/d/"
- ProgramDataBaseFileName=".\pd-msvc/d/"
- BrowseInformation="1"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="4"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib"
- OutputFile=".\pd-msvc/d/deljoin.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="c:\programme\audio\pd\bin,f:\prog\max\flext\pd-msvc"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile=".\pd-msvc/d/deljoin.pdb"
- ImportLibrary=".\pd-msvc/d/deljoin.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="_DEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\pd-msvc/d/deljoin.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory=".\pd-msvc/r"
- IntermediateDirectory=".\pd-msvc/r"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src,f:\prog\max\flext\source"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;FLEXT_SYS=2"
- StringPooling="TRUE"
- RuntimeLibrary="4"
- EnableFunctionLevelLinking="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile=".\pd-msvc/r/deljoin.pch"
- AssemblerListingLocation=".\pd-msvc/r/"
- ObjectFile=".\pd-msvc/r/"
- ProgramDataBaseFileName=".\pd-msvc/r/"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib flext-pdwin.lib"
- OutputFile=".\pd-msvc/r/deljoin.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="c:\programme\audio\pd\bin,f:\prog\max\flext\pd-msvc"
- ProgramDatabaseFile=".\pd-msvc/r/deljoin.pdb"
- ImportLibrary=".\pd-msvc/r/deljoin.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\pd-msvc/r/deljoin.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath="main.cpp">
- <FileConfiguration
- Name="Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/externals/grill/deljoin/gpl.txt b/externals/grill/deljoin/gpl.txt
deleted file mode 100644
index 5ea29a7d..00000000
--- a/externals/grill/deljoin/gpl.txt
+++ /dev/null
@@ -1,346 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) 19yy <name of author>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) 19yy name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Library General
-Public License instead of this License.
-
diff --git a/externals/grill/deljoin/license.txt b/externals/grill/deljoin/license.txt
deleted file mode 100644
index b421a0a8..00000000
--- a/externals/grill/deljoin/license.txt
+++ /dev/null
@@ -1,50 +0,0 @@
-deljoin - join a list with delimiter
-Copyright (C) 2002-2003 Thomas Grill
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-In the official deljoin distribution, the GNU General Public License is
-in the file gpl.txt
-
----------------------------------------------------------
-
- OTHER COPYRIGHT NOTICES
-
----------------------------------------------------------
-This package uses the flext C++ layer - See its license text below:
-
-
---- flext ----------------------------------------------
-flext - C++ layer for Max/MSP and pd (pure data) externals
-Copyright (C) 2001-2003 Thomas Grill
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-In the official flext distribution, the GNU General Public License is
-in the file gpl.txt
-
-
diff --git a/externals/grill/deljoin/main.cpp b/externals/grill/deljoin/main.cpp
deleted file mode 100644
index 06d41d8b..00000000
--- a/externals/grill/deljoin/main.cpp
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
-
-deljoin - join a list with delimiter
-
-Copyright (c) 2002-2005 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-#define FLEXT_ATTRIBUTES 1
-
-#include <flext.h>
-
-#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 500)
-#error You need at least flext version 0.5.0
-#endif
-
-#include <string.h>
-#include <stdlib.h>
-#include <stdio.h>
-
-
-#define VERSION "0.1.4"
-
-#ifdef __MWERKS__
-#define STD std
-#else
-#define STD
-#endif
-
-
-class deljoin:
- public flext_base
-{
- FLEXT_HEADER_S(deljoin,flext_base,Setup)
-
-public:
- deljoin(int argc,const t_atom *argv);
-
-protected:
- void m_list(const t_symbol *s,int argc,const t_atom *argv);
- void m_del(const t_symbol *s,int argc,const t_atom *argv);
-
- const t_symbol *delim;
-
-private:
- static void Setup(t_classid c);
-
- static const t_symbol *sym__space;
-
- FLEXT_CALLBACK_A(m_list)
- FLEXT_CALLBACK_A(m_del)
- FLEXT_ATTRVAR_S(delim)
-};
-
-FLEXT_NEW_V("deljoin",deljoin)
-
-
-const t_symbol *deljoin::sym__space = NULL;
-
-void deljoin::Setup(t_classid c)
-{
- sym__space = MakeSymbol(" ");
-
- FLEXT_CADDMETHOD(c,0,m_list);
- FLEXT_CADDMETHOD(c,1,m_del);
- FLEXT_CADDATTR_VAR1(c,"del",delim);
-}
-
-deljoin::deljoin(int argc,const t_atom *argv):
- delim(sym__)
-{
- AddInAnything("Anything in - triggers output");
- AddInAnything("Set the Delimiter");
- AddOutSymbol("A symbol representing the joined list");
-
- m_del(sym_list,argc,argv);
-}
-
-void deljoin::m_del(const t_symbol *s,int argc,const t_atom *argv)
-{
- delim = NULL;
- if(s == sym_symbol) {
- FLEXT_ASSERT(argc == 1 && IsSymbol(argv[0]));
- delim = GetSymbol(argv[0]);
- }
- else if(s == sym_list) {
- if(argc == 0)
- delim = sym__space;
- else if(argc >= 1) {
- if(IsSymbol(argv[0]))
- delim = GetSymbol(argv[0]);
- else if(IsFloat(argv[0]) || IsInt(argv[0]))
- delim = sym__;
- }
- }
- else if(s == sym_bang || s == sym_float || s == sym_int)
- delim = sym__;
-
- if(!delim) {
- post("%s - Argument must be a symbol, list or int/float/bang",thisName());
- delim = sym__;
- }
-}
-
-/** \brief convert incoming list to a concatenated string
-
- Handles symbols, integers and floats
-*/
-void deljoin::m_list(const t_symbol *s,int argc,const t_atom *argv)
-{
- FLEXT_ASSERT(delim);
-
- char tmp[1024],*t = tmp;
- const char *sdel = GetString(delim);
- int ldel = strlen(sdel);
-
- if(s && s != sym_list && s != sym_float && s != sym_int) {
- strcpy(t,GetString(s));
- t += strlen(t);
- }
-
- for(int i = 0; i < argc; ++i) {
- if(t != tmp) {
- strcpy(t,sdel);
- t += ldel;
- }
-
- const t_atom &a = argv[i];
- if(IsSymbol(a))
- strcpy(t,GetString(a));
- else if(CanbeFloat(a)) {
- const float f = GetAFloat(a);
- const int fi = (int)f;
- if(f == fi)
- STD::sprintf(t,"%i",fi,10);
- else
- STD::sprintf(t,"%f",f,10);
- }
-// else do nothing
-
- t += strlen(t);
- }
-
- ToOutString(0,tmp);
-}
diff --git a/externals/grill/deljoin/package.txt b/externals/grill/deljoin/package.txt
deleted file mode 100644
index afe0207e..00000000
--- a/externals/grill/deljoin/package.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-NAME=deljoin
-SRCS=main.cpp
diff --git a/externals/grill/delsplit/delsplit-help.pd b/externals/grill/delsplit/delsplit-help.pd
deleted file mode 100644
index 2f641921..00000000
--- a/externals/grill/delsplit/delsplit-help.pd
+++ /dev/null
@@ -1,22 +0,0 @@
-#N canvas 300 90 462 290 12;
-#X msg 264 133 symbol -;
-#X msg 232 57 list;
-#X msg 242 84 list +;
-#X obj 105 229 print;
-#X obj 39 78 tosymbol;
-#X msg 29 22 ask+asd-ssds;
-#X symbolatom 251 111 10 0 0 0 - - -;
-#X obj 105 203 delsplit;
-#X text 273 54 space;
-#X msg 31 152 a-b c+d e-f+g;
-#X msg 58 47 a b c+d e-f+g;
-#X text 29 130 any messages will work;
-#X connect 0 0 7 1;
-#X connect 1 0 7 1;
-#X connect 2 0 7 1;
-#X connect 4 0 7 0;
-#X connect 5 0 4 0;
-#X connect 6 0 7 1;
-#X connect 7 0 3 0;
-#X connect 9 0 7 0;
-#X connect 10 0 4 0;
diff --git a/externals/grill/delsplit/delsplit.help b/externals/grill/delsplit/delsplit.help
deleted file mode 100755
index 8e37aa67..00000000
--- a/externals/grill/delsplit/delsplit.help
+++ /dev/null
Binary files differ
diff --git a/externals/grill/delsplit/delsplit.mcp b/externals/grill/delsplit/delsplit.mcp
deleted file mode 100755
index 04bb39d4..00000000
--- a/externals/grill/delsplit/delsplit.mcp
+++ /dev/null
Binary files differ
diff --git a/externals/grill/delsplit/delsplit.vcproj b/externals/grill/delsplit/delsplit.vcproj
deleted file mode 100644
index c80ec52e..00000000
--- a/externals/grill/delsplit/delsplit.vcproj
+++ /dev/null
@@ -1,176 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="delsplit"
- SccProjectName="delsplit"
- SccAuxPath=""
- SccLocalPath="."
- SccProvider="MSSCCI:Jalindi Igloo">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Release|Win32"
- OutputDirectory=".\pd-msvc/r"
- IntermediateDirectory=".\pd-msvc/r"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src,f:\prog\max\flext\source"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;FLEXT_SYS=2"
- StringPooling="TRUE"
- RuntimeLibrary="4"
- EnableFunctionLevelLinking="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile=".\pd-msvc/r/delsplit.pch"
- AssemblerListingLocation=".\pd-msvc/r/"
- ObjectFile=".\pd-msvc/r/"
- ProgramDataBaseFileName=".\pd-msvc/r/"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib flext-pdwin.lib"
- OutputFile=".\pd-msvc/r/delsplit.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="c:\programme\audio\pd\bin,f:\prog\max\flext\pd-msvc"
- ProgramDatabaseFile=".\pd-msvc/r/delsplit.pdb"
- ImportLibrary=".\pd-msvc/r/delsplit.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\pd-msvc/r/delsplit.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory=".\pd-msvc/d"
- IntermediateDirectory=".\pd-msvc/d"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src,f:\prog\max\flext\source"
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;FLEXT_SYS=2"
- BasicRuntimeChecks="3"
- RuntimeLibrary="5"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile=".\pd-msvc/d/delsplit.pch"
- AssemblerListingLocation=".\pd-msvc/d/"
- ObjectFile=".\pd-msvc/d/"
- ProgramDataBaseFileName=".\pd-msvc/d/"
- BrowseInformation="1"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="4"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib"
- OutputFile=".\pd-msvc/d/delsplit.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="c:\programme\audio\pd\bin,f:\prog\max\flext\pd-msvc"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile=".\pd-msvc/d/delsplit.pdb"
- ImportLibrary=".\pd-msvc/d/delsplit.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="_DEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\pd-msvc/d/delsplit.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath="main.cpp">
- <FileConfiguration
- Name="Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/externals/grill/delsplit/gpl.txt b/externals/grill/delsplit/gpl.txt
deleted file mode 100644
index 5ea29a7d..00000000
--- a/externals/grill/delsplit/gpl.txt
+++ /dev/null
@@ -1,346 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) 19yy <name of author>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) 19yy name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Library General
-Public License instead of this License.
-
diff --git a/externals/grill/delsplit/license.txt b/externals/grill/delsplit/license.txt
deleted file mode 100644
index 2b7845ee..00000000
--- a/externals/grill/delsplit/license.txt
+++ /dev/null
@@ -1,50 +0,0 @@
-delsplit - split a delimited list-in-a-symbol
-Copyright (C) 2002-2003 Thomas Grill
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-In the official delsplit distribution, the GNU General Public License is
-in the file gpl.txt
-
----------------------------------------------------------
-
- OTHER COPYRIGHT NOTICES
-
----------------------------------------------------------
-This package uses the flext C++ layer - See its license text below:
-
-
---- flext ----------------------------------------------
-flext - C++ layer for Max/MSP and pd (pure data) externals
-Copyright (C) 2001-2003 Thomas Grill
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-In the official flext distribution, the GNU General Public License is
-in the file gpl.txt
-
-
diff --git a/externals/grill/delsplit/main.cpp b/externals/grill/delsplit/main.cpp
deleted file mode 100644
index 82e490a6..00000000
--- a/externals/grill/delsplit/main.cpp
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
-
-delsplit - split a delimited list-in-a-symbol
-
-Copyright (c) 2002-2005 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-#define FLEXT_ATTRIBUTES 1
-
-#include <flext.h>
-
-#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 500)
-#error You need at least flext version 0.5.0
-#endif
-
-#include <string.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <ctype.h>
-
-
-#define VERSION "0.1.5"
-
-#ifdef __MWERKS__
-#define STD std
-#else
-#define STD
-#endif
-
-
-class delsplit:
- public flext_base
-{
- FLEXT_HEADER_S(delsplit,flext_base,Setup)
-
-public:
- delsplit(int argc,const t_atom *argv);
-
-protected:
- void m_any(const t_symbol *s,int argc,const t_atom *argv);
- void m_del(const t_symbol *s,int argc,const t_atom *argv);
-
- const t_symbol *delim;
-
- static void SetAtom(t_atom &l,const char *s);
-private:
- static void Setup(t_classid c);
-
- static const t_symbol *sym__space;
-
- FLEXT_CALLBACK_A(m_any)
- FLEXT_CALLBACK_A(m_del)
- FLEXT_ATTRVAR_S(delim)
-};
-
-FLEXT_NEW_V("delsplit",delsplit)
-
-
-const t_symbol *delsplit::sym__space = NULL;
-
-void delsplit::Setup(t_classid c)
-{
- sym__space = MakeSymbol(" ");
-
- FLEXT_CADDMETHOD(c,0,m_any);
- FLEXT_CADDMETHOD(c,1,m_del);
- FLEXT_CADDATTR_VAR1(c,"del",delim);
-}
-
-delsplit::delsplit(int argc,const t_atom *argv):
- delim(sym__)
-{
- AddInAnything("Symbol in, representing the delimited list");
- AddInAnything("Set the Delimiter");
- AddOutList("The split list");
-
- m_del(sym_list,argc,argv);
-}
-
-
-/** \brief check whether string represents a number
- \ret 0..integer, 1..float, -1..no number
-*/
-static int chknum(const char *s)
-{
- int num = 0,pts = 0;
- for(; *s; ++s) {
- if(*s == '.') ++pts;
- else if(isdigit(*s)) ++num;
- else { num = 0; break; }
- }
- return (num > 0 && pts <= 1)?pts:-1;
-}
-
-void delsplit::m_del(const t_symbol *s,int argc,const t_atom *argv)
-{
- delim = NULL;
- if(s == sym_symbol) {
- FLEXT_ASSERT(argc == 1 && IsSymbol(argv[0]));
- delim = GetSymbol(argv[0]);
- }
- else if(s == sym_list) {
- if(argc == 0)
- delim = sym__space;
- else if(argc >= 1 && IsSymbol(argv[0]))
- delim = GetSymbol(argv[0]);
- }
-
- if(!delim) {
- post("%s - Argument must be a symbol, list or int/float/bang",thisName());
- delim = sym__space;
- }
-}
-
-void delsplit::SetAtom(t_atom &l,const char *s)
-{
- int n = chknum(s);
-
- if(n < 0)
- SetString(l,s);
- else if(n == 0)
- SetInt(l,atoi(s));
- else
- SetFloat(l,(float)atof(s));
-}
-
-void delsplit::m_any(const t_symbol *sym,int argc,const t_atom *argv)
-{
- FLEXT_ASSERT(delim);
-
- t_atom lst[256];
- int cnt = 0;
- const char *sdel = GetString(delim);
- int ldel = strlen(sdel);
-
- for(int i = -1; i < argc; ++i) {
- char str[1024];
- if(i < 0) {
- if(
- sym != sym_list && sym != sym_float && sym != sym_symbol && sym != sym_bang
-#if FLEXT_SYS == FLEXT_SYS_MAX
- && sym != sym_int
-#endif
- )
- strcpy(str,GetString(sym));
- else
- str[0] = 0;
- }
- else if(IsString(argv[i]))
- strcpy(str,GetString(argv[i]));
- else if(CanbeFloat(argv[i]))
- STD::sprintf(str,"%e",GetAFloat(argv[i]));
- else
- str[0] = 0;
-
- for(const char *s = str; *s; ) {
- char *e = strstr(s,sdel);
- if(!e) {
- SetAtom(lst[cnt++],s);
- break;
- }
- else {
- *e = 0;
- SetAtom(lst[cnt++],s);
- s = e+ldel;
- }
- }
- }
-
- ToSysList(0,cnt,lst);
-}
diff --git a/externals/grill/delsplit/package.txt b/externals/grill/delsplit/package.txt
deleted file mode 100644
index ac8107ee..00000000
--- a/externals/grill/delsplit/package.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-NAME=delsplit
-SRCS=main.cpp
diff --git a/externals/grill/dynext/dynext.vcproj b/externals/grill/dynext/dynext.vcproj
deleted file mode 100644
index f7edf246..00000000
--- a/externals/grill/dynext/dynext.vcproj
+++ /dev/null
@@ -1,255 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="dynext"
- Keyword="Win32Proj">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory=".\pd-msvc/d"
- IntermediateDirectory=".\pd-msvc/d"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="c:\data\pd\pd-cvs\src;..\flext\source"
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;PD"
- BasicRuntimeChecks="3"
- RuntimeLibrary="5"
- RuntimeTypeInfo="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile=".\pd-msvc/d/dyn.pch"
- AssemblerListingLocation=".\pd-msvc/d/"
- ObjectFile=".\pd-msvc/d/"
- ProgramDataBaseFileName=".\pd-msvc/d/"
- BrowseInformation="1"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="4"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib"
- OutputFile="$(outdir)/dyn~.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="C:\data\pd\pd-cvs\bin"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile=".\pd-msvc/d/dyn~.pdb"
- ImportLibrary=".\pd-msvc/d/dyn~.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="_DEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\pd-msvc/d/dyn.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory=".\pd-msvc/r"
- IntermediateDirectory=".\pd-msvc/r"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src,f:\prog\max\flext\source"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;PD"
- StringPooling="TRUE"
- RuntimeLibrary="4"
- EnableFunctionLevelLinking="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile=".\pd-msvc/r/dyn.pch"
- AssemblerListingLocation=".\pd-msvc/r/"
- ObjectFile=".\pd-msvc/r/"
- ProgramDataBaseFileName=".\pd-msvc/r/"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib flext-pdwin.lib pthreadVC.lib"
- OutputFile="pd-msvc/dyn~.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="c:\programme\audio\pd/bin,..\flext\pd-msvc"
- ProgramDatabaseFile=".\pd-msvc/r/dyn~.pdb"
- ImportLibrary=".\pd-msvc/r/dyn~.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\pd-msvc/r/dyn.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="PD Shared Release|Win32"
- OutputDirectory="./pd-msvc/sr"
- IntermediateDirectory="./pd-msvc/sr"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- GlobalOptimizations="TRUE"
- InlineFunctionExpansion="2"
- FavorSizeOrSpeed="2"
- OmitFramePointers="TRUE"
- OptimizeForProcessor="3"
- AdditionalIncludeDirectories="&quot;c:\data\prog\pd\pd-cvs\src&quot;;c:\data\prog\max\flext\source;c:\data\prog\packs\pthreads"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;FLEXT_SYS=2;FLEXT_SHARED"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- EnableEnhancedInstructionSet="1"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile="$(outdir)/dyn.pch"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib pthreadVC.lib"
- OutputFile="$(outdir)/dyn~.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="&quot;c:\data\prog\pd\pd-cvs/bin&quot;;&quot;..\flext\pd-msvc&quot;;c:\data\prog\packs\pthreads"
- ProgramDatabaseFile="$(outdir)/dyn~.pdb"
- ImportLibrary="$(outdir)/dyn~.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\pd-msvc/r/dyn.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="doc"
- Filter="">
- <File
- RelativePath="readme.txt">
- </File>
- </Filter>
- <File
- RelativePath="src\main.cpp">
- <FileConfiguration
- Name="Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;PD;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;PD;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/externals/grill/dynext/gpl.txt b/externals/grill/dynext/gpl.txt
deleted file mode 100644
index 5ea29a7d..00000000
--- a/externals/grill/dynext/gpl.txt
+++ /dev/null
@@ -1,346 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) 19yy <name of author>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) 19yy name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Library General
-Public License instead of this License.
-
diff --git a/externals/grill/dynext/license.txt b/externals/grill/dynext/license.txt
deleted file mode 100644
index 4a10fba2..00000000
--- a/externals/grill/dynext/license.txt
+++ /dev/null
@@ -1,50 +0,0 @@
-dyn~ - dynamic object management for PD
-Copyright (c) Thomas Grill (xovo@gmx.net)
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-In the official dyn~ distribution, the GNU General Public License is
-in the file gpl.txt
-
----------------------------------------------------------
-
- OTHER COPYRIGHT NOTICES
-
----------------------------------------------------------
-This package uses the flext C++ layer - See its license text below:
-
-
---- flext ----------------------------------------------
-flext - C++ layer for Max/MSP and pd (pure data) externals
-Copyright (C) 2001-2003 Thomas Grill
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-In the official flext distribution, the GNU General Public License is
-in the file gpl.txt
-
-
diff --git a/externals/grill/dynext/package.txt b/externals/grill/dynext/package.txt
deleted file mode 100644
index fd8a7889..00000000
--- a/externals/grill/dynext/package.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-NAME=dyn~
-
-SRCDIR=src
-
-SRCS= main.cpp
-HDRS=
diff --git a/externals/grill/dynext/pd/dyn~-help.pd b/externals/grill/dynext/pd/dyn~-help.pd
deleted file mode 100644
index 078cbeca..00000000
--- a/externals/grill/dynext/pd/dyn~-help.pd
+++ /dev/null
@@ -1,169 +0,0 @@
-#N canvas 50 60 833 552 12;
-#N canvas 71 10 562 569 examples 0;
-#X floatatom 148 239 5 0 0 0 - - -;
-#X floatatom 105 304 5 0 0 0 - - -;
-#X floatatom 113 501 5 0 0 0 - - -;
-#X obj 251 273 +;
-#X floatatom 252 301 5 0 0 0 - - -;
-#X floatatom 155 423 5 0 0 0 - - -;
-#X floatatom 244 424 5 0 0 0 - - -;
-#X floatatom 306 422 5 0 0 0 - - -;
-#X obj 261 468 * 2;
-#X obj 303 469 + 1;
-#X floatatom 270 499 5 0 0 0 - - -;
-#X floatatom 256 238 5 0 0 0 - - -;
-#X floatatom 224 72 5 0 0 0 - - -;
-#X floatatom 98 136 5 0 0 0 - - -;
-#X floatatom 237 133 5 0 0 0 - - -;
-#X obj 236 107 f;
-#X obj 99 107 dyn~ 0 1 0 1;
-#X obj 106 273 dyn~ 0 2 0 1;
-#X obj 113 468 dyn~ 0 3 0 1;
-#X msg 37 36 reset \, newobj . a f \, conn 0 a 0 \, conn a 0 0;
-#X msg 37 197 reset \, newobj . a + \, conn 0 a 0 \, conn 1 a 1 \,
-conn a 0 0;
-#X msg 37 368 reset \, newobj . a * 2 \, newobj . b + 1 \, conn 0 a
-0 \, conn 1 a 1 \, conn a 0 b 0 \, conn 2 b 1 \, conn b 0 0;
-#X connect 0 0 3 0;
-#X connect 0 0 17 1;
-#X connect 3 0 4 0;
-#X connect 5 0 8 0;
-#X connect 5 0 18 1;
-#X connect 6 0 8 1;
-#X connect 6 0 18 2;
-#X connect 7 0 9 1;
-#X connect 7 0 18 3;
-#X connect 8 0 9 0;
-#X connect 9 0 10 0;
-#X connect 11 0 3 1;
-#X connect 11 0 17 2;
-#X connect 12 0 15 0;
-#X connect 12 0 16 1;
-#X connect 15 0 14 0;
-#X connect 16 0 13 0;
-#X connect 17 0 1 0;
-#X connect 18 0 2 0;
-#X connect 19 0 16 0;
-#X connect 20 0 17 0;
-#X connect 21 0 18 0;
-#X restore 514 459 pd examples;
-#X msg 127 70 reset;
-#X text 184 70 clear all objects and connections;
-#X msg 129 231 conn 0 a 0;
-#X text 224 230 connect dyn-inlet 0 to a-inlet 0;
-#X msg 129 260 conn a 0 0;
-#X text 224 259 connect a-outlet 0 to dyn-outlet 0;
-#X msg 129 293 conn x 2 y 3;
-#X text 234 292 connect x-outlet 2 to y-inlet 3;
-#X msg 129 356 del a;
-#X text 181 358 delete object "a";
-#X obj 11 10 cnv 15 700 40 empty empty dyn~ 10 22 0 24 -260818 -1 0
-;
-#X text 282 387 send "message 1" to a-inlet 0;
-#X obj 54 468 dyn~ 0 1 0 2;
-#X text 156 467 dyn sig/msg inlets sig/msg outlets;
-#X msg 165 421 vis \$1;
-#X obj 129 421 tgl 20 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
-1;
-#X text 222 417 make patch visible/invisible;
-#X msg 129 323 dis x 2 y 3;
-#X text 234 324 disconnect x-outlet 2 to y-inlet 3;
-#X text 187 98 reload all objects (keep connections);
-#X msg 127 98 reload;
-#X text 218 432 (connections are not drawn at the moment!);
-#N canvas 178 192 594 450 dsp-ex 0;
-#X obj 63 357 dac~;
-#X obj 173 234 hsl 128 15 0 1000 0 0 empty empty empty -2 -6 0 8 -261681
--1 -1 2800 1;
-#X obj 184 259 nbx 5 14 -1e+037 1e+037 0 0 empty empty empty 0 -6 0
-10 -262144 -1 -1 220.472 256;
-#X msg 56 55 reset;
-#X obj 457 300 loadbang;
-#X msg 456 324 \; pd dsp 1;
-#X text 55 33 clear all;
-#X obj 37 255 dyn~ 0 1 2 0;
-#X text 60 84 make an oscillator (left);
-#X text 56 144 add an oscillator (double frq \, right);
-#X text 64 216 select frequency;
-#X obj 47 318 *~ 0.2;
-#X obj 131 317 *~ 0.2;
-#X obj 169 290 hsl 128 15 0.001 1 1 0 empty empty empty -2 -6 0 8 -262131
--1 -1 3300 1;
-#X text 306 286 gain;
-#X msg 54 106 newobj . o1 osc~ 220 \, conn 0 o1 0 \, conn o1 0 0;
-#X msg 57 164 newobj . m * 1.5 \, newobj . o2 osc~ 330 \, conn 0 m
-0 \, conn m 0 o2 0 \, conn o2 0 1;
-#X connect 1 0 2 0;
-#X connect 1 0 7 1;
-#X connect 3 0 7 0;
-#X connect 4 0 5 0;
-#X connect 7 0 11 0;
-#X connect 7 1 12 0;
-#X connect 11 0 0 0;
-#X connect 12 0 0 1;
-#X connect 13 0 11 1;
-#X connect 13 0 12 1;
-#X connect 15 0 7 0;
-#X connect 16 0 7 0;
-#X restore 514 487 pd dsp-ex;
-#X msg 129 156 newmsg . b Hello;
-#X msg 128 124 newobj . a + 1;
-#X text 247 124 make new object [+ 1] with name "a" in root patcher
-(".");
-#X text 269 156 make new message object [Hello( with name "b" in root
-patcher;
-#X msg 128 200 newobj . c pd sub;
-#X text 273 200 make sub patcher;
-#X msg 432 198 newobj c d bang;
-#X text 561 198 make object in sub patcher;
-#X text 133 30 http://grrrr.org/ext;
-#N canvas 132 483 566 544 proxies 0;
-#X text 25 78 Instead you have to create a "real" object that;
-#X text 24 94 gets the message and passes it along to the abstraction.
-;
-#X text 25 123 If you wanted to send float for example you could use
-;
-#X text 24 141 [float] objects as "proxies".;
-#X text 25 29 You can't use send to send directly to an inlet of an
-;
-#X text 24 45 abstraction or subpatcher object you placed inside dyn~.
-;
-#X obj 13 470 dyn~ 0 0 0 0;
-#X text 31 190 create a subpatcher with an inlet and a print object
-in it;
-#X text 35 270 try to send a message to it;
-#X msg 35 290 send mysub 0 Hello!;
-#X msg 30 212 reset \, newobj . mysub pd sub \, newobj mysub in inlet
-\, newobj mysub p print SUB \, conn in 0 p 0;
-#X text 209 289 doesn't work! (watch PD console);
-#X msg 34 360 newobj . proxy symbol \, conn proxy 0 mysub 0;
-#X text 36 388 send to that instead;
-#X msg 33 407 send proxy Hello!;
-#X obj 128 453 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
-1;
-#X msg 127 470 vis \$1;
-#X text 37 338 create a proxy ([symbol] object in this case);
-#X connect 9 0 6 0;
-#X connect 10 0 6 0;
-#X connect 12 0 6 0;
-#X connect 14 0 6 0;
-#X connect 15 0 16 0;
-#X connect 16 0 6 0;
-#X restore 626 469 pd proxies;
-#X msg 128 387 send a message 1;
-#X text 133 12 dynamic object management \, (C)2003-2006 Thomas Grill
-;
-#X connect 1 0 13 0;
-#X connect 3 0 13 0;
-#X connect 5 0 13 0;
-#X connect 7 0 13 0;
-#X connect 9 0 13 0;
-#X connect 15 0 13 0;
-#X connect 16 0 15 0;
-#X connect 18 0 13 0;
-#X connect 21 0 13 0;
-#X connect 24 0 13 0;
-#X connect 25 0 13 0;
-#X connect 28 0 13 0;
-#X connect 30 0 13 0;
-#X connect 34 0 13 0;
diff --git a/externals/grill/dynext/readme.txt b/externals/grill/dynext/readme.txt
deleted file mode 100644
index c3270f4f..00000000
--- a/externals/grill/dynext/readme.txt
+++ /dev/null
@@ -1,73 +0,0 @@
-dyn~ - dynamic object management for PD
-
-Copyright (c)Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-
-----------------------------------------------------------------------------
-
-Attention: dyn~ is bound to the PD version it is compiled for.
-This means that you cannot use a version compiled for PD 0.38 with PD 0.39.
-
-----------------------------------------------------------------------------
-
-You will need the flext C++ layer for PD and Max/MSP externals to compile this.
-see http://grrrr.org/ext
-
-Please see build.txt in the flext package on how to compile dyn~.
-
-----------------------------------------------------------------------------
-
-BUGS:
------
-
-- deletion of subcanvases and objects therein may be crashy
-
-
-CHANGES:
---------
-
-0.1.2:
-- optimized DSP path (less copying, no block delay)
-- separate message and signal proxy objects to save memory
-
-0.1.1:
-- using aligned memory
-- cached several symbols
-- strip .pd extension from abstraction filenames (if stripext attribute is set)
-- debug patcher opens on shift-click
-- made vis an attribute (visibility can now be queried)
-- fixed connecting objects in subpatchers
-- use TablePtrMap type to store named objects
-- allow reuse of names (can be disabled with "symreuse" attribute)
-- guard against messages to canvases ("canvasmsg" attribute)
-- more stable
-- make connections visible
-- fixed send method: any messages do work now not only lists...
-
-0.1.0:
-- first release: PD 0.37 supports all necessary functionality
-- cleaner message-based object creation
-- also messages and comments can be created now
-- handle sub-canvases
-
-0.0.2:
-- give the dyn~ subcanvas a name (hard to access - for the wild scripters out there),
- so that it is different from the canvas where dyn~ is in
-- corrected names of message in- and out-proxies.
-- manually retrigger DSP after loading an abstraction
-
-0.0.1:
-- send loadbangs for loaded abstractions
-- now use "dsp" message to enable dsp in sub-canvas (no need of canvas_addtolist, canvas_takefromlist any more)
-
-
-0.0.0 - initial cvs version
-
-
-
-TODO:
---------
-- add mute attribute
-
diff --git a/externals/grill/dynext/src/main.cpp b/externals/grill/dynext/src/main.cpp
deleted file mode 100644
index d6113c82..00000000
--- a/externals/grill/dynext/src/main.cpp
+++ /dev/null
@@ -1,954 +0,0 @@
-/*
-
-dyn~ - dynamical object management for PD
-
-Copyright (c)2003-2006 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-
--- this is all a bit hacky, but hey, it's PD! --
-
-*/
-
-#define FLEXT_ATTRIBUTES 1
-
-#include <flext.h>
-
-#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 500)
-#error You need at least flext version 0.5.0
-#endif
-
-#define DYN_VERSION "0.1.2"
-
-
-#if FLEXT_SYS != FLEXT_SYS_PD
-#error Sorry, dyn~ works for PD only!
-#endif
-
-
-#include "flinternal.h"
-#include <stdlib.h>
-#include <string.h>
-
-#ifdef _MSC_VER
-#pragma warning(disable: 4091 4244)
-#endif
-#include "g_canvas.h"
-
-
-class dyn:
- public flext_dsp
-{
- FLEXT_HEADER_S(dyn,flext_dsp,setup)
-public:
- dyn(int argc,const t_atom *argv);
- virtual ~dyn();
-
- void m_reset();
- void m_reload(); // refresh objects/abstractions
- void m_newobj(int argc,const t_atom *argv);
- void m_newmsg(int argc,const t_atom *argv);
- void m_newtext(int argc,const t_atom *argv);
- void m_del(const t_symbol *n);
- void m_connect(int argc,const t_atom *argv) { ConnDis(true,argc,argv); }
- void m_disconnect(int argc,const t_atom *argv) { ConnDis(false,argc,argv); }
- void m_send(int argc,const t_atom *argv);
- void ms_vis(bool vis) { canvas_vis(canvas,vis?1:0); }
- void mg_vis(bool &vis) const { vis = canvas && canvas->gl_editor; }
-
-protected:
-
- virtual void CbClick() { ms_vis(true); }
-
- static const t_symbol *k_obj,*k_msg,*k_text;
-
- class Obj {
- public:
- Obj(t_glist *gl,t_gobj *o): glist(gl),object(o) {}
-
- t_glist *AsGlist() const
- {
- return pd_class(&object->g_pd) == canvas_class?(t_glist *)object:NULL;
- }
-
- t_glist *glist;
- t_gobj *object;
- };
-
- class ObjMap
- :public TablePtrMap<const t_symbol *,Obj *>
- {
- public:
- virtual ~ObjMap() { clear(); }
-
- virtual void clear()
- {
- for(iterator it(*this); it; ++it) delete it.data();
- TablePtrMap<const t_symbol *,Obj *>::clear();
- }
- } root;
-
- typedef TablePtrMap<Obj *,const t_symbol *> GObjMap;
-
- class GLstMap
- :public TablePtrMap<t_glist *,GObjMap *>
- {
- public:
- virtual ~GLstMap() { clear(); }
-
- virtual void clear()
- {
- for(iterator it(*this); it; ++it) delete it.data();
- TablePtrMap<t_glist *,GObjMap *>::clear();
- }
- } groot;
-
- Obj *Find(const t_symbol *n) { return root.find(n); }
- t_glist *FindCanvas(const t_symbol *n);
-
- Obj *Remove(const t_symbol *n);
- bool Add(const t_symbol *n,t_glist *gl,t_gobj *o);
-
- t_gobj *New(const t_symbol *kind,int _argc_,const t_atom *_argv_,bool add = true);
-
- void ConnDis(bool conn,int argc,const t_atom *argv);
-
- void DoInit();
- void DoExit();
- void NewProxies();
- void DelProxies();
-
- virtual bool CbMethodResort(int n,const t_symbol *s,int argc,const t_atom *argv);
- virtual bool CbDsp();
-
-
- // proxy object
- class proxy
- {
- public:
- t_object obj;
- dyn *th;
-
- void init(dyn *t)
- {
- th = t;
- }
- };
-
- // proxy object
- class sigproxy
- : public proxy
- {
- public:
- t_sample defsig;
- int n;
- t_sample *vec;
-
- void init(dyn *t)
- {
- proxy::init(t);
- defsig = 0;
- n = 0,vec = NULL;
- }
-
- void set(int n,t_sample *vec)
- {
- this->n = n;
- this->vec = vec;
- }
- };
-
- // proxy for inbound messages
- class proxyin:
- public proxy
- {
- public:
- void init(dyn *t)
- {
- proxy::init(t);
- outlet_new(&obj,&s_anything);
- }
-
- void Message(const t_symbol *s,int argc,const t_atom *argv)
- {
- outlet_anything(obj.te_outlet,(t_symbol *)s,argc,(t_atom *)argv);
- }
-
- static void px_method(proxyin *obj,const t_symbol *s,int argc,const t_atom *argv)
- {
- obj->Message(s,argc,argv);
- }
- };
-
- // proxy for inbound signals
- class sigproxyin:
- public sigproxy
- {
- public:
- void init(dyn *t)
- {
- sigproxy::init(t);
- outlet_new(&obj,&s_signal);
- }
-
- static void dsp(sigproxyin *x, t_signal **sp);
- };
-
-
- // proxy for outbound messages
- class proxyout:
- public proxy
- {
- public:
- void init(dyn *t,int o)
- {
- proxy::init(t);
- outlet = o;
- }
-
- static void px_method(proxyout *obj,const t_symbol *s,int argc,const t_atom *argv)
- {
- obj->th->ToSysAnything(obj->outlet,s,argc,argv);
- }
-
- protected:
- int outlet;
- };
-
- // proxy for outbound messages
- class sigproxyout:
- public sigproxy
- {
- public:
- void init(dyn *t)
- {
- sigproxy::init(t);
- outlet_new(&obj,&s_signal);
- }
-
- static void dsp(sigproxyout *x, t_signal **sp);
- };
-
- static t_class *pxin_class,*pxout_class;
- static t_class *pxins_class,*pxouts_class;
-
- int s_inlets,m_inlets,s_outlets,m_outlets;
- sigproxyin **pxsin;
- proxyin **pxmin;
- sigproxyout **pxsout;
- proxyout **pxmout;
-
- static t_object *pxin_new() { return (t_object *)pd_new(pxin_class); }
- static t_object *pxins_new() { return (t_object *)pd_new(pxins_class); }
- static t_object *pxout_new() { return (t_object *)pd_new(pxout_class); }
- static t_object *pxouts_new() { return (t_object *)pd_new(pxouts_class); }
-
- t_canvas *canvas;
- bool stripext,canvasmsg,symreuse;
-
-private:
- static void setup(t_classid c);
-
- FLEXT_CALLBACK(m_reset)
- FLEXT_CALLBACK(m_reload)
- FLEXT_CALLBACK_V(m_newobj)
- FLEXT_CALLBACK_V(m_newmsg)
- FLEXT_CALLBACK_V(m_newtext)
- FLEXT_CALLBACK_S(m_del)
- FLEXT_CALLBACK_V(m_connect)
- FLEXT_CALLBACK_V(m_disconnect)
- FLEXT_CALLBACK_V(m_send)
- FLEXT_CALLVAR_B(mg_vis,ms_vis)
-
- FLEXT_ATTRVAR_B(stripext)
- FLEXT_ATTRVAR_B(symreuse)
- FLEXT_ATTRVAR_B(canvasmsg)
-
- static const t_symbol *sym_dot,*sym_dynsin,*sym_dynsout,*sym_dynin,*sym_dynout,*sym_dyncanvas;
- static const t_symbol *sym_vis,*sym_loadbang,*sym_dsp,*sym_pop;
-};
-
-FLEXT_NEW_DSP_V("dyn~",dyn)
-
-
-t_class *dyn::pxin_class = NULL,*dyn::pxout_class = NULL;
-t_class *dyn::pxins_class = NULL,*dyn::pxouts_class = NULL;
-
-const t_symbol *dyn::k_obj = NULL;
-const t_symbol *dyn::k_msg = NULL;
-const t_symbol *dyn::k_text = NULL;
-
-const t_symbol *dyn::sym_dot = NULL;
-const t_symbol *dyn::sym_dynsin = NULL;
-const t_symbol *dyn::sym_dynsout = NULL;
-const t_symbol *dyn::sym_dynin = NULL;
-const t_symbol *dyn::sym_dynout = NULL;
-const t_symbol *dyn::sym_dyncanvas = NULL;
-
-const t_symbol *dyn::sym_vis = NULL;
-const t_symbol *dyn::sym_loadbang = NULL;
-const t_symbol *dyn::sym_dsp = NULL;
-const t_symbol *dyn::sym_pop = NULL;
-
-
-void dyn::setup(t_classid c)
-{
- post("");
- post("dyn~ %s - dynamic object management, (C)2003-2006 Thomas Grill",DYN_VERSION);
- post("");
-
- sym_dynsin = MakeSymbol("dyn_in~");
- sym_dynsout = MakeSymbol("dyn_out~");
- sym_dynin = MakeSymbol("dyn_in");
- sym_dynout = MakeSymbol("dyn_out");
-
- sym_dot = MakeSymbol(".");
- sym_dyncanvas = MakeSymbol(" dyn~-canvas ");
-
- // set up proxy class for inbound messages
- pxin_class = class_new(const_cast<t_symbol *>(sym_dynin),(t_newmethod)pxin_new,NULL,sizeof(proxyin),0, A_NULL);
- add_anything(pxin_class,proxyin::px_method);
-
- // set up proxy class for inbound signals
- pxins_class = class_new(const_cast<t_symbol *>(sym_dynsin),(t_newmethod)pxins_new,NULL,sizeof(sigproxyin),0, A_NULL);
- add_dsp(pxins_class,sigproxyin::dsp);
- CLASS_MAINSIGNALIN(pxins_class, sigproxyin, defsig);
-
- // set up proxy class for outbound messages
- pxout_class = class_new(const_cast<t_symbol *>(sym_dynout),(t_newmethod)pxout_new,NULL,sizeof(proxyout),0, A_NULL);
- add_anything(pxout_class,proxyout::px_method);
-
- // set up proxy class for outbound signals
- pxouts_class = class_new(const_cast<t_symbol *>(sym_dynsout),(t_newmethod)pxouts_new,NULL,sizeof(sigproxyout),0, A_NULL);
- add_dsp(pxouts_class,sigproxyout::dsp);
- CLASS_MAINSIGNALIN(pxouts_class, sigproxyout, defsig);
-
- // set up dyn~
- FLEXT_CADDMETHOD_(c,0,"reset",m_reset);
- FLEXT_CADDMETHOD_(c,0,"reload",m_reload);
- FLEXT_CADDMETHOD_(c,0,"newobj",m_newobj);
- FLEXT_CADDMETHOD_(c,0,"newmsg",m_newmsg);
- FLEXT_CADDMETHOD_(c,0,"newtext",m_newtext);
- FLEXT_CADDMETHOD_(c,0,"del",m_del);
- FLEXT_CADDMETHOD_(c,0,"conn",m_connect);
- FLEXT_CADDMETHOD_(c,0,"dis",m_disconnect);
- FLEXT_CADDMETHOD_(c,0,"send",m_send);
- FLEXT_CADDATTR_VAR(c,"vis",mg_vis,ms_vis);
- FLEXT_CADDATTR_VAR1(c,"stripext",stripext);
- FLEXT_CADDATTR_VAR1(c,"symreuse",symreuse);
- FLEXT_CADDATTR_VAR1(c,"canvasmsg",canvasmsg);
-
- // set up symbols
- k_obj = MakeSymbol("obj");
- k_msg = MakeSymbol("msg");
- k_text = MakeSymbol("text");
-
- sym_vis = MakeSymbol("vis");
- sym_loadbang = MakeSymbol("loadbang");
- sym_dsp = MakeSymbol("dsp");
- sym_pop = MakeSymbol("pop");
-}
-
-
-/*
-There must be a separate canvas for the dynamically created objects as some mechanisms in PD
-(like copy/cut/paste) get confused otherwise.
-On the other hand it seems to be possible to create objects without a canvas.
-They won't receive DSP processing, though, hence it's only possible for message objects.
-Problems arise when an object is not yet loaded... the canvas environment is then needed to
-load it.. if there is no canvas, PD currently crashes.
-
-
-How to create the canvas:
-1) via direct call to canvas_new()
-2) a message to pd_canvasmaker
- con: does not return a pointer for the created canvas
-
-There are two possibilities for the canvas
-1) make a sub canvas to the one where dyn~ resides:
- pro: no problems with environment (abstractions are found and loaded correctly)
-2) make a root canvas:
- pro: it will be in the canvas list per default, hence DSP is processed
- con: canvas environment must be created manually
- (is normally done by pd_canvasmaker if there is a directory set, which is again done somewhere else)
-
-Enabling DSP on the subcanvas
-1) send it a "dsp" message (see rabin~ by K.Czaja)... but, which signal vector should be taken?
- -> answer: NONE! (just send NULL)
-2) add it to the list of _root_ canvases (these will be DSP-processed per default)
- (for this the canvas_addtolist and canvas_takefromlist functions are used)
- however, it's not clear if this can lead to problems since it is no root-canvas!
-
-In all cases the 1)s have been chosen as the cleaner solution
-*/
-
-dyn::dyn(int argc,const t_atom *argv):
- canvas(NULL),
- pxsin(NULL),pxmin(NULL),pxsout(NULL),pxmout(NULL),
- stripext(false),symreuse(true),canvasmsg(false)
-{
- if(argc < 4) {
- post("%s - Syntax: dyn~ sig-ins msg-ins sig-outs msg-outs",thisName());
- InitProblem();
- return;
- }
-
- s_inlets = GetAInt(argv[0]);
- m_inlets = GetAInt(argv[1]);
- s_outlets = GetAInt(argv[2]);
- m_outlets = GetAInt(argv[3]);
-
- // --- make a sub-canvas for dyn~ ------
-
- t_atom arg[6];
- SetInt(arg[0],0); // xpos
- SetInt(arg[1],0); // ypos
- SetInt(arg[2],700); // xwidth
- SetInt(arg[3],520); // xwidth
- SetSymbol(arg[4],sym_dyncanvas); // canvas name
- SetInt(arg[5],0); // visible
-
- canvas = canvas_new(NULL, NULL, 6, arg);
- // pop canvas (must do that...)
- SetInt(arg[0],0);
- pd_typedmess((t_pd *)canvas,(t_symbol *)sym_pop,1,arg);
-
- DoInit();
-
- AddInSignal("Messages (newobj,newmsg,newtext,del,conn,dis)");
- AddInSignal(s_inlets);
- AddInAnything(m_inlets);
- AddOutSignal(s_outlets);
- AddOutAnything(m_outlets);
-}
-
-dyn::~dyn()
-{
- DoExit();
-
- if(canvas) pd_free((t_pd *)canvas);
-}
-
-void dyn::DoInit()
-{
- // add to list of canvases
- groot.insert(canvas,new GObjMap);
-
- NewProxies();
-}
-
-void dyn::DoExit()
-{
- // delete proxies
- DelProxies();
- // remove all objects
- if(canvas) glist_clear(canvas);
- // remove all names
- groot.clear();
- root.clear();
-}
-
-void dyn::NewProxies()
-{
- // --- create inlet proxies ------
- int i;
- if(s_inlets) pxsin = new sigproxyin *[s_inlets];
- if(m_inlets) pxmin = new proxyin *[m_inlets];
- for(i = 0; i < s_inlets+m_inlets; ++i) {
- t_atom lst[5];
- SetInt(lst[0],i*100);
- SetInt(lst[1],10);
- SetSymbol(lst[2],sym_dot);
- SetSymbol(lst[3],sym__);
-
- try {
- if(i < s_inlets) {
- SetSymbol(lst[4],sym_dynsin);
- pxsin[i] = (sigproxyin *)New(k_obj,5,lst,false);
- if(pxsin[i]) pxsin[i]->init(this);
- }
- else {
- int j = i-s_inlets;
- SetSymbol(lst[4],sym_dynin);
- pxmin[j] = (proxyin *)New(k_obj,5,lst,false);
- if(pxmin[j]) pxmin[j]->init(this);
- }
- }
- catch(...) {
- error("%s - Error creating inlet proxy",thisName());
- }
- }
-
- // --- create outlet proxies ------
-
- if(s_outlets) pxsout = new sigproxyout *[s_outlets];
- if(m_outlets) pxmout = new proxyout *[m_outlets];
- for(i = 0; i < s_outlets+m_outlets; ++i) {
- t_atom lst[5];
- SetInt(lst[0],i*100);
- SetInt(lst[1],500);
- SetSymbol(lst[2],sym_dot);
- SetSymbol(lst[3],sym__);
-
- try {
- if(i < s_outlets) {
- SetSymbol(lst[4],sym_dynsout);
- pxsout[i] = (sigproxyout *)New(k_obj,5,lst,false);
- if(pxsout[i]) pxsout[i]->init(this);
- }
- else {
- int j = i-s_outlets;
- SetSymbol(lst[4],sym_dynout);
- pxmout[j] = (proxyout *)New(k_obj,5,lst,false);
- if(pxmout[j]) pxmout[j]->init(this,i);
- }
- }
- catch(...) {
- error("%s - Error creating outlet proxy",thisName());
- }
- }
-}
-
-void dyn::DelProxies()
-{
- int i;
- if(pxsin) {
- for(i = 0; i < s_inlets; ++i) glist_delete(canvas,(t_gobj *)pxsin[i]);
- delete[] pxsin; pxsin = NULL;
- }
- if(pxmin) {
- for(i = 0; i < m_inlets; ++i) glist_delete(canvas,(t_gobj *)pxmin[i]);
- delete[] pxmin; pxmin = NULL;
- }
- if(pxsout) {
- for(i = 0; i < s_outlets; ++i) glist_delete(canvas,(t_gobj *)pxsout[i]);
- delete[] pxsout; pxsout = NULL;
- }
- if(pxmout) {
- for(i = 0; i < m_outlets; ++i) glist_delete(canvas,(t_gobj *)pxmout[i]);
- delete[] pxmout; pxmout = NULL;
- }
-}
-
-t_glist *dyn::FindCanvas(const t_symbol *n)
-{
- if(n == sym_dot)
- return canvas;
- else {
- Obj *o = Find(n);
- t_glist *gl = o->AsGlist();
- return gl && groot.find(gl)?(t_glist *)o->object:NULL;
- }
-}
-
-static t_gobj *GetLast(t_glist *gl)
-{
- t_gobj *go = gl->gl_list;
- if(go)
- while(go->g_next)
- go = go->g_next;
- return go;
-}
-
-bool dyn::Add(const t_symbol *n,t_glist *gl,t_gobj *o)
-{
- // remove previous name entry
- Obj *prv = Remove(n);
- if(prv) delete prv;
-
- // get canvas map
- GObjMap *gm = groot.find(gl);
- // if none existing create one
- if(!gm) return false;
-
- // insert object to canvas map
- Obj *obj = new Obj(gl,o);
- gm->insert(obj,n);
- // insert object to object map
- root.insert(n,obj);
-
- t_glist *nl = obj->AsGlist();
- if(nl) {
- FLEXT_ASSERT(!groot.find(nl));
- groot.insert(nl,new GObjMap);
- }
-
- return true;
-}
-
-dyn::Obj *dyn::Remove(const t_symbol *n)
-{
- // see if there's already an object of the same name
- Obj *prv = root.remove(n);
- if(prv) {
- t_glist *pl = prv->glist;
- // get canvas map
- GObjMap *gm = groot.find(pl);
- FLEXT_ASSERT(gm);
- // remove object from canvas map
- gm->remove(prv);
-
- // non-NULL if object itself is a glist
- t_glist *gl = prv->AsGlist();
- if(gl) {
- GObjMap *gm = groot.remove(gl);
- // if it's a loaded abstraction it need not be in our list
- if(gm) {
- // remove all objects in canvas map
- for(GObjMap::iterator it(*gm); it; ++it) {
- Obj *r = Remove(it.data());
- FLEXT_ASSERT(r);
- delete r;
- }
- // delete canvas map
- delete gm;
- }
- }
- }
- return prv;
-}
-
-t_gobj *dyn::New(const t_symbol *kind,int _argc_,const t_atom *_argv_,bool add)
-{
- t_gobj *newest = NULL;
- const char *err = NULL;
- const t_symbol *name = NULL,*canv = NULL;
- t_glist *glist = NULL;
-
- AtomListStatic<16> args;
-
- if(_argc_ >= 4 && CanbeInt(_argv_[0]) && CanbeInt(_argv_[1]) && IsSymbol(_argv_[2]) && IsSymbol(_argv_[3])) {
- canv = GetSymbol(_argv_[2]);
- name = GetSymbol(_argv_[3]);
-
- args(_argc_-2);
- SetInt(args[0],GetAInt(_argv_[0]));
- SetInt(args[1],GetAInt(_argv_[1]));
- for(int i = 0; i < _argc_; ++i) SetAtom(args[i+2],_argv_[i+4]);
- }
- else if(_argc_ >= 3 && IsSymbol(_argv_[0]) && IsSymbol(_argv_[1])) {
- canv = GetSymbol(_argv_[0]);
- name = GetSymbol(_argv_[1]);
-
- args(_argc_);
- // random position if not given
- SetInt(args[0],rand()%600);
- SetInt(args[1],50+rand()%400);
- for(int i = 0; i < _argc_-2; ++i) SetAtom(args[i+2],_argv_[i+2]);
- }
-
- if(args.Count()) {
- if(name == sym_dot)
- err = ". cannot be redefined";
- else if(!symreuse && root.find(name))
- err = "Name already in use";
- else if(!canv || !(glist = FindCanvas(canv)))
- err = "Canvas could not be found";
- else {
- // convert abstraction filenames
- if(stripext && kind == k_obj && args.Count() >= 3 && IsSymbol(args[2])) {
- const char *c = GetString(args[2]);
- int l = strlen(c);
- // check end of string for .pd file extension
- if(l >= 4 && !memcmp(c+l-3,".pd",4)) {
- // found -> get rid of it
- char tmp[64],*t = tmp;
- if(l > sizeof tmp-1) t = new char[l+1];
- memcpy(tmp,c,l-3); tmp[l-3] = 0;
- SetString(args[2],tmp);
- if(tmp != t) delete[] t;
- }
- }
-
- // set selected canvas as current
- canvas_setcurrent(glist);
-
- t_gobj *last = GetLast(glist);
- pd_typedmess((t_pd *)glist,(t_symbol *)kind,args.Count(),args.Atoms());
- newest = GetLast(glist);
-
- if(kind == k_obj) {
- t_object *o = (t_object *)pd_newest();
-
- if(!o) {
- // PD creates a text object when the intended object could not be created
- t_gobj *trash = GetLast(glist);
-
- // Test for newly created object....
- if(trash && last != trash) {
- // Delete it!
- glist_delete(glist,trash);
- }
- newest = NULL;
- }
- else
- newest = &o->te_g;
- }
-
- // look for latest created object
- if(newest) {
- // add to database
- if(add) {
- bool ok = Add(name,glist,newest);
- FLEXT_ASSERT(ok);
- }
-
- // send loadbang (if it is an abstraction)
- if(pd_class(&newest->g_pd) == canvas_class) {
- // hide the sub-canvas
- pd_vmess((t_pd *)newest,const_cast<t_symbol *>(sym_vis),"i",0);
-
- // loadbang the abstraction
- pd_vmess((t_pd *)newest,const_cast<t_symbol *>(sym_loadbang),"");
- }
-
- // restart dsp - that's necessary because ToCanvas is called manually
- canvas_update_dsp();
- }
- else
- if(!err) err = "Could not create object";
-
- // pop the current canvas
- canvas_unsetcurrent(glist);
- }
- }
- else
- if(!err) err = "new name object [args]";
-
- if(err) throw err;
-
- return newest;
-}
-
-void dyn::m_reset()
-{
- int dsp = canvas_suspend_dsp();
- DoExit();
- DoInit();
- canvas_resume_dsp(dsp);
-}
-
-void dyn::m_reload()
-{
- post("%s - reload: not implemented yet",thisName());
-}
-
-void dyn::m_newobj(int argc,const t_atom *argv)
-{
- try { New(k_obj,argc,argv); }
- catch(const char *err) {
- post("%s - %s",thisName(),err);
- }
- catch(...) {
- post("%s - unknown error",thisName());
- }
-}
-
-void dyn::m_newmsg(int argc,const t_atom *argv)
-{
- try { New(k_msg,argc,argv); }
- catch(const char *err) {
- post("%s - %s",thisName(),err);
- }
- catch(...) {
- post("%s - unknown error",thisName());
- }
-}
-
-void dyn::m_newtext(int argc,const t_atom *argv)
-{
- try { New(k_text,argc,argv); }
- catch(const char *err) {
- post("%s - %s",thisName(),err);
- }
- catch(...) {
- post("%s - unknown error",thisName());
- }
-}
-
-void dyn::m_del(const t_symbol *n)
-{
- Obj *obj = Remove(n);
- if(obj) {
- glist_delete(obj->glist,obj->object);
- delete obj;
- }
- else
- post("%s - del: object not found",thisName());
-}
-
-void dyn::ConnDis(bool conn,int argc,const t_atom *argv)
-{
- const t_symbol *s_n = NULL,*d_n = NULL;
- int s_x,d_x;
-
- if(argc == 4 && IsSymbol(argv[0]) && CanbeInt(argv[1]) && IsSymbol(argv[2]) && CanbeInt(argv[3])) {
- s_n = GetSymbol(argv[0]);
- s_x = GetAInt(argv[1]);
- d_n = GetSymbol(argv[2]);
- d_x = GetAInt(argv[3]);
- }
- else if(argc == 3 && CanbeInt(argv[0]) && IsSymbol(argv[1]) && CanbeInt(argv[2])) {
- s_n = NULL;
- s_x = GetAInt(argv[0]);
- d_n = GetSymbol(argv[1]);
- d_x = GetAInt(argv[2]);
- }
- else if(argc == 3 && IsSymbol(argv[0]) && CanbeInt(argv[1]) && CanbeInt(argv[2])) {
- s_n = GetSymbol(argv[0]);
- s_x = GetAInt(argv[1]);
- d_n = NULL;
- d_x = GetAInt(argv[2]);
- }
- else if(argc == 2 && CanbeInt(argv[0]) && CanbeInt(argv[1])) {
- // direct connection from proxy-in to proxy-out
- s_n = NULL;
- s_x = GetAInt(argv[0]);
- d_n = NULL;
- d_x = GetAInt(argv[1]);
- }
- else {
- post("%s - connect: [src-name] src-slot [dst-name] dst-slot",thisName());
- return;
- }
-
- t_text *s_obj,*d_obj;
- t_glist *s_cnv,*d_cnv;
- if(s_n) {
- Obj *s_o = Find(s_n);
- if(!s_o) {
- post("%s - connect: source \"%s\" not found",thisName(),GetString(s_n));
- return;
- }
- s_obj = (t_text *)s_o->object;
- s_cnv = s_o->glist;
- }
- else if(s_x < 0 && s_x >= s_inlets+m_inlets) {
- post("%s - connect: inlet %i out of range (0..%i)",thisName(),s_x,s_inlets+m_inlets-1);
- return;
- }
- else {
- s_obj = s_x < s_inlets?&pxsin[s_x]->obj:&pxmin[s_x-s_inlets]->obj;
- s_cnv = canvas;
- s_x = 0; // always 0 for proxy
- }
-
- if(d_n) {
- Obj *d_o = Find(d_n);
- if(!d_o) {
- post("%s - connect: destination \"%s\" not found",thisName(),GetString(d_n));
- return;
- }
- d_obj = (t_text *)d_o->object;
- d_cnv = d_o->glist;
- }
- else if(d_x < 0 && d_x >= s_outlets+m_outlets) {
- post("%s - connect: outlet %i out of range (0..%i)",thisName(),d_x,s_outlets+m_outlets-1);
- return;
- }
- else {
- d_obj = d_x < s_outlets?&pxsout[d_x]->obj:&pxmout[d_x-s_outlets]->obj;
- d_cnv = canvas;
- d_x = 0; // always 0 for proxy
- }
-
- if(s_cnv != d_cnv) {
- post("%s - connect: objects \"%s\" and \"%s\" are not on same canvas",thisName(),GetString(s_n),GetString(d_n));
- return;
- }
-
-#ifndef NO_VIS
- int s_oix = canvas_getindex(s_cnv,&s_obj->te_g);
- int d_oix = canvas_getindex(d_cnv,&d_obj->te_g);
-#endif
-
- if(conn) {
- if(!canvas_isconnected(s_cnv,(t_text *)s_obj,s_x,(t_text *)d_obj,d_x)) {
-#ifdef NO_VIS
- if(!obj_connect(s_obj, s_x, d_obj, d_x))
- post("%s - connect: connection could not be made",thisName());
-#else
- canvas_connect(s_cnv,s_oix,s_x,d_oix,d_x);
-#endif
- }
- }
- else {
-#ifdef NO_VIS
- obj_disconnect(s_obj, s_x, d_obj, d_x);
-#else
- canvas_disconnect(s_cnv,s_oix,s_x,d_oix,d_x);
-#endif
- }
-}
-
-
-bool dyn::CbMethodResort(int n,const t_symbol *s,int argc,const t_atom *argv)
-{
- if(n == 0)
- // messages into inlet 0 are for dyn~
- return flext_base::m_method_(n,s,argc,argv);
- else {
- // all other messages are forwarded to proxies (and connected objects)
- if(n >= s_inlets)
- pxmin[n-s_inlets-1]->Message(s,argc,argv);
- else
- post("%s - message to signal inlet",thisName());
- return true;
- }
-}
-
-
-void dyn::m_send(int argc,const t_atom *argv)
-{
- if(argc < 2 || !IsSymbol(argv[0]))
- post("%s - Syntax: send name message [args]",thisName());
- else {
- Obj *o = Find(GetSymbol(argv[0]));
- if(!o)
- post("%s - send: object \"%s\" not found",thisName(),GetString(argv[0]));
- else if(!canvasmsg && o->AsGlist())
- post("%s - send: object \"%s\" is an abstraction, please create proxy",thisName(),GetString(argv[0]));
- else if(IsSymbol(argv[1]))
- // has a tag symbol
- pd_typedmess((t_pd *)o->object,(t_symbol *)GetSymbol(argv[1]),argc-2,(t_atom *)argv+2);
- else
- // assume it's a list
- pd_forwardmess((t_pd *)o->object,argc-1,(t_atom *)argv+1);
- }
-}
-
-void dyn::sigproxyin::dsp(sigproxyin *x,t_signal **sp)
-{
- FLEXT_ASSERT(x->vec && x->n);
- int n = sp[0]->s_n;
- if(n != x->n) {
- post("dyn~ proxyin - blocksize doesn't match!");
- }
- else
- dsp_add_copy(x->vec,sp[0]->s_vec,n);
-}
-
-void dyn::sigproxyout::dsp(sigproxyout *x,t_signal **sp)
-{
- FLEXT_ASSERT(x->vec && x->n);
- int n = sp[0]->s_n;
- if(n != x->n) {
- post("dyn~ proxyout - blocksize doesn't match!");
- }
- else
- dsp_add_copy(sp[0]->s_vec,x->vec,n);
-}
-
-bool dyn::CbDsp()
-{
- int n = Blocksize();
- t_sample *const *in = InSig(),*const *out = OutSig();
- int i;
- for(i = 0; i < s_inlets; ++i) pxsin[i]->set(n,in[i+1]);
- for(i = 0; i < s_outlets; ++i) pxsout[i]->set(n,out[i]);
-
- // add sub canvas to dsp list (no signal vector to borrow from .. set it to NULL)
- mess1((t_pd *)canvas,const_cast<t_symbol *>(sym_dsp),NULL);
- return false;
-}
diff --git a/externals/grill/fftease/fftease.mcp b/externals/grill/fftease/fftease.mcp
deleted file mode 100755
index a3b9fc51..00000000
--- a/externals/grill/fftease/fftease.mcp
+++ /dev/null
Binary files differ
diff --git a/externals/grill/fftease/fftease.vcproj b/externals/grill/fftease/fftease.vcproj
deleted file mode 100644
index 5e3eb8ba..00000000
--- a/externals/grill/fftease/fftease.vcproj
+++ /dev/null
@@ -1,3346 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="fftease"
- ProjectGUID="{F0C94DB3-3747-478E-86A1-0AE613156D93}"
- Keyword="Win32Proj">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory=".\pd-msvc/d"
- IntermediateDirectory=".\pd-msvc/d"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src,..\flext\source"
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;FLEXT_SYS=2"
- BasicRuntimeChecks="3"
- RuntimeLibrary="5"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile=".\pd-msvc/d/fftease.pch"
- AssemblerListingLocation=".\pd-msvc/d/"
- ObjectFile=".\pd-msvc/d/"
- ProgramDataBaseFileName=".\pd-msvc/d/"
- BrowseInformation="1"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="4"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib"
- OutputFile=".\pd-msvc/d/fftease.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="c:\programme\audio\pd\bin,c:\data\pdmax\flext\pd-msvc"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile=".\pd-msvc/d/fftease.pdb"
- ImportLibrary=".\pd-msvc/d/fftease.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="_DEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\pd-msvc/d/fftease.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory=".\pd-msvc/r"
- IntermediateDirectory=".\pd-msvc/r"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src,f:\prog\max\flext\source"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;FLEXT_SYS=2"
- StringPooling="TRUE"
- RuntimeLibrary="4"
- EnableFunctionLevelLinking="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile=".\pd-msvc/r/fftease.pch"
- AssemblerListingLocation=".\pd-msvc/r/"
- ObjectFile=".\pd-msvc/r/"
- ProgramDataBaseFileName=".\pd-msvc/r/"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib flext-pdwin.lib"
- OutputFile="pd-msvc/fftease.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="c:\programme\audio\pd\bin,f:\prog\max\flext\pd-msvc"
- ProgramDatabaseFile=".\pd-msvc/r/fftease.pdb"
- ImportLibrary=".\pd-msvc/r/fftease.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\pd-msvc/r/fftease.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Max Release|Win32"
- OutputDirectory=".\max-msvc/r"
- IntermediateDirectory=".\max-msvc/r"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="F:\prog\audio\MaxWinSDK\c74support\max-includes,F:\prog\audio\MaxWinSDK\c74support\msp-includes,f:\prog\max\flext\source"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;FLEXT_SYS=1"
- StringPooling="TRUE"
- RuntimeLibrary="4"
- StructMemberAlignment="2"
- EnableFunctionLevelLinking="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile="$(outdir)/fftease.pch"
- AssemblerListingLocation="$(outdir)/"
- ObjectFile="$(outdir)/"
- ProgramDataBaseFileName="$(outdir)/"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="maxapi.lib maxaudio.lib flext-maxwin.lib"
- OutputFile="max-msvc/fftease.mxe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="&quot;F:\prog\audio\MaxWinSDK\c74support\msp-includes\win-includes\release&quot;;&quot;F:\prog\audio\MaxWinSDK\c74support\max-includes\win-includes\release&quot;,f:\prog\max\flext\max-msvc"
- IgnoreAllDefaultLibraries="TRUE"
- ProgramDatabaseFile="$(outdir)/fftease.pdb"
- ImportLibrary="$(outdir)/fftease.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\pd-msvc/r/fftease.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Max Debug|Win32"
- OutputDirectory=".\max-msvc/d"
- IntermediateDirectory=".\max-msvc/d"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="F:\prog\audio\MaxWinSDK\c74support\max-includes,F:\prog\audio\MaxWinSDK\c74support\msp-includes,f:\prog\max\flext\source"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;FLEXT_SYS=1"
- StringPooling="TRUE"
- RuntimeLibrary="4"
- StructMemberAlignment="2"
- EnableFunctionLevelLinking="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile="$(outdir)/fftease.pch"
- AssemblerListingLocation="$(outdir)/"
- ObjectFile="$(outdir)/"
- ProgramDataBaseFileName="$(outdir)/"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="maxapi.lib maxaudio.lib flext_d-maxwin.lib"
- OutputFile="$(outdir)/fftease.mxe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="&quot;F:\prog\audio\MaxWinSDK\c74support\msp-includes\win-includes\debug&quot;;&quot;F:\prog\audio\MaxWinSDK\c74support\max-includes\win-includes\debug&quot;,f:\prog\max\flext\max-msvc"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(outdir)/fftease.pdb"
- ImportLibrary="$(outdir)/fftease.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\pd-msvc/r/fftease.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="pv-lib"
- Filter="">
- <File
- RelativePath="src\convert.c">
- <FileConfiguration
- Name="Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="src\fft.c">
- <FileConfiguration
- Name="Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="src\fft4.c">
- <FileConfiguration
- Name="Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="src\fold.c">
- <FileConfiguration
- Name="Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="src\leanconvert.c">
- <FileConfiguration
- Name="Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="src\makewindows.c">
- <FileConfiguration
- Name="Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="src\pv.h">
- </File>
- </Filter>
- <Filter
- Name="objects"
- Filter="">
- <File
- RelativePath="src\burrow~.cpp">
- <FileConfiguration
- Name="Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="src\cross~.cpp">
- <FileConfiguration
- Name="Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="src\dentist~.cpp">
- <FileConfiguration
- Name="Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="src\disarray~.cpp">
- <FileConfiguration
- Name="Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="src\drown~.cpp">
- <FileConfiguration
- Name="Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="src\ether~.cpp">
- <FileConfiguration
- Name="Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="src\morphine~.cpp">
- <FileConfiguration
- Name="Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="src\pvoc~.cpp">
- <FileConfiguration
- Name="Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="src\scrape~.cpp">
- <FileConfiguration
- Name="Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="src\shapee~.cpp">
- <FileConfiguration
- Name="Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="src\swinger~.cpp">
- <FileConfiguration
- Name="Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="src\taint~.cpp">
- <FileConfiguration
- Name="Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="src\thresher~.cpp">
- <FileConfiguration
- Name="Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="src\vacancy~.cpp">
- <FileConfiguration
- Name="Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="src\xsyn~.cpp">
- <FileConfiguration
- Name="Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- </File>
- </Filter>
- <Filter
- Name="doc"
- Filter="">
- <File
- RelativePath="gpl.txt">
- </File>
- <File
- RelativePath="license.txt">
- </File>
- <File
- RelativePath="readme.txt">
- </File>
- </Filter>
- <Filter
- Name="ori.jmax"
- Filter="">
- <File
- RelativePath="ori.jmax\burrow~.c">
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="ori.jmax\cross~.c">
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="ori.jmax\dentist~.c">
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="ori.jmax\disarray~.c">
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="ori.jmax\drown~.c">
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="ori.jmax\ether~.c">
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="ori.jmax\FFTease.c">
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="ori.jmax\morphine~.c">
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="ori.jmax\pvcompand~.c">
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="ori.jmax\pvoc~.c">
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="ori.jmax\scrape~.c">
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="ori.jmax\shapee~.c">
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="ori.jmax\swinger~.c">
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="ori.jmax\taint~.c">
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="ori.jmax\thresher~.c">
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="ori.jmax\vacancy~.c">
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="ori.jmax\xsyn~.c">
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- <Filter
- Name="pv"
- Filter="">
- <File
- RelativePath="ori.jmax\convert.c">
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="ori.jmax\convert_new.c">
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="ori.jmax\fft.c">
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="ori.jmax\fft4.c">
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="ori.jmax\fold.c">
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="ori.jmax\leanconvert.c">
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="ori.jmax\leanunconvert.c">
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="ori.jmax\makewindows.c">
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="ori.jmax\overlapadd.c">
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="ori.jmax\pv.h">
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCustomBuildTool"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCustomBuildTool"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCustomBuildTool"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCustomBuildTool"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="ori.jmax\unconvert.c">
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- </Filter>
- </Filter>
- <Filter
- Name="ori.maxmsp"
- Filter="">
- <File
- RelativePath="ori.max\burrow~.c">
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="ori.max\cross-opt~.c">
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="ori.max\dentist~.c">
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="ori.max\denude~.c">
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="ori.max\disarray~.c">
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="ori.max\ether~.c">
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="ori.max\fxsyn~.c">
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="ori.max\morphine~.c">
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="ori.max\multyQ_opt~.c">
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="ori.max\nacho_opt~.c">
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="ori.max\pvcompand_opt~.c">
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="ori.max\pvcompand~.c">
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="ori.max\pvharm~.c">
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="ori.max\pvoc_opt~.c">
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="ori.max\pvoc~.c">
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="ori.max\residency~.c">
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="ori.max\scrape_opt~.c">
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="ori.max\scrape~.c">
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="ori.max\shapee_opt~.c">
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="ori.max\swinger_opt~.c">
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="ori.max\swinger~.c">
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="ori.max\taint~.c">
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="ori.max\thresher_opt~.c">
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="ori.max\thresher~.c">
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="ori.max\vacancy~.c">
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="ori.max\xsyn-opt~.c">
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath="src\fftease.cpp">
- <FileConfiguration
- Name="Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="src\main.cpp">
- <FileConfiguration
- Name="Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="src\main.h">
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/externals/grill/fftease/gpl.txt b/externals/grill/fftease/gpl.txt
deleted file mode 100644
index 5ea29a7d..00000000
--- a/externals/grill/fftease/gpl.txt
+++ /dev/null
@@ -1,346 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) 19yy <name of author>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) 19yy name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Library General
-Public License instead of this License.
-
diff --git a/externals/grill/fftease/license.txt b/externals/grill/fftease/license.txt
deleted file mode 100644
index 501b0d7a..00000000
--- a/externals/grill/fftease/license.txt
+++ /dev/null
@@ -1,86 +0,0 @@
-FFTease - A set of Live Spectral Processors
-Originally written by Eric Lyon and Christopher Penrose for the Max/MSP platform
-
-Copyright (c)Thomas Grill (xovo@gmx.net)
-
----------------------------------------------------------
-
-Please note that this license only applies to the core FFTease objects,
-but *NOT* the sources of the pv-lib.
-The pv-lib is instead free for everyone to use as (s)he wants.
-
----------------------------------------------------------
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-In the official fftease distribution, the GNU General Public License is
-in the file gpl.txt
-
----------------------------------------------------------
-
- OTHER COPYRIGHT NOTICES
-
----------------------------------------------------------
-
-
---- FFtease jMax port --------------------------------------
-
-This is FFTease, a set of live spectral processors.
-
-FFTease was originally designed & programmed by
-Eric Lyon Web: http://arcana.dartmouth.edu/~eric/
- eMail: mailto:Eric.Lyon@Dartmouth.EDU
-Christopher Web: http://www.sfc.keio.ac.jp/~penrose/
- eMail: mailto:penrose@sfc.keio.ac.jp
-
-NOTE! The original FFTease package for the MAX/MSP platform is *NOT*
- under the GPL !!
- However, Eric and Christoph gave me friendly permission to
- port this really nice packagee to jMax and put
- *ONLY THE jMax FFTease SOURCE'S* undert the GPL.
- (for the GPL see the file LICENSE.TXT)
- Thanks to you !
-
-FFTease uses the pv-lib, which is used by this this release.
-NOTE! The pv-lib is *NOT* under the GPL.
- Rather it *IS FREE* to use by anyone as (s)he decides !!
-The pv-lib is also written by E. Lyon and Ch. Penrose.
-
-The port of these objects to the jMax system is done by
-Christian Klippel Web: http://mamalala.de
-
-
-
---- flext ----------------------------------------------
-flext - C++ layer for Max/MSP and pd (pure data) externals
-Copyright (C) 2001-2003 Thomas Grill
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-In the official flext distribution, the GNU General Public License is
-in the file gpl.txt
-
diff --git a/externals/grill/fftease/maxmsp/burrow~.help b/externals/grill/fftease/maxmsp/burrow~.help
deleted file mode 100755
index 52b9819f..00000000
--- a/externals/grill/fftease/maxmsp/burrow~.help
+++ /dev/null
Binary files differ
diff --git a/externals/grill/fftease/maxmsp/cross~.help b/externals/grill/fftease/maxmsp/cross~.help
deleted file mode 100755
index c6b5f598..00000000
--- a/externals/grill/fftease/maxmsp/cross~.help
+++ /dev/null
Binary files differ
diff --git a/externals/grill/fftease/maxmsp/dentist~.help b/externals/grill/fftease/maxmsp/dentist~.help
deleted file mode 100755
index 4db546af..00000000
--- a/externals/grill/fftease/maxmsp/dentist~.help
+++ /dev/null
Binary files differ
diff --git a/externals/grill/fftease/maxmsp/disarray~.help b/externals/grill/fftease/maxmsp/disarray~.help
deleted file mode 100755
index 40c0d830..00000000
--- a/externals/grill/fftease/maxmsp/disarray~.help
+++ /dev/null
Binary files differ
diff --git a/externals/grill/fftease/maxmsp/drown~.help b/externals/grill/fftease/maxmsp/drown~.help
deleted file mode 100755
index 7d18de3e..00000000
--- a/externals/grill/fftease/maxmsp/drown~.help
+++ /dev/null
Binary files differ
diff --git a/externals/grill/fftease/maxmsp/ether~.help b/externals/grill/fftease/maxmsp/ether~.help
deleted file mode 100755
index 5c78816a..00000000
--- a/externals/grill/fftease/maxmsp/ether~.help
+++ /dev/null
Binary files differ
diff --git a/externals/grill/fftease/maxmsp/fftease-objectmappings.txt b/externals/grill/fftease/maxmsp/fftease-objectmappings.txt
deleted file mode 100644
index d75f6194..00000000
--- a/externals/grill/fftease/maxmsp/fftease-objectmappings.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-max objectfile burrow~ fftease;
-max objectfile cross~ fftease;
-max objectfile dentist~ fftease;
-max objectfile disarray~ fftease;
-max objectfile drown~ fftease;
-max objectfile ether~ fftease;
-max objectfile morphine~ fftease;
-max objectfile scrape~ fftease;
-max objectfile shapee~ fftease;
-max objectfile swinger~ fftease;
-max objectfile taint~ fftease;
-max objectfile thresher~ fftease;
-max objectfile vacancy~ fftease;
-max objectfile xsyn~ fftease;
-
-max oblist FFTease burrow~;
-max oblist FFTease cross~;
-max oblist FFTease dentist~;
-max oblist FFTease disarray~;
-max oblist FFTease drown~;
-max oblist FFTease ether~;
-max oblist FFTease morphine~;
-max oblist FFTease scrape~;
-max oblist FFTease shapee~;
-max oblist FFTease swinger~;
-max oblist FFTease taint~;
-max oblist FFTease thresher~;
-max oblist FFTease vacancy~;
-max oblist FFTease xsyn~;
diff --git a/externals/grill/fftease/maxmsp/fftease4.PICT b/externals/grill/fftease/maxmsp/fftease4.PICT
deleted file mode 100755
index cb2a1502..00000000
--- a/externals/grill/fftease/maxmsp/fftease4.PICT
+++ /dev/null
Binary files differ
diff --git a/externals/grill/fftease/media/nixon.aiff b/externals/grill/fftease/media/nixon.aiff
deleted file mode 100644
index 3a58dc2b..00000000
--- a/externals/grill/fftease/media/nixon.aiff
+++ /dev/null
Binary files differ
diff --git a/externals/grill/fftease/media/schubert.aiff b/externals/grill/fftease/media/schubert.aiff
deleted file mode 100644
index 5e72ffc3..00000000
--- a/externals/grill/fftease/media/schubert.aiff
+++ /dev/null
Binary files differ
diff --git a/externals/grill/fftease/package.txt b/externals/grill/fftease/package.txt
deleted file mode 100644
index 997116e6..00000000
--- a/externals/grill/fftease/package.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-NAME=fftease
-
-SRCDIR=src
-PRECOMPILE=main.h
-
-SRCS= \
- makewindows.c fold.c convert.c leanconvert.c fft4.c fft.c \
- main.cpp fftease.cpp \
- burrow~.cpp cross~.cpp dentist~.cpp disarray~.cpp drown~.cpp ether~.cpp \
- morphine~.cpp scrape~.cpp shapee~.cpp swinger~.cpp taint~.cpp \
- thresher~.cpp vacancy~.cpp xsyn~.cpp
-
-HDRS= \
- pv.h main.h
-
diff --git a/externals/grill/fftease/pd/burrow~-help.pd b/externals/grill/fftease/pd/burrow~-help.pd
deleted file mode 100644
index e4adade1..00000000
--- a/externals/grill/fftease/pd/burrow~-help.pd
+++ /dev/null
@@ -1,90 +0,0 @@
-#N canvas 143 237 600 366 12;
-#X msg 17 161 getattributes;
-#X obj 391 278 print A;
-#X obj 161 210 burrow~ -30 -18 0;
-#X obj 17 78 tgl 20 1 empty empty enable_dsp 0 -6 0 10 -225271 -1 -1
-1 1;
-#X msg 17 103 enable \$1;
-#X obj 211 78 tgl 20 0 empty empty inverse_filtering 0 -6 0 10 -225271
--1 -1 0 1;
-#X msg 211 102 invert \$1;
-#X obj 373 78 nbx 5 18 -100 0 0 1 empty empty filtering_threshold(dB)
-0 -6 0 10 -225271 -1 -1 -30 256;
-#X msg 373 100 thresh \$1;
-#X obj 374 145 nbx 5 18 -100 0 0 1 empty empty filter_multiplier(dB)
-0 -6 0 10 -225271 -1 -1 -18 256;
-#X msg 374 167 mult \$1;
-#X obj 161 275 *~;
-#X obj 202 280 hsl 128 15 0.001 10 1 1 empty empty volume -2 -6 0 10
--261681 -1 -1 10000 1;
-#X obj 150 312 dac~;
-#X text 390 297 print attributes;
-#X text 15 143 list attributes;
-#X obj 16 8 cnv 15 550 40 empty empty burrow~ 10 22 0 24 -260818 -1
-0;
-#X text 188 8 FFTease (C)Lyon \, Penrose (for Max/MSP);
-#X text 188 28 flext port by Thomas Grill;
-#X text 222 231 threshold \, multiplier \, invert;
-#X obj 138 80 bng 25 250 50 0 empty empty start 0 -6 0 8 -261689 -1
--1;
-#N canvas 35 47 456 306 schubert 0;
-#X obj 51 234 outlet~;
-#X obj 51 188 readsf~ 1;
-#X obj 51 19 inlet;
-#X msg 27 80 1;
-#X obj 52 115 t f b;
-#X obj 51 44 route bang 1 0;
-#X msg 86 149 open ../media/schubert.aiff;
-#X connect 1 0 0 0;
-#X connect 2 0 5 0;
-#X connect 3 0 4 0;
-#X connect 4 0 1 0;
-#X connect 4 1 6 0;
-#X connect 5 0 3 0;
-#X connect 5 1 4 0;
-#X connect 5 2 1 0;
-#X connect 6 0 1 0;
-#X restore 233 172 pd schubert;
-#N canvas 35 47 460 310 nixon 0;
-#X obj 51 234 outlet~;
-#X obj 51 188 readsf~ 1;
-#X obj 51 19 inlet;
-#X msg 27 80 1;
-#X obj 52 115 t f b;
-#X obj 51 44 route bang 1 0;
-#X msg 86 149 open ../media/nixon.aiff;
-#X connect 1 0 0 0;
-#X connect 2 0 5 0;
-#X connect 3 0 4 0;
-#X connect 4 0 1 0;
-#X connect 4 1 6 0;
-#X connect 5 0 3 0;
-#X connect 5 1 4 0;
-#X connect 5 2 1 0;
-#X connect 6 0 1 0;
-#X restore 161 172 pd nixon;
-#X msg 17 259 getthresh;
-#X msg 17 284 getmult;
-#X msg 17 234 getinvert;
-#X text 15 213 get attributes;
-#X connect 0 0 2 0;
-#X connect 2 0 11 0;
-#X connect 2 1 1 0;
-#X connect 3 0 4 0;
-#X connect 4 0 2 0;
-#X connect 5 0 6 0;
-#X connect 6 0 2 0;
-#X connect 7 0 8 0;
-#X connect 8 0 2 0;
-#X connect 9 0 10 0;
-#X connect 10 0 2 0;
-#X connect 11 0 13 0;
-#X connect 11 0 13 1;
-#X connect 12 0 11 1;
-#X connect 20 0 21 0;
-#X connect 20 0 22 0;
-#X connect 21 0 2 1;
-#X connect 22 0 2 0;
-#X connect 23 0 2 0;
-#X connect 24 0 2 0;
-#X connect 25 0 2 0;
diff --git a/externals/grill/fftease/pd/cross~-help.pd b/externals/grill/fftease/pd/cross~-help.pd
deleted file mode 100644
index 593927c7..00000000
--- a/externals/grill/fftease/pd/cross~-help.pd
+++ /dev/null
@@ -1,88 +0,0 @@
-#N canvas 275 53 604 370 12;
-#X obj 17 78 tgl 20 1 empty empty enable_dsp 0 -6 0 10 -225271 -1 -1
-1 1;
-#X msg 17 103 enable \$1;
-#X obj 312 84 nbx 5 18 -100 0 0 1 empty empty threshold(dB) 0 -6 0
-10 -225271 -1 -1 -86 256;
-#X obj 161 275 *~;
-#X obj 202 280 hsl 128 15 0.001 10 1 1 empty empty volume -2 -6 0 10
--261681 -1 -1 11800 1;
-#X obj 150 312 dac~;
-#X obj 16 8 cnv 15 550 40 empty empty cross~ 10 22 0 24 -260818 -1
-0;
-#X text 188 8 FFTease (C)Lyon \, Penrose (for Max/MSP);
-#X text 188 28 flext port by Thomas Grill;
-#X obj 161 210 cross~;
-#X obj 312 161 sig~;
-#X obj 311 113 + 100;
-#X obj 312 136 dbtorms;
-#X obj 161 80 bng 25 250 50 0 empty empty start 0 -6 0 8 -261689 -1
--1;
-#N canvas 35 47 456 306 schubert 0;
-#X obj 51 234 outlet~;
-#X obj 51 188 readsf~ 1;
-#X obj 51 19 inlet;
-#X msg 27 80 1;
-#X obj 52 115 t f b;
-#X obj 51 44 route bang 1 0;
-#X msg 86 149 open ../media/schubert.aiff;
-#X connect 1 0 0 0;
-#X connect 2 0 5 0;
-#X connect 3 0 4 0;
-#X connect 4 0 1 0;
-#X connect 4 1 6 0;
-#X connect 5 0 3 0;
-#X connect 5 1 4 0;
-#X connect 5 2 1 0;
-#X connect 6 0 1 0;
-#X restore 162 175 pd schubert;
-#N canvas 35 47 460 310 nixon 0;
-#X obj 51 234 outlet~;
-#X obj 51 188 readsf~ 1;
-#X obj 51 19 inlet;
-#X msg 27 80 1;
-#X obj 52 115 t f b;
-#X obj 51 44 route bang 1 0;
-#X msg 86 149 open ../media/nixon.aiff;
-#X connect 1 0 0 0;
-#X connect 2 0 5 0;
-#X connect 3 0 4 0;
-#X connect 4 0 1 0;
-#X connect 4 1 6 0;
-#X connect 5 0 3 0;
-#X connect 5 1 4 0;
-#X connect 5 2 1 0;
-#X connect 6 0 1 0;
-#X restore 183 142 pd nixon;
-#X msg 17 161 getattributes;
-#X text 15 143 list attributes;
-#X text 15 215 get attributes;
-#X obj 445 85 tgl 25 1 empty empty memorize 0 -6 0 10 -225271 -1 -1
-1 1;
-#X text 371 182 partials below the threshold;
-#X text 370 200 are taken from the previous;
-#X text 370 216 frame;
-#X obj 391 278 print A;
-#X text 390 297 print attributes;
-#X msg 17 234 getmemorize;
-#X text 373 165 memorize defaults to 1;
-#X msg 445 117 memorize \$1;
-#X connect 0 0 1 0;
-#X connect 1 0 9 0;
-#X connect 2 0 11 0;
-#X connect 3 0 5 0;
-#X connect 3 0 5 1;
-#X connect 4 0 3 1;
-#X connect 9 0 3 0;
-#X connect 9 1 23 0;
-#X connect 10 0 9 2;
-#X connect 11 0 12 0;
-#X connect 12 0 10 0;
-#X connect 13 0 14 0;
-#X connect 13 0 15 0;
-#X connect 14 0 9 0;
-#X connect 15 0 9 1;
-#X connect 16 0 9 0;
-#X connect 19 0 27 0;
-#X connect 25 0 9 0;
-#X connect 27 0 9 0;
diff --git a/externals/grill/fftease/pd/dentist~-help.pd b/externals/grill/fftease/pd/dentist~-help.pd
deleted file mode 100644
index 7434e57a..00000000
--- a/externals/grill/fftease/pd/dentist~-help.pd
+++ /dev/null
@@ -1,65 +0,0 @@
-#N canvas 45 260 600 366 12;
-#X obj 17 78 tgl 20 1 empty empty enable_dsp 0 -6 0 10 -225271 -1 -1
-1 1;
-#X msg 17 103 enable \$1;
-#X obj 417 91 nbx 5 18 0 20000 0 0 empty empty knee_frq 0 -6 0 10 -225271
--1 -1 0 256;
-#X obj 211 272 *~;
-#X obj 252 277 hsl 128 15 0.001 10 1 1 empty empty volume -2 -6 0 10
--261681 -1 -1 10200 1;
-#X obj 200 309 dac~;
-#X obj 16 8 cnv 15 550 40 empty empty dentist~ 10 22 0 24 -260818 -1
-0;
-#X text 198 8 FFTease (C)Lyon \, Penrose (for Max/MSP);
-#X text 198 28 flext port by Thomas Grill;
-#X msg 14 181 getattributes;
-#X obj 432 255 print A;
-#X obj 337 90 bng 25 250 50 0 empty empty reshuffle 0 -6 0 8 -225271
--1 -1;
-#X msg 417 123 knee \$1;
-#X obj 495 91 nbx 5 18 0 1000 0 0 empty empty teeth 0 -6 0 10 -225271
--1 -1 0 256;
-#X msg 495 123 teeth \$1;
-#X text 348 209 knee frq. \, teeth;
-#X obj 211 208 dentist~ 1000 10;
-#X text 14 164 list attributes;
-#X obj 212 92 bng 25 250 50 0 empty empty start 0 -6 0 8 -261689 -1
--1;
-#N canvas 35 47 456 306 schubert 0;
-#X obj 51 234 outlet~;
-#X obj 51 188 readsf~ 1;
-#X obj 51 19 inlet;
-#X msg 27 80 1;
-#X obj 52 115 t f b;
-#X obj 51 44 route bang 1 0;
-#X msg 86 149 open ../media/schubert.aiff;
-#X connect 1 0 0 0;
-#X connect 2 0 5 0;
-#X connect 3 0 4 0;
-#X connect 4 0 1 0;
-#X connect 4 1 6 0;
-#X connect 5 0 3 0;
-#X connect 5 1 4 0;
-#X connect 5 2 1 0;
-#X connect 6 0 1 0;
-#X restore 212 156 pd schubert;
-#X text 15 222 get attributes;
-#X msg 15 239 getknee;
-#X msg 15 267 getteeth;
-#X connect 0 0 1 0;
-#X connect 1 0 16 0;
-#X connect 2 0 12 0;
-#X connect 3 0 5 0;
-#X connect 3 0 5 1;
-#X connect 4 0 3 1;
-#X connect 9 0 16 0;
-#X connect 11 0 16 0;
-#X connect 12 0 16 0;
-#X connect 13 0 14 0;
-#X connect 14 0 16 0;
-#X connect 16 0 3 0;
-#X connect 16 1 10 0;
-#X connect 18 0 19 0;
-#X connect 19 0 16 0;
-#X connect 21 0 16 0;
-#X connect 22 0 16 0;
diff --git a/externals/grill/fftease/pd/disarray~-help.pd b/externals/grill/fftease/pd/disarray~-help.pd
deleted file mode 100644
index b07a619d..00000000
--- a/externals/grill/fftease/pd/disarray~-help.pd
+++ /dev/null
@@ -1,67 +0,0 @@
-#N canvas 68 275 606 372 12;
-#X obj 17 78 tgl 20 1 empty empty enable_dsp 0 -6 0 10 -225271 -1 -1
-1 1;
-#X msg 17 103 enable \$1;
-#X obj 369 88 nbx 5 18 0 20000 0 1 empty empty knee_frq 0 -6 0 10 -225271
--1 -1 1300 256;
-#X obj 211 272 *~;
-#X obj 252 277 hsl 128 15 0.001 10 1 1 empty empty volume -2 -6 0 10
--261681 -1 -1 9600 1;
-#X obj 200 309 dac~;
-#X obj 16 8 cnv 15 550 40 empty empty disarray~ 10 22 0 24 -260818
--1 0;
-#X text 206 7 FFTease (C)Lyon \, Penrose (for Max/MSP);
-#X text 206 27 flext port by Thomas Grill;
-#X msg 14 181 getattributes;
-#X obj 427 281 print A;
-#X text 14 164 list attributes;
-#X obj 211 217 disarray~ 1300 0 20;
-#X obj 281 89 bng 25 250 50 0 empty empty reshuffle 0 -6 0 10 -225271
--1 -1;
-#X obj 454 88 nbx 5 18 0 1000 0 1 empty empty shuffle_count 0 -6 0
-10 -225271 -1 -1 20 256;
-#X text 424 300 attributes;
-#X text 15 219 get attributes;
-#X obj 207 89 bng 25 250 50 0 empty empty start 0 -6 0 8 -261689 -1
--1;
-#N canvas 35 47 456 306 schubert 0;
-#X obj 51 234 outlet~;
-#X obj 51 188 readsf~ 1;
-#X obj 51 19 inlet;
-#X msg 27 80 1;
-#X obj 52 115 t f b;
-#X obj 51 44 route bang 1 0;
-#X msg 86 149 open ../media/schubert.aiff;
-#X connect 1 0 0 0;
-#X connect 2 0 5 0;
-#X connect 3 0 4 0;
-#X connect 4 0 1 0;
-#X connect 4 1 6 0;
-#X connect 5 0 3 0;
-#X connect 5 1 4 0;
-#X connect 5 2 1 0;
-#X connect 6 0 1 0;
-#X restore 212 154 pd schubert;
-#X msg 369 120 knee \$1;
-#X msg 454 120 partials \$1;
-#X msg 15 238 getknee;
-#X msg 16 263 getpartials;
-#X text 292 199 knee frq \, quality \, partials;
-#X text 367 218 (these are the defaults);
-#X connect 0 0 1 0;
-#X connect 1 0 12 0;
-#X connect 2 0 19 0;
-#X connect 3 0 5 0;
-#X connect 3 0 5 1;
-#X connect 4 0 3 1;
-#X connect 9 0 12 0;
-#X connect 12 0 3 0;
-#X connect 12 1 10 0;
-#X connect 13 0 12 0;
-#X connect 14 0 20 0;
-#X connect 17 0 18 0;
-#X connect 18 0 12 0;
-#X connect 19 0 12 0;
-#X connect 20 0 12 0;
-#X connect 21 0 12 0;
-#X connect 22 0 12 0;
diff --git a/externals/grill/fftease/pd/drown~-help.pd b/externals/grill/fftease/pd/drown~-help.pd
deleted file mode 100644
index 2e492311..00000000
--- a/externals/grill/fftease/pd/drown~-help.pd
+++ /dev/null
@@ -1,61 +0,0 @@
-#N canvas 140 138 612 378 12;
-#X obj 17 90 tgl 20 1 empty empty enable_dsp 0 -6 0 10 -225271 -1 -1
-1 1;
-#X msg 17 115 enable \$1;
-#X obj 166 272 *~;
-#X obj 207 277 hsl 128 15 0.001 1000 1 1 empty empty volume -2 -6 0
-10 -261681 -1 -1 9700 1;
-#X obj 155 309 dac~;
-#X obj 16 8 cnv 15 550 40 empty empty drown~ 10 22 0 24 -260818 -1
-0;
-#X text 206 7 FFTease (C)Lyon \, Penrose (for Max/MSP);
-#X text 206 27 flext port by Thomas Grill;
-#X obj 294 97 nbx 5 18 -100 0 0 1 empty empty threshold 0 -6 0 10 -225271
--1 -1 -75 256;
-#X obj 166 88 bng 25 250 50 0 empty empty start 0 -6 0 8 -261689 -1
--1;
-#N canvas 35 47 456 306 schubert 0;
-#X obj 51 234 outlet~;
-#X obj 51 188 readsf~ 1;
-#X obj 51 19 inlet;
-#X msg 27 80 1;
-#X obj 52 115 t f b;
-#X obj 51 44 route bang 1 0;
-#X msg 86 149 open ../media/schubert.aiff;
-#X connect 1 0 0 0;
-#X connect 2 0 5 0;
-#X connect 3 0 4 0;
-#X connect 4 0 1 0;
-#X connect 4 1 6 0;
-#X connect 5 0 3 0;
-#X connect 5 1 4 0;
-#X connect 5 2 1 0;
-#X connect 6 0 1 0;
-#X restore 166 126 pd schubert;
-#X obj 166 217 drown~;
-#X obj 384 174 sig~ 1;
-#X obj 385 99 nbx 5 18 -100 10 0 1 empty empty multiplication_factor
-0 -6 0 10 -225271 -1 -1 -18 256;
-#X obj 292 175 sig~ 1;
-#X obj 294 125 + 100;
-#X obj 385 125 + 100;
-#X obj 385 148 dbtorms;
-#X obj 293 149 dbtorms;
-#X obj 405 324 denude~;
-#X text 403 345 alternative naming;
-#X connect 0 0 1 0;
-#X connect 1 0 11 0;
-#X connect 2 0 4 0;
-#X connect 2 0 4 1;
-#X connect 3 0 2 1;
-#X connect 8 0 15 0;
-#X connect 9 0 10 0;
-#X connect 10 0 11 0;
-#X connect 11 0 2 0;
-#X connect 12 0 11 2;
-#X connect 13 0 16 0;
-#X connect 14 0 11 1;
-#X connect 15 0 18 0;
-#X connect 16 0 17 0;
-#X connect 17 0 12 0;
-#X connect 18 0 14 0;
diff --git a/externals/grill/fftease/pd/ether~-help.pd b/externals/grill/fftease/pd/ether~-help.pd
deleted file mode 100644
index 720fe466..00000000
--- a/externals/grill/fftease/pd/ether~-help.pd
+++ /dev/null
@@ -1,84 +0,0 @@
-#N canvas 140 138 602 368 12;
-#X obj 17 78 tgl 20 1 empty empty enable_dsp 0 -6 0 10 -225271 -1 -1
-1 1;
-#X msg 17 103 enable \$1;
-#X obj 211 272 *~;
-#X obj 252 277 hsl 128 15 0.001 10 1 1 empty empty volume -2 -6 0 10
--261681 -1 -1 8600 1;
-#X obj 200 309 dac~;
-#X obj 16 8 cnv 15 550 40 empty empty ether~ 10 22 0 24 -260818 -1
-0;
-#X text 206 7 FFTease (C)Lyon \, Penrose (for Max/MSP);
-#X text 206 27 flext port by Thomas Grill;
-#X msg 14 181 getattributes;
-#X obj 427 281 print A;
-#X text 14 164 list attributes;
-#X obj 499 84 nbx 5 18 0 1000 0 0 empty empty index 0 -6 0 10 -225271
--1 -1 22 256;
-#X text 424 300 attributes;
-#X msg 387 117 invert \$1;
-#X obj 387 83 tgl 25 0 empty empty invert 0 -6 0 8 -225271 -1 -1 0
-1;
-#X msg 499 116 index \$1;
-#X obj 211 217 ether~ 1;
-#X text 287 212 quality \, invert \, index;
-#X obj 211 88 bng 25 250 50 0 empty empty start 0 -6 0 8 -261689 -1
--1;
-#N canvas 35 47 456 306 schubert 0;
-#X obj 51 234 outlet~;
-#X obj 51 188 readsf~ 1;
-#X obj 51 19 inlet;
-#X msg 27 80 1;
-#X obj 52 115 t f b;
-#X obj 51 44 route bang 1 0;
-#X msg 86 149 open ../media/schubert.aiff;
-#X connect 1 0 0 0;
-#X connect 2 0 5 0;
-#X connect 3 0 4 0;
-#X connect 4 0 1 0;
-#X connect 4 1 6 0;
-#X connect 5 0 3 0;
-#X connect 5 1 4 0;
-#X connect 5 2 1 0;
-#X connect 6 0 1 0;
-#X restore 271 172 pd schubert;
-#N canvas 35 47 460 310 nixon 0;
-#X obj 51 234 outlet~;
-#X obj 51 188 readsf~ 1;
-#X obj 51 19 inlet;
-#X msg 27 80 1;
-#X obj 52 115 t f b;
-#X obj 51 44 route bang 1 0;
-#X msg 86 149 open ../media/nixon.aiff;
-#X connect 1 0 0 0;
-#X connect 2 0 5 0;
-#X connect 3 0 4 0;
-#X connect 4 0 1 0;
-#X connect 4 1 6 0;
-#X connect 5 0 3 0;
-#X connect 5 1 4 0;
-#X connect 5 2 1 0;
-#X connect 6 0 1 0;
-#X restore 212 148 pd nixon;
-#X text 15 213 get attributes;
-#X msg 15 230 getinvert;
-#X msg 16 259 getindex;
-#X text 287 228 (defaults are 0 \, 0 \, 0);
-#X connect 0 0 1 0;
-#X connect 1 0 16 0;
-#X connect 2 0 4 0;
-#X connect 2 0 4 1;
-#X connect 3 0 2 1;
-#X connect 8 0 16 0;
-#X connect 11 0 15 0;
-#X connect 13 0 16 0;
-#X connect 14 0 13 0;
-#X connect 15 0 16 0;
-#X connect 16 0 2 0;
-#X connect 16 1 9 0;
-#X connect 18 0 19 0;
-#X connect 18 0 20 0;
-#X connect 19 0 16 1;
-#X connect 20 0 16 0;
-#X connect 22 0 16 0;
-#X connect 23 0 16 0;
diff --git a/externals/grill/fftease/pd/morphine~-help.pd b/externals/grill/fftease/pd/morphine~-help.pd
deleted file mode 100644
index b8ae6f2f..00000000
--- a/externals/grill/fftease/pd/morphine~-help.pd
+++ /dev/null
@@ -1,77 +0,0 @@
-#N canvas 140 138 606 372 12;
-#X obj 17 78 tgl 20 1 empty empty enable_dsp 0 -6 0 10 -225271 -1 -1
-1 1;
-#X msg 17 103 enable \$1;
-#X obj 211 272 *~;
-#X obj 252 277 hsl 128 15 0.001 10 1 1 empty empty volume -2 -6 0 10
--261681 -1 -1 10000 1;
-#X obj 200 309 dac~;
-#X obj 16 8 cnv 15 550 40 empty empty morphine~ 10 22 0 24 -260818
--1 0;
-#X text 206 7 FFTease (C)Lyon \, Penrose (for Max/MSP);
-#X text 206 27 flext port by Thomas Grill;
-#X msg 14 181 getattributes;
-#X obj 427 281 print A;
-#X text 14 164 list attributes;
-#X obj 414 86 nbx 5 18 0.001 1 1 1 empty empty index 0 -6 0 10 -225271
--1 -1 0.001 256;
-#X text 424 300 attributes;
-#X msg 414 110 index \$1;
-#X obj 211 88 bng 25 250 50 0 empty empty start 0 -6 0 8 -261689 -1
--1;
-#N canvas 35 47 456 306 schubert 0;
-#X obj 51 234 outlet~;
-#X obj 51 188 readsf~ 1;
-#X obj 51 19 inlet;
-#X msg 27 80 1;
-#X obj 52 115 t f b;
-#X obj 51 44 route bang 1 0;
-#X msg 86 149 open ../media/schubert.aiff;
-#X connect 1 0 0 0;
-#X connect 2 0 5 0;
-#X connect 3 0 4 0;
-#X connect 4 0 1 0;
-#X connect 4 1 6 0;
-#X connect 5 0 3 0;
-#X connect 5 1 4 0;
-#X connect 5 2 1 0;
-#X connect 6 0 1 0;
-#X restore 210 184 pd schubert;
-#N canvas 35 47 460 310 nixon 0;
-#X obj 51 234 outlet~;
-#X obj 51 188 readsf~ 1;
-#X obj 51 19 inlet;
-#X msg 27 80 1;
-#X obj 52 115 t f b;
-#X obj 51 44 route bang 1 0;
-#X msg 86 149 open ../media/nixon.aiff;
-#X connect 1 0 0 0;
-#X connect 2 0 5 0;
-#X connect 3 0 4 0;
-#X connect 4 0 1 0;
-#X connect 4 1 6 0;
-#X connect 5 0 3 0;
-#X connect 5 1 4 0;
-#X connect 5 2 1 0;
-#X connect 6 0 1 0;
-#X restore 307 186 pd nixon;
-#X text 15 215 get attributes;
-#X msg 16 234 getindex;
-#X text 477 87 (0...1);
-#X obj 211 217 morphine~ 0.05;
-#X text 336 219 index (defaults to 0);
-#X connect 0 0 1 0;
-#X connect 1 0 20 0;
-#X connect 2 0 4 0;
-#X connect 2 0 4 1;
-#X connect 3 0 2 1;
-#X connect 8 0 20 0;
-#X connect 11 0 13 0;
-#X connect 13 0 20 0;
-#X connect 14 0 15 0;
-#X connect 14 0 16 0;
-#X connect 15 0 20 0;
-#X connect 16 0 20 1;
-#X connect 18 0 20 0;
-#X connect 20 0 2 0;
-#X connect 20 1 9 0;
diff --git a/externals/grill/fftease/pd/scrape~-help.pd b/externals/grill/fftease/pd/scrape~-help.pd
deleted file mode 100644
index c99187ee..00000000
--- a/externals/grill/fftease/pd/scrape~-help.pd
+++ /dev/null
@@ -1,72 +0,0 @@
-#N canvas 140 138 606 372 12;
-#X obj 17 78 tgl 20 1 empty empty enable_dsp 0 -6 0 10 -225271 -1 -1
-1 1;
-#X msg 17 103 enable \$1;
-#X obj 211 272 *~;
-#X obj 252 277 hsl 128 15 0.001 10 1 1 empty empty volume -2 -6 0 10
--261681 -1 -1 9800 1;
-#X obj 200 309 dac~;
-#X obj 16 8 cnv 15 550 40 empty empty scrape~ 10 22 0 24 -260818 -1
-0;
-#X text 206 7 FFTease (C)Lyon \, Penrose (for Max/MSP);
-#X text 206 27 flext port by Thomas Grill;
-#X msg 14 181 getattributes;
-#X obj 427 281 print A;
-#X text 14 164 list attributes;
-#X obj 423 90 nbx 5 18 10 20000 1 1 empty empty knee 0 -6 0 10 -225271
--1 -1 1000 256;
-#X text 424 300 attributes;
-#X obj 211 88 bng 25 250 50 0 empty empty start 0 -6 0 8 -261689 -1
--1;
-#N canvas 35 47 456 306 schubert 0;
-#X obj 51 234 outlet~;
-#X obj 51 188 readsf~ 1;
-#X obj 51 19 inlet;
-#X msg 27 80 1;
-#X obj 52 115 t f b;
-#X obj 51 44 route bang 1 0;
-#X msg 86 149 open ../media/schubert.aiff;
-#X connect 1 0 0 0;
-#X connect 2 0 5 0;
-#X connect 3 0 4 0;
-#X connect 4 0 1 0;
-#X connect 4 1 6 0;
-#X connect 5 0 3 0;
-#X connect 5 1 4 0;
-#X connect 5 2 1 0;
-#X connect 6 0 1 0;
-#X restore 210 184 pd schubert;
-#X text 15 215 get attributes;
-#X obj 319 89 nbx 5 18 -100 0 0 1 empty empty multiplier 0 -6 0 10
--225271 -1 -1 -60 256;
-#X obj 318 183 sig~ 1;
-#X obj 318 116 + 100;
-#X obj 318 143 dbtorms;
-#X msg 16 234 getknee;
-#X msg 16 257 getcutoff;
-#X msg 423 114 knee \$1;
-#X obj 505 90 nbx 5 18 10 20000 1 1 empty empty cutoff 0 -6 0 10 -225271
--1 -1 2000 256;
-#X msg 505 114 cutoff \$1;
-#X obj 211 217 scrape~ 1000 2000;
-#X text 361 219 knee \, cutoff;
-#X connect 0 0 1 0;
-#X connect 1 0 25 0;
-#X connect 2 0 4 0;
-#X connect 2 0 4 1;
-#X connect 3 0 2 1;
-#X connect 8 0 25 0;
-#X connect 11 0 22 0;
-#X connect 13 0 14 0;
-#X connect 14 0 25 0;
-#X connect 16 0 18 0;
-#X connect 17 0 25 1;
-#X connect 18 0 19 0;
-#X connect 19 0 17 0;
-#X connect 20 0 25 0;
-#X connect 21 0 25 0;
-#X connect 22 0 25 0;
-#X connect 23 0 24 0;
-#X connect 24 0 25 0;
-#X connect 25 0 2 0;
-#X connect 25 1 9 0;
diff --git a/externals/grill/fftease/pd/shapee~-help.pd b/externals/grill/fftease/pd/shapee~-help.pd
deleted file mode 100644
index 75305fb0..00000000
--- a/externals/grill/fftease/pd/shapee~-help.pd
+++ /dev/null
@@ -1,62 +0,0 @@
-#N canvas 140 138 612 378 12;
-#X obj 17 78 tgl 20 1 empty empty enable_dsp 0 -6 0 10 -225271 -1 -1
-1 1;
-#X msg 17 103 enable \$1;
-#X obj 211 272 *~;
-#X obj 252 277 hsl 128 15 0.001 10 1 1 empty empty volume -2 -6 0 10
--261681 -1 -1 10700 1;
-#X obj 200 309 dac~;
-#X obj 16 8 cnv 15 550 40 empty empty shapee~ 10 22 0 24 -260818 -1
-0;
-#X text 206 7 FFTease (C)Lyon \, Penrose (for Max/MSP);
-#X text 206 27 flext port by Thomas Grill;
-#X obj 211 88 bng 25 250 50 0 empty empty start 0 -6 0 8 -261689 -1
--1;
-#N canvas 35 47 458 308 schubert 0;
-#X obj 51 234 outlet~;
-#X obj 51 188 readsf~ 1;
-#X obj 51 19 inlet;
-#X msg 27 80 1;
-#X obj 52 115 t f b;
-#X obj 51 44 route bang 1 0;
-#X msg 86 149 open ../media/schubert.aiff;
-#X connect 1 0 0 0;
-#X connect 2 0 5 0;
-#X connect 3 0 4 0;
-#X connect 4 0 1 0;
-#X connect 4 1 6 0;
-#X connect 5 0 3 0;
-#X connect 5 1 4 0;
-#X connect 5 2 1 0;
-#X connect 6 0 1 0;
-#X restore 210 184 pd schubert;
-#N canvas 35 47 460 310 nixon 0;
-#X obj 51 234 outlet~;
-#X obj 51 188 readsf~ 1;
-#X obj 51 19 inlet;
-#X msg 27 80 1;
-#X obj 52 115 t f b;
-#X obj 51 44 route bang 1 0;
-#X msg 86 149 open ../media/nixon.aiff;
-#X connect 1 0 0 0;
-#X connect 2 0 5 0;
-#X connect 3 0 4 0;
-#X connect 4 0 1 0;
-#X connect 4 1 6 0;
-#X connect 5 0 3 0;
-#X connect 5 1 4 0;
-#X connect 5 2 1 0;
-#X connect 6 0 1 0;
-#X restore 307 184 pd nixon;
-#X text 298 219 quality (defaults to 0);
-#X obj 211 217 shapee~ 1;
-#X connect 0 0 1 0;
-#X connect 1 0 12 0;
-#X connect 2 0 4 0;
-#X connect 2 0 4 1;
-#X connect 3 0 2 1;
-#X connect 8 0 9 0;
-#X connect 8 0 10 0;
-#X connect 9 0 12 0;
-#X connect 10 0 12 1;
-#X connect 12 0 2 0;
diff --git a/externals/grill/fftease/pd/swinger~-help.pd b/externals/grill/fftease/pd/swinger~-help.pd
deleted file mode 100644
index deb7058f..00000000
--- a/externals/grill/fftease/pd/swinger~-help.pd
+++ /dev/null
@@ -1,62 +0,0 @@
-#N canvas 275 53 610 376 12;
-#X obj 17 78 tgl 20 1 empty empty enable_dsp 0 -6 0 10 -225271 -1 -1
-1 1;
-#X msg 17 103 enable \$1;
-#X obj 198 275 *~;
-#X obj 239 280 hsl 128 15 0.001 10 1 1 empty empty volume -2 -6 0 10
--261681 -1 -1 10300 1;
-#X obj 187 312 dac~;
-#X obj 16 8 cnv 15 550 40 empty empty swinger~ 10 22 0 24 -260818 -1
-0;
-#X text 188 8 FFTease (C)Lyon \, Penrose (for Max/MSP);
-#X text 188 28 flext port by Thomas Grill;
-#X obj 198 80 bng 25 250 50 0 empty empty start 0 -6 0 8 -261689 -1
--1;
-#N canvas 35 47 456 306 schubert 0;
-#X obj 51 234 outlet~;
-#X obj 51 188 readsf~ 1;
-#X obj 51 19 inlet;
-#X msg 27 80 1;
-#X obj 52 115 t f b;
-#X obj 51 44 route bang 1 0;
-#X msg 86 149 open ../media/schubert.aiff;
-#X connect 1 0 0 0;
-#X connect 2 0 5 0;
-#X connect 3 0 4 0;
-#X connect 4 0 1 0;
-#X connect 4 1 6 0;
-#X connect 5 0 3 0;
-#X connect 5 1 4 0;
-#X connect 5 2 1 0;
-#X connect 6 0 1 0;
-#X restore 199 175 pd schubert;
-#N canvas 35 47 460 310 nixon 0;
-#X obj 51 234 outlet~;
-#X obj 51 188 readsf~ 1;
-#X obj 51 19 inlet;
-#X msg 27 80 1;
-#X obj 52 115 t f b;
-#X obj 51 44 route bang 1 0;
-#X msg 86 149 open ../media/nixon.aiff;
-#X connect 1 0 0 0;
-#X connect 2 0 5 0;
-#X connect 3 0 4 0;
-#X connect 4 0 1 0;
-#X connect 4 1 6 0;
-#X connect 5 0 3 0;
-#X connect 5 1 4 0;
-#X connect 5 2 1 0;
-#X connect 6 0 1 0;
-#X restore 274 144 pd nixon;
-#X obj 198 210 swinger~ 1;
-#X text 284 210 quality (defaults to 0);
-#X connect 0 0 1 0;
-#X connect 1 0 11 0;
-#X connect 2 0 4 0;
-#X connect 2 0 4 1;
-#X connect 3 0 2 1;
-#X connect 8 0 9 0;
-#X connect 8 0 10 0;
-#X connect 9 0 11 0;
-#X connect 10 0 11 1;
-#X connect 11 0 2 0;
diff --git a/externals/grill/fftease/pd/taint~-help.pd b/externals/grill/fftease/pd/taint~-help.pd
deleted file mode 100644
index 00f859af..00000000
--- a/externals/grill/fftease/pd/taint~-help.pd
+++ /dev/null
@@ -1,83 +0,0 @@
-#N canvas 140 138 614 380 12;
-#X obj 17 78 tgl 20 1 empty empty enable_dsp 0 -6 0 10 -225271 -1 -1
-1 1;
-#X msg 17 103 enable \$1;
-#X obj 211 272 *~;
-#X obj 252 277 hsl 128 15 0.001 10 1 1 empty empty volume -2 -6 0 10
--261681 -1 -1 10000 1;
-#X obj 200 309 dac~;
-#X obj 16 8 cnv 15 550 40 empty empty taint~ 10 22 0 24 -260818 -1
-0;
-#X text 206 7 FFTease (C)Lyon \, Penrose (for Max/MSP);
-#X text 206 27 flext port by Thomas Grill;
-#X msg 14 181 getattributes;
-#X obj 427 281 print A;
-#X text 14 164 list attributes;
-#X obj 480 89 nbx 5 18 -100 0 0 1 empty empty thresh 0 -6 0 10 -225271
--1 -1 -60 256;
-#X text 424 300 attributes;
-#X obj 211 88 bng 25 250 50 0 empty empty start 0 -6 0 8 -261689 -1
--1;
-#N canvas 35 47 456 306 schubert 0;
-#X obj 51 234 outlet~;
-#X obj 51 188 readsf~ 1;
-#X obj 51 19 inlet;
-#X msg 27 80 1;
-#X obj 52 115 t f b;
-#X obj 51 44 route bang 1 0;
-#X msg 86 149 open ../media/schubert.aiff;
-#X connect 1 0 0 0;
-#X connect 2 0 5 0;
-#X connect 3 0 4 0;
-#X connect 4 0 1 0;
-#X connect 4 1 6 0;
-#X connect 5 0 3 0;
-#X connect 5 1 4 0;
-#X connect 5 2 1 0;
-#X connect 6 0 1 0;
-#X restore 210 184 pd schubert;
-#N canvas 35 47 460 310 nixon 0;
-#X obj 51 234 outlet~;
-#X obj 51 188 readsf~ 1;
-#X obj 51 19 inlet;
-#X msg 27 80 1;
-#X obj 52 115 t f b;
-#X obj 51 44 route bang 1 0;
-#X msg 86 149 open ../media/nixon.aiff;
-#X connect 1 0 0 0;
-#X connect 2 0 5 0;
-#X connect 3 0 4 0;
-#X connect 4 0 1 0;
-#X connect 4 1 6 0;
-#X connect 5 0 3 0;
-#X connect 5 1 4 0;
-#X connect 5 2 1 0;
-#X connect 6 0 1 0;
-#X restore 302 185 pd nixon;
-#X text 15 215 get attributes;
-#X obj 211 217 taint~ -60 0;
-#X msg 481 125 thresh \$1;
-#X obj 391 89 tgl 25 1 empty empty invert 0 -6 0 10 -225271 -1 -1 0
-1;
-#X msg 391 125 invert \$1;
-#X msg 16 258 getthresh;
-#X msg 16 234 getinvert;
-#X text 319 217 threshold \, invert (default -10 \, 0);
-#X connect 0 0 1 0;
-#X connect 1 0 17 0;
-#X connect 2 0 4 0;
-#X connect 2 0 4 1;
-#X connect 3 0 2 1;
-#X connect 8 0 17 0;
-#X connect 11 0 18 0;
-#X connect 13 0 14 0;
-#X connect 13 0 15 0;
-#X connect 14 0 17 0;
-#X connect 15 0 17 1;
-#X connect 17 0 2 0;
-#X connect 17 1 9 0;
-#X connect 18 0 17 0;
-#X connect 19 0 20 0;
-#X connect 20 0 17 0;
-#X connect 21 0 17 0;
-#X connect 22 0 17 0;
diff --git a/externals/grill/fftease/pd/thresher~-help.pd b/externals/grill/fftease/pd/thresher~-help.pd
deleted file mode 100644
index d34d4f46..00000000
--- a/externals/grill/fftease/pd/thresher~-help.pd
+++ /dev/null
@@ -1,46 +0,0 @@
-#N canvas 140 138 585 330 12;
-#X obj 17 86 tgl 20 1 empty empty enable_dsp 0 -6 0 10 -225271 -1 -1
-1 1;
-#X msg 17 111 enable \$1;
-#X obj 219 248 *~;
-#X obj 260 253 hsl 128 15 0.001 10 1 1 empty empty volume -2 -6 0 10
--261681 -1 -1 10300 1;
-#X obj 208 285 dac~;
-#X obj 16 8 cnv 15 550 40 empty empty thresher~ 10 22 0 24 -260818
--1 0;
-#X text 206 7 FFTease (C)Lyon \, Penrose (for Max/MSP);
-#X text 206 27 flext port by Thomas Grill;
-#X obj 327 217 print A;
-#X text 391 216 attributes;
-#X obj 219 92 bng 25 250 50 0 empty empty start 0 -6 0 8 -261689 -1
--1;
-#N canvas 35 47 460 310 nixon 0;
-#X obj 51 234 outlet~;
-#X obj 51 188 readsf~ 1;
-#X obj 51 19 inlet;
-#X msg 27 80 1;
-#X obj 52 115 t f b;
-#X obj 51 44 route bang 1 0;
-#X msg 86 149 open ../media/nixon.aiff;
-#X connect 1 0 0 0;
-#X connect 2 0 5 0;
-#X connect 3 0 4 0;
-#X connect 4 0 1 0;
-#X connect 4 1 6 0;
-#X connect 5 0 3 0;
-#X connect 5 1 4 0;
-#X connect 5 2 1 0;
-#X connect 6 0 1 0;
-#X restore 219 144 pd nixon;
-#X obj 218 187 thresher~;
-#X obj 18 250 nacho~;
-#X text 17 274 alternative name;
-#X connect 0 0 1 0;
-#X connect 1 0 12 0;
-#X connect 2 0 4 0;
-#X connect 2 0 4 1;
-#X connect 3 0 2 1;
-#X connect 10 0 11 0;
-#X connect 11 0 12 0;
-#X connect 12 0 2 0;
-#X connect 12 1 8 0;
diff --git a/externals/grill/fftease/pd/vacancy~-help.pd b/externals/grill/fftease/pd/vacancy~-help.pd
deleted file mode 100644
index b191f16a..00000000
--- a/externals/grill/fftease/pd/vacancy~-help.pd
+++ /dev/null
@@ -1,97 +0,0 @@
-#N canvas 140 138 622 388 12;
-#X obj 17 78 tgl 20 1 empty empty enable_dsp 0 -6 0 10 -225271 -1 -1
-1 1;
-#X msg 17 103 enable \$1;
-#X obj 179 284 *~;
-#X obj 220 289 hsl 128 15 0.001 10 1 1 empty empty volume -2 -6 0 10
--261681 -1 -1 11000 1;
-#X obj 168 321 dac~;
-#X obj 16 8 cnv 15 550 40 empty empty vacancy~ 10 22 0 24 -260818 -1
-0;
-#X text 206 7 FFTease (C)Lyon \, Penrose (for Max/MSP);
-#X text 206 27 flext port by Thomas Grill;
-#X msg 14 181 getattributes;
-#X obj 427 293 print A;
-#X text 14 164 list attributes;
-#X obj 276 91 nbx 5 18 -100 0 0 1 empty empty threshold 0 -6 0 10 -225271
--1 -1 -31 256;
-#X text 424 312 attributes;
-#X obj 179 88 bng 25 250 50 0 empty empty start 0 -6 0 8 -261689 -1
--1;
-#N canvas 35 47 456 306 schubert 0;
-#X obj 51 234 outlet~;
-#X obj 51 188 readsf~ 1;
-#X obj 51 19 inlet;
-#X msg 27 80 1;
-#X obj 52 115 t f b;
-#X obj 51 44 route bang 1 0;
-#X msg 86 149 open ../media/schubert.aiff;
-#X connect 1 0 0 0;
-#X connect 2 0 5 0;
-#X connect 3 0 4 0;
-#X connect 4 0 1 0;
-#X connect 4 1 6 0;
-#X connect 5 0 3 0;
-#X connect 5 1 4 0;
-#X connect 5 2 1 0;
-#X connect 6 0 1 0;
-#X restore 180 174 pd schubert;
-#N canvas 35 47 460 310 nixon 0;
-#X obj 51 234 outlet~;
-#X obj 51 188 readsf~ 1;
-#X obj 51 19 inlet;
-#X msg 27 80 1;
-#X obj 52 115 t f b;
-#X obj 51 44 route bang 1 0;
-#X msg 86 149 open ../media/nixon.aiff;
-#X connect 1 0 0 0;
-#X connect 2 0 5 0;
-#X connect 3 0 4 0;
-#X connect 4 0 1 0;
-#X connect 4 1 6 0;
-#X connect 5 0 3 0;
-#X connect 5 1 4 0;
-#X connect 5 2 1 0;
-#X connect 6 0 1 0;
-#X restore 316 175 pd nixon;
-#X text 15 215 get attributes;
-#X msg 275 129 thresh \$1;
-#X obj 363 91 tgl 25 1 empty empty invert 0 -6 0 10 -225271 -1 -1 0
-1;
-#X msg 363 127 invert \$1;
-#X msg 16 235 getthresh;
-#X msg 16 259 getinvert;
-#X obj 179 203 vacancy~ -30 0 1 0;
-#X obj 451 91 tgl 25 1 empty empty use_rms 0 -6 0 10 -225271 -1 -1
-1 1;
-#X obj 520 91 tgl 25 1 empty empty swap_phase 0 -6 0 10 -225271 -1
--1 0 1;
-#X msg 451 127 rms \$1;
-#X msg 520 127 swap \$1;
-#X text 256 226 threshold \, invert \, rms \, swap;
-#X msg 16 283 getrms;
-#X msg 17 308 getswap;
-#X connect 0 0 1 0;
-#X connect 1 0 22 0;
-#X connect 2 0 4 0;
-#X connect 2 0 4 1;
-#X connect 3 0 2 1;
-#X connect 8 0 22 0;
-#X connect 11 0 17 0;
-#X connect 13 0 14 0;
-#X connect 13 0 15 0;
-#X connect 14 0 22 0;
-#X connect 15 0 22 1;
-#X connect 17 0 22 0;
-#X connect 18 0 19 0;
-#X connect 19 0 22 0;
-#X connect 20 0 22 0;
-#X connect 21 0 22 0;
-#X connect 22 0 2 0;
-#X connect 22 1 9 0;
-#X connect 23 0 25 0;
-#X connect 24 0 26 0;
-#X connect 25 0 22 0;
-#X connect 26 0 22 0;
-#X connect 28 0 22 0;
-#X connect 29 0 22 0;
diff --git a/externals/grill/fftease/pd/xsyn~-help.pd b/externals/grill/fftease/pd/xsyn~-help.pd
deleted file mode 100644
index e665bfd8..00000000
--- a/externals/grill/fftease/pd/xsyn~-help.pd
+++ /dev/null
@@ -1,61 +0,0 @@
-#N canvas 140 138 589 373 12;
-#X obj 17 78 tgl 20 1 empty empty enable_dsp 0 -6 0 10 -225271 -1 -1
-1 1;
-#X msg 17 103 enable \$1;
-#X obj 214 284 *~;
-#X obj 255 289 hsl 128 15 0.001 10 1 1 empty empty volume -2 -6 0 10
--261681 -1 -1 10500 1;
-#X obj 203 321 dac~;
-#X obj 16 8 cnv 15 550 40 empty empty xsyn~ 10 22 0 24 -260818 -1 0
-;
-#X text 206 7 FFTease (C)Lyon \, Penrose (for Max/MSP);
-#X text 206 27 flext port by Thomas Grill;
-#X obj 214 88 bng 25 250 50 0 empty empty start 0 -6 0 8 -261689 -1
--1;
-#N canvas 35 47 456 306 schubert 0;
-#X obj 51 234 outlet~;
-#X obj 51 188 readsf~ 1;
-#X obj 51 19 inlet;
-#X msg 27 80 1;
-#X obj 52 115 t f b;
-#X obj 51 44 route bang 1 0;
-#X msg 86 149 open ../media/schubert.aiff;
-#X connect 1 0 0 0;
-#X connect 2 0 5 0;
-#X connect 3 0 4 0;
-#X connect 4 0 1 0;
-#X connect 4 1 6 0;
-#X connect 5 0 3 0;
-#X connect 5 1 4 0;
-#X connect 5 2 1 0;
-#X connect 6 0 1 0;
-#X restore 215 174 pd schubert;
-#N canvas 35 47 460 310 nixon 0;
-#X obj 51 234 outlet~;
-#X obj 51 188 readsf~ 1;
-#X obj 51 19 inlet;
-#X msg 27 80 1;
-#X obj 52 115 t f b;
-#X obj 51 44 route bang 1 0;
-#X msg 86 149 open ../media/nixon.aiff;
-#X connect 1 0 0 0;
-#X connect 2 0 5 0;
-#X connect 3 0 4 0;
-#X connect 4 0 1 0;
-#X connect 4 1 6 0;
-#X connect 5 0 3 0;
-#X connect 5 1 4 0;
-#X connect 5 2 1 0;
-#X connect 6 0 1 0;
-#X restore 249 150 pd nixon;
-#X obj 214 203 xsyn~;
-#X connect 0 0 1 0;
-#X connect 1 0 11 0;
-#X connect 2 0 4 0;
-#X connect 2 0 4 1;
-#X connect 3 0 2 1;
-#X connect 8 0 9 0;
-#X connect 8 0 10 0;
-#X connect 9 0 11 0;
-#X connect 10 0 11 1;
-#X connect 11 0 2 0;
diff --git a/externals/grill/fftease/readme.txt b/externals/grill/fftease/readme.txt
deleted file mode 100644
index 64ea8f05..00000000
--- a/externals/grill/fftease/readme.txt
+++ /dev/null
@@ -1,75 +0,0 @@
-FFTease - A set of Live Spectral Processors
-Originally written by Eric Lyon and Christopher Penrose for the Max/MSP platform
-
-Copyright (c)Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-
-----------------------------------------------------------------------------
-
-BUILDING from source
---------------------
-
-You will need the flext C++ layer for PD and Max/MSP externals to compile this.
-See http://grrrr.org/ext/flext
-Download, install and compile the package.
-Afterwards you can proceed with building this external.
-
-
-pd/Max - Windows - Microsoft Visual C, Borland C++, MinGW:
-----------------------------------------------------------
-Start a command shell with your eventual build environment
-(e.g. run vcvars32.bat for Microsoft Visual Studio)
-
-then run
- ..\flext\build.bat
-(you would have to substitute ..\flext with the respective path to the flext package)
-
-
-pd/Max - OSX/Linux - GCC:
--------------------------
-From a shell run
-bash ../flext/build.sh
-(you would have to substitute ../flext with the respective path to the flext package)
-
-----------------------------------------------------------------------------
-
-PORTING NOTES:
-
-The example audio files schubert.aiff and nixon.aiff have been taken from the original FFTease package for Max/MSP.
-
-
-- pv-lib:
- - gcc (OSX) complains about _cfft being defined by pv-lib and pd.... any problems with that?
-
-- burrow:
- - max_bin calculation: fundamental frequency seems to be wrong
-
-- cross:
- - STRANGE: spectral amplitude in channel1 is undefined if gainer <= threshie
- -> value of previous frame is used then
- - (jmax) BUG: a2 for i == N2 is calculated from buffer1
- - what about the class members for "correction"?! (superfluous)
-
-- dentist:
- - tooth count ("teeth") is preserved and checked on every reshuffle
- - use different knee correction
-
-- disarray:
- - different frequency correction employed
- - max_bin calculation: fundamental frequency seems to be wrong
- - check whether freq oder number of bins should be selectable -> frequency!
-
-- ether:
- - possibility to change qual?
-
-- scrape:
- - maxamp is computed (from spectral amplitudes) before these are set!! (function frowned) -> corrected
-
-- shapee:
- - danger of div by 0... corrected
-
-- swinger:
- - (jmax) phase is calculated from signal1 (instead of correct signal 2)!!
-
diff --git a/externals/grill/fftease/src/burrow~.cpp b/externals/grill/fftease/src/burrow~.cpp
deleted file mode 100644
index 01564618..00000000
--- a/externals/grill/fftease/src/burrow~.cpp
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
-
-FFTease - A set of Live Spectral Processors
-Originally written by Eric Lyon and Christopher Penrose for the Max/MSP platform
-
-Copyright (c)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.
-
-*/
-
-#include "main.h"
-
-
-class burrow:
- public fftease
-{
- FLEXT_HEADER_S(burrow,fftease,setup)
-
-public:
- burrow(I argc,const t_atom *argv);
-
-protected:
-
- virtual V Transform(I _N2,S *const *in);
-
- BL _invert;
-
- F _threshold,_multiplier;
- F _thresh_dB,_mult_dB;
-
-private:
- V ms_thresh(F v) { _threshold = FromdB(_thresh_dB = v); }
- V ms_mult(F v) { _multiplier = FromdB(_mult_dB = v); }
-
-
- static V setup(t_classid c);
-
- FLEXT_ATTRGET_F(_thresh_dB)
- FLEXT_CALLSET_F(ms_thresh)
- FLEXT_ATTRGET_F(_mult_dB)
- FLEXT_CALLSET_F(ms_mult)
- FLEXT_ATTRVAR_B(_invert)
-};
-
-FLEXT_LIB_DSP_V("burrow~",burrow)
-
-
-V burrow::setup(t_classid c)
-{
- FLEXT_CADDATTR_VAR(c,"thresh",_thresh_dB,ms_thresh);
- FLEXT_CADDATTR_VAR(c,"mult",_mult_dB,ms_mult);
- FLEXT_CADDATTR_VAR1(c,"invert",_invert);
-}
-
-
-burrow::burrow(I argc,const t_atom *argv):
- fftease(4,F_STEREO|F_BALANCED|F_BITSHUFFLE|F_NOPH2),
- _invert(false),
- _thresh_dB(-30),_mult_dB(-18)
-{
- /* parse and set object's options given */
- if(argc >= 1) {
- if(CanbeFloat(argv[0]))
- _thresh_dB = GetAFloat(argv[0]);
- else
- post("%s - Threshold must be a float value - set to %0f",thisName(),_thresh_dB);
- }
- if(argc >= 2) {
- if(CanbeFloat(argv[1]))
- _mult_dB = GetAFloat(argv[1]);
- else
- post("%s - Multiplier must be a float value - set to %0f",thisName(),_mult_dB);
- }
- if(argc >= 3) {
- if(CanbeBool(argv[2]))
- _invert = GetABool(argv[2]);
- else
- post("%s - Invert flag must be a boolean value - set to %i",thisName(),_invert?1:0);
- }
-
- ms_thresh(_thresh_dB);
- ms_mult(_mult_dB);
-
- AddInSignal("Messages and input signal");
- AddInSignal("Reference signal");
- AddOutSignal("Transformed signal");
-}
-
-
-V burrow::Transform(I _N,S *const *)
-{
- register const F thr = _threshold,mul = _multiplier;
-
- // use simple threshold from second signal to trigger filtering
- // transform does not need phase of signal 2
-
- if(_invert)
- for (I i = 0; i <= _N; i += 2)
- if(_channel2[i] < thr) _channel1[i] *= mul;
- else
- for (I i = 0; i <= _N; i += 2)
- if(_channel2[i] > thr) _channel1[i] *= mul;
-}
-
-
-
diff --git a/externals/grill/fftease/src/convert.c b/externals/grill/fftease/src/convert.c
deleted file mode 100644
index 006e4cf7..00000000
--- a/externals/grill/fftease/src/convert.c
+++ /dev/null
@@ -1,134 +0,0 @@
-#include "pv.h"
-
-/* S is a spectrum in rfft format, i.e., it contains N real values
- arranged as real followed by imaginary values, except for first
- two values, which are real parts of 0 and Nyquist frequencies;
- convert first changes these into N/2+1 PAIRS of magnitude and
- phase values to be stored in output array C; the phases are then
- unwrapped and successive phase differences are used to compute
- estimates of the instantaneous frequencies for each phase vocoder
- analysis channel; decimation rate D and sampling rate R are used
- to render these frequency values directly in Hz. */
-
-void convert(float *S, float *C, int N2, float *lastphase, float fundamental, float factor )
-{
-#if 1
- float phase,phasediff;
- int even,odd;
- float a,b;
- int i;
-
- for ( i = 0; i <= N2; i++ ) {
- odd = ( even = i<<1 ) + 1;
- a = ( i == N2 ? S[1] : S[even] );
- b = ( i == 0 || i == N2 ? 0. : S[odd] );
-
- C[even] = hypot( a, b );
- if ( C[even] == 0. )
- phasediff = 0.;
- else {
- phase = -atan2( b, a );
- phasediff = fmod(phase - lastphase[i] + (PV_2PI+PV_PI), PV_2PI)-PV_PI;
- lastphase[i] = phase;
- }
-
- C[odd] = phasediff*factor + i*fundamental;
- }
-#else
- float phase,
- phasediff;
- int real,
- imag,
- amp,
- freq;
- float a,
- b;
- int i;
-
- float myTWOPI, myPI;
-
- myTWOPI = 8.*atan(1.);
- myPI = 4.*atan(1.);
-
-
- for ( i = 0; i <= N2; i++ ) {
- imag = freq = ( real = amp = i<<1 ) + 1;
- a = ( i == N2 ? S[1] : S[real] );
- b = ( i == 0 || i == N2 ? 0. : S[imag] );
-
- C[amp] = hypot( a, b );
- if ( C[amp] == 0. )
- phasediff = 0.;
- else {
- phasediff = ( phase = -atan2( b, a ) ) - lastphase[i];
- lastphase[i] = phase;
-
- // TG: DANGEROUS!!!! (and slow, if lastphase not correctly initialized)
- while ( phasediff > myPI )
- phasediff -= myTWOPI;
- while ( phasediff < -myPI )
- phasediff += myTWOPI;
- }
- C[freq] = phasediff*factor + i*fundamental;
- /*
- if( i > 8 && i < 12 ) {
- fprintf(stderr,"convert freq %d: %f\n",i, C[freq]);
- }
- */
- }
-#endif
-}
-
-
-void unconvert(float *C, float *S, int N2, float *lastphase, float fundamental, float factor )
-{
-#if 1
- int i,even,odd;
- float mag,phase;
-
- for ( i = 0; i <= N2; i++ ) {
- odd = ( even = i<<1 ) + 1;
-
- mag = C[even];
- lastphase[i] += C[odd] - i*fundamental;
- phase = lastphase[i]*factor;
-
- if(i != N2) {
- S[even] = mag*cos( phase );
- S[odd] = -mag*sin( phase );
- }
- else
- S[1] = mag*cos( phase );
- }
-#else
- int i,
- real,
- imag,
- amp,
- freq;
- float mag,
- phase;
-
- for ( i = 0; i <= N2; i++ ) {
-
- imag = freq = ( real = amp = i<<1 ) + 1;
-
- if ( i == N2 )
- real = 1;
-
- mag = C[amp];
- lastphase[i] += C[freq] - i*fundamental;
- phase = lastphase[i]*factor;
- S[real] = mag*cos( phase );
-
- if ( i != N2 )
- S[imag] = -mag*sin( phase );
- /*
- if( i == 10 ) {
- fprintf(stderr,"unconvert: amp: %f freq: %f funda %f fac %f\n", C[amp],C[freq],fundamental,factor);
- }
- */
- }
-
-#endif
-}
diff --git a/externals/grill/fftease/src/cross~.cpp b/externals/grill/fftease/src/cross~.cpp
deleted file mode 100644
index cdbd9d0a..00000000
--- a/externals/grill/fftease/src/cross~.cpp
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
-
-FFTease - A set of Live Spectral Processors
-Originally written by Eric Lyon and Christopher Penrose for the Max/MSP platform
-
-Copyright (c)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.
-
-*/
-
-#include "main.h"
-
-
-class cross:
- public fftease
-{
- FLEXT_HEADER_S(cross,fftease,setup)
-
-public:
- cross();
-
-protected:
-
- F *amps;
- BL memory;
-
- virtual V Set();
- virtual V Clear();
- virtual V Delete();
-
- virtual V Transform(I _N2,S *const *in);
-
-private:
- static V setup(t_classid c);
-
- FLEXT_ATTRVAR_B(memory)
-};
-
-FLEXT_LIB_DSP("cross~",cross)
-
-
-V cross::setup(t_classid c)
-{
- FLEXT_CADDATTR_VAR1(c,"memorize",memory);
-}
-
-cross::cross():
- fftease(2,F_STEREO|F_BALANCED|F_BITSHUFFLE|F_NOPH2),
- memory(true)
-{
- AddInSignal("Messages and driver signal");
- AddInSignal("Filter signal");
- AddInSignal("Threshold signal for cross synthesis");
- AddOutSignal("Transformed signal");
-}
-
-V cross::Clear()
-{
- amps = NULL;
- fftease::Clear();
-}
-
-V cross::Delete()
-{
- fftease::Delete();
- if(amps) delete[] amps;
-}
-
-V cross::Set()
-{
- fftease::Set();
- const I _N2 = get_N()/2;
- amps = new F[_N2];
- ZeroMem(amps,_N2*sizeof(*amps));
-}
-
-V cross::Transform(I _N,S *const *in)
-{
- // filled only once per signal vector!!
- register const F threshie = *in[0];
- F *amp = amps;
-
- for (I i = 0; i <= _N; i += 2,amp++)
- if( _channel2[i] > threshie )
- *amp = _channel1[i] *= _channel2[i];
- else if(memory)
- // retrieve previous value
- _channel1[i] = *amp;
-
-}
-
diff --git a/externals/grill/fftease/src/dentist~.cpp b/externals/grill/fftease/src/dentist~.cpp
deleted file mode 100644
index 99d111bb..00000000
--- a/externals/grill/fftease/src/dentist~.cpp
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
-
-FFTease - A set of Live Spectral Processors
-Originally written by Eric Lyon and Christopher Penrose for the Max/MSP platform
-
-Copyright (c)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.
-
-*/
-
-#include "main.h"
-#include <stdlib.h>
-
-class dentist:
- public fftease
-{
- FLEXT_HEADER_S(dentist,fftease,setup)
-
-public:
- dentist(I argc,const t_atom *argv);
-
-protected:
-
- virtual V Transform(I _N2,S *const *in);
-
- BL *_bin_selection;
- I _teeth;
- F _knee;
- I _max_bin; // determined by _knee and fundamental frequency
-
- V reset_shuffle();
-
-private:
-
- virtual V Set();
- virtual V Clear();
- virtual V Delete();
-
- V ms_knee(F knee);
- V ms_teeth(I teeth) { _teeth = teeth; reset_shuffle(); }
-
-
- static V setup(t_classid c);
-
- FLEXT_CALLBACK(reset_shuffle)
- FLEXT_ATTRGET_F(_knee)
- FLEXT_CALLSET_F(ms_knee)
- FLEXT_ATTRGET_I(_teeth)
- FLEXT_CALLSET_I(ms_teeth)
-};
-
-FLEXT_LIB_DSP_V("dentist~",dentist)
-
-
-V dentist::setup(t_classid c)
-{
- FLEXT_CADDBANG(c,0,reset_shuffle);
-
- FLEXT_CADDATTR_VAR(c,"knee",_knee,ms_knee);
- FLEXT_CADDATTR_VAR(c,"teeth",_teeth,ms_teeth);
-}
-
-
-dentist::dentist(I argc,const t_atom *argv):
- fftease(4,F_BALANCED|F_BITSHUFFLE),
- _teeth(10),_knee(500),_max_bin(0)
-{
- /* parse and set object's options given */
- if(argc >= 1) {
- if(CanbeFloat(argv[0]))
- _knee = GetAFloat(argv[0]);
- else
- post("%s - Knee must be a float value - set to %0f",thisName(),_knee);
- }
- if(argc >= 2) {
- if(CanbeInt(argv[1]))
- _teeth = GetAInt(argv[1]);
- else
- post("%s - Teeth must be an integer value - set to %0i",thisName(),_teeth);
- }
-
- AddInSignal("Messages and input signal");
- AddOutSignal("Transformed signal");
-}
-
-V dentist::Clear()
-{
- _bin_selection = NULL;
- fftease::Clear();
-}
-
-V dentist::Delete()
-{
- fftease::Delete();
- if(_bin_selection) delete[] _bin_selection;
-}
-
-
-V dentist::ms_knee(F f)
-{
- _knee = f; // store original
-
- const F funda = get_Fund();
-
- // TG: This is a different, but steady correction than in original fftease
- if( f < funda ) f = funda;
- else if(f > Samplerate()/2) f = Samplerate()/2;
-
- _max_bin = (I)(f/funda+0.5);
-
- reset_shuffle();
-}
-
-
-V dentist::Set()
-{
- fftease::Set();
-
- _bin_selection = new BL[get_N()/2];
-
- // calculation of _max_bin
- ms_knee(_knee);
-}
-
-V dentist::Transform(I _N,S *const *)
-{
- const BL *bs = _bin_selection;
- for(I i = 0; i < _N ; i += 2)
- if(!*(bs++)) _channel1[i] = 0;
-}
-
-
-V dentist::reset_shuffle()
-{
- const I _N2 = get_N()/2;
- I t = _teeth;
-
- // check number of teeth
- if( t < 0 ) t = 0;
- else if( t > _N2 ) t = _N2;
-
- // clear and set random bins
- I i;
- for( i = 0; i < _N2; i++ )
- _bin_selection[i] = false;
- for( i = 0; i < t; i++ )
- _bin_selection[rand()%_max_bin] = true;
-}
diff --git a/externals/grill/fftease/src/disarray~.cpp b/externals/grill/fftease/src/disarray~.cpp
deleted file mode 100644
index 342d45fc..00000000
--- a/externals/grill/fftease/src/disarray~.cpp
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
-
-FFTease - A set of Live Spectral Processors
-Originally written by Eric Lyon and Christopher Penrose for the Max/MSP platform
-
-Copyright (c)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.
-
-*/
-
-#include "main.h"
-#include <stdlib.h>
-
-class disarray:
- public fftease
-{
- FLEXT_HEADER_S(disarray,fftease,setup)
-
-public:
- disarray(I argc,const t_atom *argv);
-
-protected:
-
- virtual V Transform(I _N2,S *const *in);
-
- BL _qual;
- I _shuffle_count,_max_bin;
- F _freq;
- I *_shuffle_in,*_shuffle_out;
-
- V reset_shuffle();
-
-private:
- virtual V Set();
- virtual V Clear();
- virtual V Delete();
-
- V ms_freq(F f);
-
- static V setup(t_classid c);
-
- FLEXT_CALLBACK(reset_shuffle)
- FLEXT_ATTRGET_F(_freq)
- FLEXT_CALLSET_F(ms_freq)
- FLEXT_ATTRVAR_I(_shuffle_count)
-};
-
-FLEXT_LIB_DSP_V("disarray~",disarray)
-
-
-V disarray::setup(t_classid c)
-{
- FLEXT_CADDBANG(c,0,reset_shuffle);
-
- FLEXT_CADDATTR_VAR(c,"knee",_freq,ms_freq);
- FLEXT_CADDATTR_VAR1(c,"partials",_shuffle_count);
-}
-
-
-disarray::disarray(I argc,const t_atom *argv):
- fftease(2,F_BITSHUFFLE),
- _qual(false),_shuffle_count(20),_max_bin(0),_freq(1300)
-{
- /* parse and set object's options given */
- if(argc >= 1) {
- if(CanbeFloat(argv[0]))
- _freq = GetAFloat(argv[0]);
- else
- post("%s - Freq must be a float value - set to %0f",thisName(),_freq);
- }
- if(argc >= 2) {
- if(CanbeBool(argv[1]))
- _qual = GetABool(argv[1]);
- else
- post("%s - Quality must be a boolean value - set to %0i",thisName(),_qual?1:0);
- }
- if(argc >= 3) {
- if(CanbeInt(argv[2]))
- _shuffle_count = GetAInt(argv[2]);
- else
- post("%s - Partials must be an integer value - set to %0i",thisName(),_shuffle_count);
- }
-
- Mult(_qual?4:2);
- if(_qual) _flags |= F_BALANCED;
-
- AddInSignal("Messages and input signal");
- AddOutSignal("Transformed signal");
-}
-
-
-V disarray::Clear()
-{
- _shuffle_in = _shuffle_out = NULL;
- fftease::Clear();
-}
-
-V disarray::Delete()
-{
- fftease::Delete();
- if(_shuffle_in) delete[] _shuffle_in;
- if(_shuffle_out) delete[] _shuffle_out;
-}
-
-V disarray::Set()
-{
- fftease::Set();
-
- const I _N2 = get_N()/2;
-
- _shuffle_in = new I[_N2];
- _shuffle_out = new I[_N2];
-
- // calculate _max_bin
- ms_freq(_freq);
-}
-
-V disarray::ms_freq(F f)
-{
- _freq = f; // store original
-
- const F funda = get_Fund();
-
- // TG: This is a different, but steady correction than in original fftease
- if( f < funda ) f = funda;
- else if(f > Samplerate()/2) f = Samplerate()/2;
-
- _max_bin = (I)(f/funda+0.5);
-
- reset_shuffle();
-}
-
-inline V swap(F &a,F &b) { F t = a; a = b; b = t; }
-inline V swap(I &a,I &b) { I t = a; a = b; b = t; }
-
-V disarray::Transform(I _N,S *const *)
-{
- I shcnt = _shuffle_count;
- if(shcnt < 0) shcnt = 0;
- else if(shcnt > _N/2) shcnt = _N/2;
-
- for(I i = 0; i < shcnt; i++)
- // leave phase, just swap amplitudes
- swap(_channel1[ _shuffle_in[i] * 2 ],_channel1[ _shuffle_out[i] * 2]);
-}
-
-
-V disarray::reset_shuffle()
-{
- const I _N2 = get_N()/2;
-
- I i;
- for( i = 0; i < _N2; i++ )
- _shuffle_out[i] = _shuffle_in[i] = i ;
-
- for( i = 0; i < _max_bin*2; i++ ) {
- I p1 = _shuffle_out[ rand()%_max_bin ];
- I p2 = _shuffle_out[ rand()%_max_bin ];
- swap(_shuffle_out[ p1 ],_shuffle_out[ p2 ]);
- }
-
-}
-
diff --git a/externals/grill/fftease/src/drown~.cpp b/externals/grill/fftease/src/drown~.cpp
deleted file mode 100644
index 2f59cc0a..00000000
--- a/externals/grill/fftease/src/drown~.cpp
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
-
-FFTease - A set of Live Spectral Processors
-Originally written by Eric Lyon and Christopher Penrose for the Max/MSP platform
-
-Copyright (c)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.
-
-*/
-
-#include "main.h"
-#include <stdlib.h>
-
-class drown:
- public fftease
-{
- FLEXT_HEADER(drown,fftease)
-
-public:
- drown();
-
-protected:
- virtual V Transform(I n,S *const *in);
-};
-
-FLEXT_LIB_DSP("drown~ denude~",drown)
-
-
-drown::drown():
- fftease(4,F_BALANCED)
-{
- AddInSignal("Messages and input signal");
- AddInSignal("Threshold generator signal");
- AddInSignal("Multiplier signal for weak bins");
- AddOutSignal("Transformed signal");
-}
-
-
-V drown::Transform(I _N,S *const *in)
-{
- // only first value of the signal vectors
- const F thresh = *in[0],mult = *in[1];
-
- // make up low amplitude bins
- for (I i = 0; i <= _N; i += 2)
- if(_channel1[i] < thresh) _channel1[i] *= mult;
-}
-
-
diff --git a/externals/grill/fftease/src/ether~.cpp b/externals/grill/fftease/src/ether~.cpp
deleted file mode 100644
index 6e4d3810..00000000
--- a/externals/grill/fftease/src/ether~.cpp
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
-
-FFTease - A set of Live Spectral Processors
-Originally written by Eric Lyon and Christopher Penrose for the Max/MSP platform
-
-Copyright (c)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.
-
-*/
-
-#include "main.h"
-#include <stdlib.h>
-
-class ether:
- public fftease
-{
- FLEXT_HEADER_S(ether,fftease,setup)
-
-public:
- ether(I argc,const t_atom *argv);
-
-protected:
-
- virtual V Transform(I n,S *const *in);
-
- BL _qual,_invert;
- F _threshMult;
-
-private:
- static V setup(t_classid c);
-
-
- FLEXT_ATTRVAR_B(_invert)
- FLEXT_ATTRVAR_F(_threshMult)
-};
-
-FLEXT_LIB_DSP_V("ether~",ether)
-
-
-V ether::setup(t_classid c)
-{
- FLEXT_CADDATTR_VAR1(c,"invert",_invert);
- FLEXT_CADDATTR_VAR1(c,"index",_threshMult);
-}
-
-
-ether::ether(I argc,const t_atom *argv):
- fftease(2,F_STEREO|F_BITSHUFFLE),
- _qual(false),_invert(false),_threshMult(0)
-{
- /* parse and set object's options given */
- if(argc >= 1) {
- if(CanbeBool(argv[0]))
- _qual = GetABool(argv[0]);
- else
- post("%s - Quality must be a boolean value - set to %0i",thisName(),_qual?1:0);
- }
-
- Mult(_qual?4:2);
- if(_qual) _flags |= F_BALANCED;
-
- AddInSignal("Messages and input signal");
- AddInSignal("Reference signal");
- AddOutSignal("Transformed signal");
-}
-
-
-V ether::Transform(I _N,S *const *)
-{
- const BL inv = _invert;
- const F threshMult = _threshMult?_threshMult:1;
-
- for (I i = 0; i <= _N; i += 2) {
- F &amp1 = _channel1[i];
- F &phase1 = _channel1[i+1];
-
- F &amp2 = _channel2[i];
- F &phase2 = _channel2[i+1];
-
- // use simple threshold for inverse compositing
-
- if(inv?(amp1 > amp2*threshMult):(amp1 < amp2*threshMult) ) amp1 = amp2;
- if (phase1 == 0. ) phase1 = phase2;
- }
-}
-
diff --git a/externals/grill/fftease/src/fft.c b/externals/grill/fftease/src/fft.c
deleted file mode 100644
index 844cddd5..00000000
--- a/externals/grill/fftease/src/fft.c
+++ /dev/null
@@ -1,157 +0,0 @@
-#include "pv.h"
-
-
-/* If forward is true, rfft replaces 2*N real data points in x with
- N complex values representing the positive frequency half of their
- Fourier spectrum, with x[1] replaced with the real part of the Nyquist
- frequency value. If forward is false, rfft expects x to contain a
- positive frequency spectrum arranged as before, and replaces it with
- 2*N real values. N MUST be a power of 2. */
-static void
-bitreverse( float *x, int N );
-
-static float sqr(float x) { return x*x; }
-
-void pv_rfft( float *x, int N, int forward )
-{
- float c1,c2,
- h1r,h1i,
- h2r,h2i,
- wr,wi,
- wpr,wpi,
- temp,
- theta;
- float xr,xi;
- int i,
- i1,i2,i3,i4,
- N2p1;
- static int first = 1;
-
- if ( first ) {
-
- first = 0;
- }
- theta = PV_PI/N;
- wr = 1.;
- wi = 0.;
- c1 = 0.5;
- if ( forward ) {
- c2 = -0.5;
- pv_cfft( x, N, forward );
- xr = x[0];
- xi = x[1];
- } else {
- c2 = 0.5;
- theta = -theta;
- xr = x[1];
- xi = 0.;
- x[1] = 0.;
- }
- wpr = -2.*sqr( sin( 0.5*theta ));
- wpi = sin( theta );
- N2p1 = (N<<1) + 1;
- for ( i = 0; i <= N>>1; i++ ) {
- i1 = i<<1;
- i2 = i1 + 1;
- i3 = N2p1 - i2;
- i4 = i3 + 1;
- if ( i == 0 ) {
- h1r = c1*(x[i1] + xr );
- h1i = c1*(x[i2] - xi );
- h2r = -c2*(x[i2] + xi );
- h2i = c2*(x[i1] - xr );
- x[i1] = h1r + wr*h2r - wi*h2i;
- x[i2] = h1i + wr*h2i + wi*h2r;
- xr = h1r - wr*h2r + wi*h2i;
- xi = -h1i + wr*h2i + wi*h2r;
- } else {
- h1r = c1*(x[i1] + x[i3] );
- h1i = c1*(x[i2] - x[i4] );
- h2r = -c2*(x[i2] + x[i4] );
- h2i = c2*(x[i1] - x[i3] );
- x[i1] = h1r + wr*h2r - wi*h2i;
- x[i2] = h1i + wr*h2i + wi*h2r;
- x[i3] = h1r - wr*h2r + wi*h2i;
- x[i4] = -h1i + wr*h2i + wi*h2r;
- }
- wr = (temp = wr)*wpr - wi*wpi + wr;
- wi = wi*wpr + temp*wpi + wi;
- }
- if ( forward )
- x[1] = xr;
- else
- pv_cfft( x, N, forward );
-}
-
-/* cfft replaces float array x containing NC complex values
- (2*NC float values alternating real, imagininary, etc.)
- by its Fourier transform if forward is true, or by its
- inverse Fourier transform if forward is false, using a
- recursive Fast Fourier transform method due to Danielson
- and Lanczos. NC MUST be a power of 2. */
-
-void pv_cfft( float *x, int NC, int forward )
-{
- float wr,wi,
- wpr,wpi,
- theta,
- scale;
- int mmax,
- ND,
- m,
- i,j,
- delta;
-
- ND = NC<<1;
- bitreverse( x, ND );
- for ( mmax = 2; mmax < ND; mmax = delta ) {
- delta = mmax<<1;
- theta = PV_2PI/( forward? mmax : -mmax );
- wpr = -2.*sqr( sin( 0.5*theta ));
- wpi = sin( theta );
- wr = 1.;
- wi = 0.;
- for ( m = 0; m < mmax; m += 2 ) {
- register float rtemp, itemp;
- for ( i = m; i < ND; i += delta ) {
- j = i + mmax;
- rtemp = wr*x[j] - wi*x[j+1];
- itemp = wr*x[j+1] + wi*x[j];
- x[j] = x[i] - rtemp;
- x[j+1] = x[i+1] - itemp;
- x[i] += rtemp;
- x[i+1] += itemp;
- }
- wr = (rtemp = wr)*wpr - wi*wpi + wr;
- wi = wi*wpr + rtemp*wpi + wi;
- }
- }
-
-/* scale output */
-
- scale = forward ? 1./ND : 2.;
- { register float *xi=x, *xe=x+ND;
- while ( xi < xe )
- *xi++ *= scale;
- }
-}
-
-/* bitreverse places float array x containing N/2 complex values
- into bit-reversed order */
-
-void bitreverse( float *x, int N )
-{
- float rtemp,itemp;
- int i,j,
- m;
-
- for ( i = j = 0; i < N; i += 2, j += m ) {
- if ( j > i ) {
- rtemp = x[j]; itemp = x[j+1]; /* complex exchange */
- x[j] = x[i]; x[j+1] = x[i+1];
- x[i] = rtemp; x[i+1] = itemp;
- }
- for ( m = N>>1; m >= 2 && j >= m; m >>= 1 )
- j -= m;
- }
-}
diff --git a/externals/grill/fftease/src/fft4.c b/externals/grill/fftease/src/fft4.c
deleted file mode 100644
index 70127b47..00000000
--- a/externals/grill/fftease/src/fft4.c
+++ /dev/null
@@ -1,340 +0,0 @@
-/*
- * This file is part of the pv-lib
- *
- * The pv-lib can be used by everyone as desired
- *
- * (c) Eric Lyon and Christopher Penrose
- *
- */
-
-#include <math.h>
-#include "pv.h"
-
-static void bitrv2(int n, int *ip, float *a);
-static void cftsub(int n, float *a, float *w);
-static void rftsub(int n, float *a, int nc, float *c);
-static void makewt(int nw, int *ip, float *w);
-static void makect(int nc, int *ip, float *c);
-
-void init_rdft(int n, int *ip, float *w)
-{
-
- int nw,
- nc;
-
- nw = n >> 2;
- makewt(nw, ip, w);
-
- nc = n >> 2;
- makect(nc, ip, w + nw);
-
- return;
-}
-
-
-void pv_rdft(int n, int isgn, float *a, int *ip, float *w)
-{
-
- int j,
- nw,
- nc;
-
- float xi;
-
- nw = ip[0];
- nc = ip[1];
-
- if (isgn < 0) {
- a[1] = 0.5 * (a[1] - a[0]);
- a[0] += a[1];
-
- for (j = 3; j <= n - 1; j += 2) {
- a[j] = -a[j];
- }
-
- if (n > 4) {
- rftsub(n, a, nc, w + nw);
- bitrv2(n, ip + 2, a);
- }
-
- cftsub(n, a, w);
-
- for (j = 1; j < n; j += 2) {
- a[j] = -a[j];
- }
- }
-
- else {
-
- if (n > 4) {
- bitrv2(n, ip + 2, a);
- }
-
- cftsub(n, a, w);
-
- if (n > 4) {
- rftsub(n, a, nc, w + nw);
- }
-
- xi = a[0] - a[1];
- a[0] += a[1];
- a[1] = xi;
- }
-}
-
-
-static void bitrv2(int n, int *ip, float *a)
-{
- int j, j1, k, k1, l, m, m2;
- float xr, xi;
-
- ip[0] = 0;
- l = n;
- m = 1;
-
- while ((m << 2) < l) {
- l >>= 1;
- for (j = 0; j < m; j++) {
- ip[m + j] = ip[j] + l;
- }
- m <<= 1;
- }
-
- if ((m << 2) > l) {
-
- for (k = 1; k < m; k++) {
-
- for (j = 0; j <= k - 1; j++) {
- j1 = (j << 1) + ip[k];
- k1 = (k << 1) + ip[j];
- xr = a[j1];
- xi = a[j1 + 1];
- a[j1] = a[k1];
- a[j1 + 1] = a[k1 + 1];
- a[k1] = xr;
- a[k1 + 1] = xi;
- }
- }
- }
-
- else {
- m2 = m << 1;
-
- for (k = 1; k < m; k++) {
-
- for (j = 0; j < k; j++) {
- j1 = (j << 1) + ip[k];
- k1 = (k << 1) + ip[j];
- xr = a[j1];
- xi = a[j1 + 1];
- a[j1] = a[k1];
- a[j1 + 1] = a[k1 + 1];
- a[k1] = xr;
- a[k1 + 1] = xi;
- j1 += m2;
- k1 += m2;
- xr = a[j1];
- xi = a[j1 + 1];
- a[j1] = a[k1];
- a[j1 + 1] = a[k1 + 1];
- a[k1] = xr;
- a[k1 + 1] = xi;
- }
- }
- }
-}
-
-
-static void cftsub(int n, float *a, float *w)
-{
- int j, j1, j2, j3, k, k1, ks, l, m;
- float wk1r, wk1i, wk2r, wk2i, wk3r, wk3i;
- float x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i;
-
- l = 2;
-
- while ((l << 1) < n) {
- m = l << 2;
-
- for (j = 0; j <= l - 2; j += 2) {
- j1 = j + l;
- j2 = j1 + l;
- j3 = j2 + l;
- x0r = a[j] + a[j1];
- x0i = a[j + 1] + a[j1 + 1];
- x1r = a[j] - a[j1];
- x1i = a[j + 1] - a[j1 + 1];
- x2r = a[j2] + a[j3];
- x2i = a[j2 + 1] + a[j3 + 1];
- x3r = a[j2] - a[j3];
- x3i = a[j2 + 1] - a[j3 + 1];
- a[j] = x0r + x2r;
- a[j + 1] = x0i + x2i;
- a[j2] = x0r - x2r;
- a[j2 + 1] = x0i - x2i;
- a[j1] = x1r - x3i;
- a[j1 + 1] = x1i + x3r;
- a[j3] = x1r + x3i;
- a[j3 + 1] = x1i - x3r;
- }
-
- if (m < n) {
- wk1r = w[2];
-
- for (j = m; j <= l + m - 2; j += 2) {
- j1 = j + l;
- j2 = j1 + l;
- j3 = j2 + l;
- x0r = a[j] + a[j1];
- x0i = a[j + 1] + a[j1 + 1];
- x1r = a[j] - a[j1];
- x1i = a[j + 1] - a[j1 + 1];
- x2r = a[j2] + a[j3];
- x2i = a[j2 + 1] + a[j3 + 1];
- x3r = a[j2] - a[j3];
- x3i = a[j2 + 1] - a[j3 + 1];
- a[j] = x0r + x2r;
- a[j + 1] = x0i + x2i;
- a[j2] = x2i - x0i;
- a[j2 + 1] = x0r - x2r;
- x0r = x1r - x3i;
- x0i = x1i + x3r;
- a[j1] = wk1r * (x0r - x0i);
- a[j1 + 1] = wk1r * (x0r + x0i);
- x0r = x3i + x1r;
- x0i = x3r - x1i;
- a[j3] = wk1r * (x0i - x0r);
- a[j3 + 1] = wk1r * (x0i + x0r);
- }
-
- k1 = 1;
- ks = -1;
-
- for (k = (m << 1); k <= n - m; k += m) {
- k1++;
- ks = -ks;
- wk1r = w[k1 << 1];
- wk1i = w[(k1 << 1) + 1];
- wk2r = ks * w[k1];
- wk2i = w[k1 + ks];
- wk3r = wk1r - 2 * wk2i * wk1i;
- wk3i = 2 * wk2i * wk1r - wk1i;
-
- for (j = k; j <= l + k - 2; j += 2) {
- j1 = j + l;
- j2 = j1 + l;
- j3 = j2 + l;
- x0r = a[j] + a[j1];
- x0i = a[j + 1] + a[j1 + 1];
- x1r = a[j] - a[j1];
- x1i = a[j + 1] - a[j1 + 1];
- x2r = a[j2] + a[j3];
- x2i = a[j2 + 1] + a[j3 + 1];
- x3r = a[j2] - a[j3];
- x3i = a[j2 + 1] - a[j3 + 1];
- a[j] = x0r + x2r;
- a[j + 1] = x0i + x2i;
- x0r -= x2r;
- x0i -= x2i;
- a[j2] = wk2r * x0r - wk2i * x0i;
- a[j2 + 1] = wk2r * x0i + wk2i * x0r;
- x0r = x1r - x3i;
- x0i = x1i + x3r;
- a[j1] = wk1r * x0r - wk1i * x0i;
- a[j1 + 1] = wk1r * x0i + wk1i * x0r;
- x0r = x1r + x3i;
- x0i = x1i - x3r;
- a[j3] = wk3r * x0r - wk3i * x0i;
- a[j3 + 1] = wk3r * x0i + wk3i * x0r;
- }
- }
- }
-
- l = m;
- }
-
- if (l < n) {
-
- for (j = 0; j <= l - 2; j += 2) {
- j1 = j + l;
- x0r = a[j] - a[j1];
- x0i = a[j + 1] - a[j1 + 1];
- a[j] += a[j1];
- a[j + 1] += a[j1 + 1];
- a[j1] = x0r;
- a[j1 + 1] = x0i;
- }
- }
-}
-
-
-static void rftsub(int n, float *a, int nc, float *c)
-{
- int j, k, kk, ks;
- float wkr, wki, xr, xi, yr, yi;
-
- ks = (nc << 2) / n;
- kk = 0;
-
- for (k = (n >> 1) - 2; k >= 2; k -= 2) {
- j = n - k;
- kk += ks;
- wkr = 0.5 - c[kk];
- wki = c[nc - kk];
- xr = a[k] - a[j];
- xi = a[k + 1] + a[j + 1];
- yr = wkr * xr - wki * xi;
- yi = wkr * xi + wki * xr;
- a[k] -= yr;
- a[k + 1] -= yi;
- a[j] += yr;
- a[j + 1] -= yi;
- }
-}
-
-
-static void makewt(int nw, int *ip, float *w)
-{
- int nwh, j;
- float delta, x, y;
-
- ip[0] = nw;
- ip[1] = 1;
- if (nw > 2) {
- nwh = nw >> 1;
- delta = atan(1.0) / nwh;
- w[0] = 1;
- w[1] = 0;
- w[nwh] = cos(delta * nwh);
- w[nwh + 1] = w[nwh];
- for (j = 2; j <= nwh - 2; j += 2) {
- x = cos(delta * j);
- y = sin(delta * j);
- w[j] = x;
- w[j + 1] = y;
- w[nw - j] = y;
- w[nw - j + 1] = x;
- }
- bitrv2(nw, ip + 2, w);
- }
-}
-
-
-static void makect(int nc, int *ip, float *c)
-{
- int nch, j;
- float delta;
-
- ip[1] = nc;
- if (nc > 1) {
- nch = nc >> 1;
- delta = atan(1.0) / nch;
- c[0] = 0.5;
- c[nch] = 0.5 * cos(delta * nch);
- for (j = 1; j <= nch - 1; j++) {
- c[j] = 0.5 * cos(delta * j);
- c[nc - j] = 0.5 * sin(delta * j);
- }
- }
-}
-
diff --git a/externals/grill/fftease/src/fftease.cpp b/externals/grill/fftease/src/fftease.cpp
deleted file mode 100644
index 9a7641c1..00000000
--- a/externals/grill/fftease/src/fftease.cpp
+++ /dev/null
@@ -1,236 +0,0 @@
-/*
-
-FFTease - A set of Live Spectral Processors
-Originally written by Eric Lyon and Christopher Penrose for the Max/MSP platform
-
-Copyright (c)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.
-
-*/
-
-#include "main.h"
-
-
-fftease::fftease(I mult,I flags):
- _inCount(0),
- _flags(flags),
- blsz(0),smprt(0),
- _mult(mult),_N(0)
-{}
-
-fftease::~fftease() {}
-
-BL fftease::Init()
-{
- Clear();
- Set();
- return flext_dsp::Init();
-}
-
-V fftease::Exit()
-{
- Delete();
-}
-
-V fftease::m_dsp(I n,S *const *,S *const *)
-{
- const F sr = Samplerate();
- if(n != blsz || sr != smprt) {
- blsz = n;
- smprt = sr;
- MakeVar();
-
- Delete();
- Set();
- }
-}
-
-V fftease::m_signal(I n,S *const *in,S *const *out)
-{
- /* declare working variables */
- I i;
- const I _N = get_N(),_Nw = _N,_N2 = _N/2; //,_Nw2 = _Nw/2;
-
- /* fill our retaining buffers */
- _inCount += n;
-
- if(_flags&F_STEREO) {
- for(i = 0; i < _N-n ; i++ ) {
- _input1[i] = _input1[i+n];
- _input2[i] = _input2[i+n];
- }
- for(I j = 0; i < _N; i++,j++) {
- _input1[i] = in[0][j];
- _input2[i] = in[1][j];
- }
- }
- else {
- for (i = 0 ; i < _N-n ; i++ )
- _input1[i] = _input1[i+n];
- for (I j = 0; i < _N; i++,j++ )
- _input1[i] = in[0][j];
- }
-
- _rms = 0.;
- if(_flags&F_RMS) {
- for ( i=0; i < _Nw; i++ )
- _rms += _input1[i] * _input1[i];
- _rms = sqrt(_rms / _Nw);
- }
-
- /* apply hamming window and fold our window buffer into the fft buffer */
- fold( _input1, _Wanal, _Nw, _buffer1, _N, _inCount );
- if(_flags&F_STEREO) fold( _input2, _Wanal, _Nw, _buffer2, _N, _inCount );
-
- /* do an fft */
- if(_flags&F_BITSHUFFLE) {
- pv_rdft( _N, 1, _buffer1, _bitshuffle, _trigland );
- if(_flags&F_STEREO) pv_rdft( _N, 1, _buffer2, _bitshuffle, _trigland );
- }
- else {
- pv_rfft( _buffer1, _N2, 1);
- if(_flags&F_STEREO) pv_rfft( _buffer2, _N2,1);
- }
-
- if(!(_flags&F_NOSPEC)) {
- if(_flags&F_PHCONV) {
- convert( _buffer1, _channel1, _N2, _c_lastphase_in1, get_Fund(), _c_factor_in );
- if(_flags&F_STEREO) convert( _buffer2, _channel2, _N2, _c_lastphase_in2, get_Fund(), _c_factor_in );
- }
- else {
- leanconvert( _buffer1, _channel1, _N2 , !(_flags&F_NOAMP1),!(_flags&F_NOPH1));
- if(_flags&F_STEREO) leanconvert( _buffer2, _channel2, _N2 ,!(_flags&F_NOAMP2),!(_flags&F_NOPH2) );
- }
- }
-
- // ---- BEGIN --------------------------------
-
- Transform(_N,in+((_flags&F_STEREO)?2:1));
-
- // ---- END --------------------------------
-
- if(!(_flags&F_NOSPEC)) {
- if(_flags&F_PHCONV)
- unconvert( _channel1, _buffer1, _N2, _c_lastphase_out, get_Fund(), 1./_c_factor_in );
- else
- leanunconvert( _channel1, _buffer1, _N2 );
- }
-
-
- /* do an inverse fft */
- if(_flags&F_BITSHUFFLE)
- pv_rdft( _N, -1, _buffer1, _bitshuffle, _trigland );
- else
- pv_rfft( _buffer1, _N2, 0);
-
- /* dewindow our result */
- overlapadd( _buffer1, _N, _Wsyn, _output, _Nw, _inCount);
-
- /* set our output and adjust our retaining output buffer */
- const F mult = 1./_N;
- for ( i = 0; i < n; i++ )
- out[0][i] = _output[i] * mult;
-
- for ( i = 0; i < _N-n; i++ )
- _output[i] = _output[i+n];
- for (; i < _N; i++ )
- _output[i] = 0.;
-}
-
-
-void fftease::Set()
-{
- /* preset the objects data */
- const I n = Blocksize(),_N = n*Mult(),_Nw = _N,_N2 = _N/2; //,_Nw2 = _Nw/2;
-
- _inCount = -_Nw;
-
- /* assign memory to the buffers */
- _input1 = new F[_Nw];
- ZeroMem(_input1,_Nw*sizeof(*_input1));
- _buffer1 = new F[_N];
- if(_flags&F_STEREO) {
- _input2 = new F[_Nw];
- ZeroMem(_input2,_Nw*sizeof(*_input2));
- _buffer2 = new F[_N];
- }
-
- if(!(_flags&F_NOSPEC) || (_flags&F_SPECRES)) {
- _channel1 = new F[_N+2];
- ZeroMem(_channel1,(_N+2)*sizeof(*_channel1));
- if(_flags&F_STEREO) {
- _channel2 = new F[_N+2];
- ZeroMem(_channel2,(_N+2)*sizeof(*_channel2));
- }
-
- if(_flags&F_PHCONV) {
- _c_lastphase_in1 = new F[_N2+1];
- ZeroMem(_c_lastphase_in1,(_N2+1)*sizeof(*_c_lastphase_in1));
- if(_flags&F_STEREO) {
- _c_lastphase_in2 = new F[_N2+1];
- ZeroMem(_c_lastphase_in2,(_N2+1)*sizeof(*_c_lastphase_in2));
- }
- _c_lastphase_out = new F[_N2+1];
- ZeroMem(_c_lastphase_out,(_N2+1)*sizeof(*_c_lastphase_out));
-
- _c_factor_in = Samplerate()/(n * PV_2PI);
- }
- }
-
- _output = new F[_Nw];
- ZeroMem(_output,_Nw*sizeof(*_output));
-
- if(_flags&F_BITSHUFFLE) {
- _bitshuffle = new I[_N*2];
- _trigland = new F[_N*2];
- init_rdft( _N, _bitshuffle, _trigland);
- }
-
- _Hwin = new F[_Nw];
- _Wanal = new F[_Nw];
- _Wsyn = new F[_Nw];
- if(_flags&F_BALANCED)
- makewindows( _Hwin, _Wanal, _Wsyn, _Nw, _N, n, 0);
- else
- makehanning( _Hwin, _Wanal, _Wsyn, _Nw, _N, n, 0,0);
-}
-
-void fftease::Clear()
-{
- _bitshuffle = NULL;
- _trigland = NULL;
- _input1 = _input2 = NULL;
- _Hwin = NULL;
- _Wanal = _Wsyn = NULL;
- _buffer1 = _buffer2 = NULL;
- _channel1 = _channel2 = NULL;
- _output = NULL;
-
- _c_lastphase_in1 = _c_lastphase_in2 = _c_lastphase_out = NULL;
-}
-
-void fftease::Delete()
-{
- if(_input1) delete[] _input1;
- if(_buffer1) delete[] _buffer1;
- if(_channel1) delete[] _channel1;
- if(_input2) delete[] _input2;
- if(_buffer2) delete[] _buffer2;
- if(_channel2) delete[] _channel2;
-
- if(_c_lastphase_in1) delete[] _c_lastphase_in1;
- if(_c_lastphase_in2) delete[] _c_lastphase_in2;
- if(_c_lastphase_out) delete[] _c_lastphase_out;
-
- if(_output) delete[] _output;
-
- if(_bitshuffle) delete[] _bitshuffle;
- if(_trigland) delete[] _trigland;
-
- if(_Hwin) delete[] _Hwin;
- if(_Wanal) delete[] _Wanal;
- if(_Wsyn) delete[] _Wsyn;
-}
-
-
diff --git a/externals/grill/fftease/src/fold.c b/externals/grill/fftease/src/fold.c
deleted file mode 100644
index 5b9ce476..00000000
--- a/externals/grill/fftease/src/fold.c
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * multiply current input I by window W (both of length Nw);
- * using modulus arithmetic, fold and rotate windowed input
- * into output array O of (FFT) length N according to current
- * input time n
- */
-void fold( float *I, float *W, int Nw, float *O, int N, int n )
-{
-#if 1
- int i;
- for ( i = 0; i < N; i++ ) O[i] = 0.;
-
- while ( n < 0 ) n += N;
- n %= N;
-
- for ( i = 0; i < Nw; i++ ) {
- O[n] += I[i]*W[i];
- if ( ++n == N ) n = 0;
- }
-#else
- int i;
-
- for ( i = 0; i < N; i++ )
- O[i] = 0.;
-
- while ( n < 0 )
- n += N;
- n %= N;
- for ( i = 0; i < Nw; i++ ) {
- O[n] += I[i]*W[i];
- if ( ++n == N )
- n = 0;
- }
-#endif
-}
-
-
-/*
- * input I is a folded spectrum of length N; output O and
- * synthesis window W are of length Nw--overlap-add windowed,
- * unrotated, unfolded input data into output O
- */
-void overlapadd( float *I, int N, float *W, float *O, int Nw, int n )
-{
-#if 1
- int i ;
- while ( n < 0 ) n += N ;
- n %= N ;
-
- for ( i = 0 ; i < Nw ; i++ ) {
- O[i] += I[n]*W[i] ;
- if ( ++n == N ) n = 0 ;
- }
-#else
- int i ;
- while ( n < 0 )
- n += N ;
- n %= N ;
- for ( i = 0 ; i < Nw ; i++ ) {
- O[i] += I[n]*W[i] ;
- if ( ++n == N )
- n = 0 ;
- }
-
-#endif
-}
-
diff --git a/externals/grill/fftease/src/leanconvert.c b/externals/grill/fftease/src/leanconvert.c
deleted file mode 100644
index d121d896..00000000
--- a/externals/grill/fftease/src/leanconvert.c
+++ /dev/null
@@ -1,84 +0,0 @@
-#include "pv.h"
-
-void leanconvert( float *S, float *C, int N2 , int amp, int ph)
-{
-#if 1
- register int i;
-
- float a = fabs(S[0]); /* real value at f=0 */
- float b = fabs(S[1]); /* real value at f=Nyquist */
-
- C[0] = a;
- C[1] = 0;
- S += 2,C += 2;
-
- if(amp && ph) {
- for ( i = 1; i < N2; i++,S += 2,C += 2 ) {
- C[0] = hypot( S[0], S[1] );
- C[1] = -atan2( S[1], S[0] );
- }
- }
- else if(amp) {
- for ( i = 1; i < N2; i++,S += 2,C += 2 )
- C[0] = hypot( S[0], S[1] );
- }
- else if(ph) {
- for ( i = 1; i < N2; i++,S += 2,C += 2 )
- C[1] = -atan2( S[1], S[0] );
- }
-
- C[0] = b;
- C[1] = 0;
-#else
-
- int real, imag,
- amp, phase;
- float a, b;
- int i;
-
- for ( i = 0; i <= N2; i++ ) {
- imag = phase = ( real = amp = i<<1 ) + 1;
- a = ( i == N2 ? S[1] : S[real] );
- b = ( i == 0 || i == N2 ? 0. : S[imag] );
- C[amp] = hypot( a, b );
- C[phase] = -atan2( b, a );
- }
-#endif
-}
-
-
-/* unconvert essentially undoes what convert does, i.e., it
- turns N2+1 PAIRS of amplitude and frequency values in
- C into N2 PAIR of complex spectrum data (in rfft format)
- in output array S; sampling rate R and interpolation factor
- I are used to recompute phase values from frequencies */
-
-void leanunconvert( float *C, float *S, int N2 )
-{
-#if 1
- register int i;
-
- S[0] = fabs(C[0]);
- S[1] = fabs(C[N2*2]);
- S += 2,C += 2;
-
- for (i = 1; i < N2; i++,S += 2,C += 2 ) {
- S[0] = C[0] * cos( C[1] );
- S[1] = -C[0] * sin( C[1] );
- }
-#else
- int real, imag,
- amp, phase;
- float a, b;
- register int i;
-
- for ( i = 0; i <= N2; i++ ) {
- imag = phase = ( real = amp = i<<1 ) + 1;
- S[real] = *(C+amp) * cos( *(C+phase) );
- if ( i != N2 )
- S[imag] = -*(C+amp) * sin( *(C+phase) );
- }
-
-#endif
-}
-
diff --git a/externals/grill/fftease/src/main.cpp b/externals/grill/fftease/src/main.cpp
deleted file mode 100644
index 75bea448..00000000
--- a/externals/grill/fftease/src/main.cpp
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
-
-FFTease - A set of Live Spectral Processors
-Originally written by Eric Lyon and Christopher Penrose for the Max/MSP platform
-
-Copyright (c)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.
-
-*/
-
-#include "main.h"
-
-
-// Initialization function for xsample library
-static V fftease_main()
-{
- post("");
- post("-------------------------------------------------------------------");
- post("FFTease - A set of Live Spectral Processors");
- post("Originally written by Eric Lyon and Christopher Penrose for MAX/MSP");
- post("");
- post("flext port (version " FFTEASE_VERSION ") provided by Thomas Grill, (C)2003-2004");
- post("-------------------------------------------------------------------");
- post("");
-
- // call the objects' setup routines
- FLEXT_DSP_SETUP(burrow);
- FLEXT_DSP_SETUP(cross);
- FLEXT_DSP_SETUP(dentist);
- FLEXT_DSP_SETUP(disarray);
- FLEXT_DSP_SETUP(drown);
- FLEXT_DSP_SETUP(ether);
- FLEXT_DSP_SETUP(morphine);
- FLEXT_DSP_SETUP(scrape);
- FLEXT_DSP_SETUP(shapee);
- FLEXT_DSP_SETUP(swinger);
- FLEXT_DSP_SETUP(taint);
- FLEXT_DSP_SETUP(thresher);
- FLEXT_DSP_SETUP(vacancy);
- FLEXT_DSP_SETUP(xsyn);
-/*
- FLEXT_DSP_SETUP(pvcompand);
- FLEXT_DSP_SETUP(pvoc);
-
-*/
-}
-
-// setup the library
-FLEXT_LIB_SETUP(fftease,fftease_main)
-
diff --git a/externals/grill/fftease/src/main.h b/externals/grill/fftease/src/main.h
deleted file mode 100644
index 50ca4c66..00000000
--- a/externals/grill/fftease/src/main.h
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
-
-FFTease - A set of Live Spectral Processors
-Originally written by Eric Lyon and Christopher Penrose for the Max/MSP platform
-
-Copyright (c)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 __FFTEASE_H
-#define __FFTEASE_H
-
-#define FFTEASE_VERSION "0.0.0"
-
-
-#define FLEXT_ATTRIBUTES 1
-
-#include <flext.h>
-
-#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 501)
-#error You need at least flext version 0.5.1
-#endif
-
-
-#include "pv.h"
-
-// lazy me
-#define F float
-#define D double
-#define I int
-#define L long
-#define C char
-#define V void
-#define BL bool
-#define S t_sample
-
-
-
-class fftease:
- public flext_dsp
-{
- FLEXT_HEADER(fftease,flext_dsp)
-
-public:
- fftease(I mult,I flags);
- virtual ~fftease();
-
- static F FromdB(F v) { return pow(10.,v*.05); }
-
- inline I get_N() const { return _N; }
- inline F get_Fund() const { return smprt/_N; }
-
-protected:
-
- virtual BL Init();
- virtual V Exit();
-
- virtual V m_dsp(I n,S *const *in,S *const *out);
- virtual V m_signal(I n,S *const *in,S *const *out);
-
- virtual V Set();
- virtual V Clear();
- virtual V Delete();
- virtual V Transform(I _N,S *const *in) = 0;
-
-
- V Mult(I n) { _mult = n; MakeVar(); }
- inline I Mult() const { return _mult; }
-
- F *_input1,*_input2;
- F *_buffer1,*_buffer2;
- F *_channel1,*_channel2;
- F *_output;
- F *_trigland;
- I *_bitshuffle;
- F *_Wanal,*_Wsyn,*_Hwin;
-
- F *_c_lastphase_in1,*_c_lastphase_in2,*_c_lastphase_out;
- F _c_factor_in;
-
- I _inCount;
-
- enum {
- F_STEREO = 0x01,
- F_BALANCED = 0x02,
- F_BITSHUFFLE = 0x04,
- F_RMS = 0x08,
- F_NOSPEC = 0x10,F_SPECRES = 0x20,F_PHCONV = 0x40,
- F_NOAMP1 = 0x100,
- F_NOPH1 = 0x200,
- F_NOAMP2 = 0x400,
- F_NOPH2 = 0x800
- };
-
- I _flags;
- F _rms;
-
-private:
-
- V MakeVar() { _N = Blocksize()*_mult; }
-
- I blsz;
- F smprt;
- I _mult,_N;
-};
-
-
-#endif
diff --git a/externals/grill/fftease/src/makewindows.c b/externals/grill/fftease/src/makewindows.c
deleted file mode 100644
index e26690ec..00000000
--- a/externals/grill/fftease/src/makewindows.c
+++ /dev/null
@@ -1,190 +0,0 @@
-#include "pv.h"
-#include "math.h"
-
-/*
- * make balanced pair of analysis (A) and synthesis (S) windows;
- * window lengths are Nw, FFT length is N, synthesis interpolation
- * factor is I, and osc is true (1) if oscillator bank resynthesis
- * is specified
- */
-void makewindows( float *H, float *A, float *S, int Nw, int N, int I, int osc )
-{
- int i ;
- float sum ;
-
-/*
- * basic Hamming windows
- */
- for ( i = 0 ; i < Nw ; i++ )
- H[i] = A[i] = S[i] = 0.54 - 0.46*cos( PV_2PI*i/(Nw - 1) ) ;
-/*
- * when Nw > N, also apply interpolating (sinc) windows to
- * ensure that window are 0 at increments of N (the FFT length)
- * away from the center of the analysis window and of I away
- * from the center of the synthesis window
- */
- if ( Nw > N ) {
- float x ;
-
-/*
- * take care to create symmetrical windows
- */
- x = -(Nw - 1)/2. ;
- for ( i = 0 ; i < Nw ; i++, x += 1. )
- if ( x != 0. ) {
- A[i] *= N*sin( PV_PI*x/N )/(PV_PI*x) ;
- if ( I )
- S[i] *= I*sin( PV_PI*x/I )/(PV_PI*x) ;
- }
- }
-/*
- * normalize windows for unity gain across unmodified
- * analysis-synthesis procedure
- */
- for ( sum = i = 0 ; i < Nw ; i++ )
- sum += A[i] ;
-
- for ( i = 0 ; i < Nw ; i++ ) {
- float afac = 2./sum ;
- float sfac = Nw > N ? 1./afac : afac ;
- A[i] *= afac ;
- S[i] *= sfac ;
- }
-
- if ( Nw <= N && I ) {
- for ( sum = i = 0 ; i < Nw ; i += I )
- sum += S[i]*S[i] ;
- for ( sum = 1./sum, i = 0 ; i < Nw ; i++ )
- S[i] *= sum ;
- }
-}
-
-void makehamming( float *H, float *A, float *S, int Nw, int N, int I, int osc,int odd )
-{
- int i;
- float sum ;
-
-/*
- * basic Hamming windows
- */
-
-
- if (odd) {
- for ( i = 0 ; i < Nw ; i++ )
- H[i] = A[i] = S[i] = sqrt(0.54 - 0.46*cos( PV_2PI*i/(Nw - 1) ));
- }
-
- else {
-
- for ( i = 0 ; i < Nw ; i++ )
- H[i] = A[i] = S[i] = 0.54 - 0.46*cos( PV_2PI*i/(Nw - 1) );
-
- }
-
-/*
- * when Nw > N, also apply interpolating (sinc) windows to
- * ensure that window are 0 at increments of N (the FFT length)
- * away from the center of the analysis window and of I away
- * from the center of the synthesis window
- */
- if ( Nw > N ) {
- float x ;
-
-/*
- * take care to create symmetrical windows
- */
- x = -(Nw - 1)/2. ;
- for ( i = 0 ; i < Nw ; i++, x += 1. )
- if ( x != 0. ) {
- A[i] *= N*sin( PV_PI*x/N )/(PV_PI*x) ;
- if ( I )
- S[i] *= I*sin( PV_PI*x/I )/(PV_PI*x) ;
- }
- }
-/*
- * normalize windows for unity gain across unmodified
- * analysis-synthesis procedure
- */
- for ( sum = i = 0 ; i < Nw ; i++ )
- sum += A[i] ;
-
- for ( i = 0 ; i < Nw ; i++ ) {
- float afac = 2./sum ;
- float sfac = Nw > N ? 1./afac : afac ;
- A[i] *= afac ;
- S[i] *= sfac ;
- }
-
- if ( Nw <= N && I ) {
- for ( sum = i = 0 ; i < Nw ; i += I )
- sum += S[i]*S[i] ;
- for ( sum = 1./sum, i = 0 ; i < Nw ; i++ )
- S[i] *= sum ;
- }
-}
-
-
-void makehanning( float *H, float *A, float *S, int Nw, int N, int I, int osc, int odd )
-{
- int i;
- float sum ;
-
-/*
- * basic Hanning windows
- */
-
-
- if (odd) {
- for ( i = 0 ; i < Nw ; i++ )
- H[i] = A[i] = S[i] = sqrt(0.5 * (1. + cos(PV_PI + PV_2PI * i / (Nw - 1))));
- }
-
- else {
-
- for ( i = 0 ; i < Nw ; i++ )
- H[i] = A[i] = S[i] = 0.5 * (1. + cos(PV_PI + PV_2PI * i / (Nw - 1)));
-
- }
-
-/*
- * when Nw > N, also apply interpolating (sinc) windows to
- * ensure that window are 0 at increments of N (the FFT length)
- * away from the center of the analysis window and of I away
- * from the center of the synthesis window
- */
- if ( Nw > N ) {
- float x ;
-
-/*
- * take care to create symmetrical windows
- */
- x = -(Nw - 1)/2. ;
- for ( i = 0 ; i < Nw ; i++, x += 1. )
- if ( x != 0. ) {
- A[i] *= N*sin( PV_PI*x/N )/(PV_PI*x) ;
- if ( I )
- S[i] *= I*sin( PV_PI*x/I )/(PV_PI*x) ;
- }
- }
-/*
- * normalize windows for unity gain across unmodified
- * analysis-synthesis procedure
- */
- for ( sum = i = 0 ; i < Nw ; i++ )
- sum += A[i] ;
-
- for ( i = 0 ; i < Nw ; i++ ) {
- float afac = 2./sum ;
- float sfac = Nw > N ? 1./afac : afac ;
- A[i] *= afac ;
- S[i] *= sfac ;
- }
-
- if ( Nw <= N && I ) {
- for ( sum = i = 0 ; i < Nw ; i += I )
- sum += S[i]*S[i] ;
- for ( sum = 1./sum, i = 0 ; i < Nw ; i++ )
- S[i] *= sum ;
- }
-}
-
diff --git a/externals/grill/fftease/src/morphine~.cpp b/externals/grill/fftease/src/morphine~.cpp
deleted file mode 100644
index cda155c8..00000000
--- a/externals/grill/fftease/src/morphine~.cpp
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
-
-FFTease - A set of Live Spectral Processors
-Originally written by Eric Lyon and Christopher Penrose for the Max/MSP platform
-
-Copyright (c)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.
-
-*/
-
-#include "main.h"
-#include <stdlib.h>
-
-class morphine:
- public fftease
-{
- FLEXT_HEADER_S(morphine,fftease,setup)
-
-public:
- morphine(I argc,const t_atom *argv);
-
-protected:
-
- virtual V Transform(I n,S *const *in);
-
- F _index;
-
- struct pickme { I bin; F value; };
- static I sortpicks( const V *a, const V *b );
-
- pickme *_picks;
-
-private:
- virtual V Set();
- virtual V Clear();
- virtual V Delete();
-
- static V setup(t_classid c);
-
- FLEXT_ATTRVAR_F(_index)
-};
-
-FLEXT_LIB_DSP_V("morphine~",morphine)
-
-
-V morphine::setup(t_classid c)
-{
- FLEXT_CADDATTR_VAR1(c,"index",_index);
-}
-
-
-morphine::morphine(I argc,const t_atom *argv):
- fftease(4,F_STEREO|F_BALANCED|F_BITSHUFFLE),
- _index(0)
-{
- /* parse and set object's options given */
- if(argc >= 1) {
- if(CanbeFloat(argv[0]))
- _index = GetAFloat(argv[0]);
- else
- post("%s - Index must be a float value - set to %f",thisName(),_index);
- }
-
- AddInSignal("Messages and input signal 1");
- AddInSignal("Input signal 2");
- AddOutSignal("Transformed signal");
-}
-
-V morphine::Clear()
-{
- _picks = NULL;
- fftease::Clear();
-}
-
-V morphine::Delete()
-{
- fftease::Delete();
- if(_picks) delete[] _picks;
-}
-
-V morphine::Set()
-{
- fftease::Set();
-
- _picks = new pickme[get_N()/2+1];
-}
-
-I morphine::sortpicks( const void *a, const void *b )
-{
- if ( ((pickme *)a)->value > ((pickme *) b)->value ) return 1;
- if ( ((pickme *) a)->value < ((pickme *) b)->value ) return -1;
- return 0;
-}
-
-V morphine::Transform(I _N,S *const *)
-{
- const I _N2 = _N/2;
- I i;
- for ( i = 0; i <= _N2; i++ ) {
- // find amplitude differences between home and visitors
- _picks[i].value = fabs( _channel1[i*2] - _channel2[i*2]);
- _picks[i].bin = i;
- }
-
- // sort our differences in ascending order
- qsort( _picks, _N2+1, sizeof(pickme), sortpicks );
-
- I ix2 = (I)(_index*(_N2+1)+.5)*2;
- if(ix2 < 0) ix2 = 0;
- else if(ix2 > _N+2) ix2 = _N+2;
-
- // choose the bins that are least different first
- for (i=0; i < ix2; i += 2) {
- _channel1[i] = _channel2[i];
- _channel1[i+1] = _channel2[i+1];
- }
-}
-
diff --git a/externals/grill/fftease/src/pv.h b/externals/grill/fftease/src/pv.h
deleted file mode 100644
index 1a555ec7..00000000
--- a/externals/grill/fftease/src/pv.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * This file is part of the pv-lib
- *
- * The pv-lib can be used by everyone as desired
- *
- * (c) Eric Lyon and Christopher Penrose
- */
-
-#include <stdio.h>
-
-/* -------------------------------------
- modifications by Thomas Grill
-*/
-
-/* #include <fts/fts.h> */
-#include <math.h>
-
-#ifdef _MSC_VER
-#pragma warning(disable: 4305)
-#pragma warning(disable: 4244)
-#pragma warning(disable: 4101)
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-#define PV_PI 3.141592653589793115997963468544185161590576171875
-#define PV_2PI (2.*PV_PI)
-
-/* ------------------------------------- */
-
-
-#define FORWARD 1
-#define INVERSE 0
-
-typedef struct {
- float min;
- float max;
-} Bound;
-
-void init_rdft(int n, int *ip, float *w);
-void pv_rdft(int n, int isgn, float *a, int *ip, float *w);
-void fold( float *I, float *W, int Nw, float *O, int N, int n );
-void overlapadd(float *I, int N, float *W, float *O, int Nw, int n );
-void makehanning( float *H, float *A, float *S, int Nw, int N, int I, int osc, int odd );
-void makewindows( float *H, float *A, float *S, int Nw, int N, int I, int osc );
-void leanconvert( float *S, float *C, int N2 , int amp, int ph );
-void leanunconvert( float *C, float *S, int N2 );
-void pv_rfft( float *x, int N, int forward );
-void pv_cfft( float *x, int NC, int forward );
-void convert_new(float *S, float *C, int N2, float *lastphase, float fundamental, float factor );
-void convert(float *S, float *C, int N2, float *lastphase, float fundamental, float factor );
-void unconvert(float *C, float *S, int N2, float *lastphase, float fundamental, float factor );
-
-
-/* ------------------------------------- */
-
-#ifdef __cplusplus
-}
-#endif
-
-/* ------------------------------------- */
-
diff --git a/externals/grill/fftease/src/pvoc~.cpp b/externals/grill/fftease/src/pvoc~.cpp
deleted file mode 100644
index 5f941e09..00000000
--- a/externals/grill/fftease/src/pvoc~.cpp
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
-
-FFTease - A set of Live Spectral Processors
-Originally written by Eric Lyon and Christopher Penrose for the Max/MSP platform
-
-Copyright (c)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.
-
-*/
-
-#include "main.h"
-
-
-class pvoc:
- public fftease
-{
- FLEXT_HEADER_S(pvoc,fftease,setup)
-
-public:
- pvoc(I argc,const t_atom *argv);
-
-protected:
-
- virtual V Transform(I _N2,S *const *in);
-
- BL _invert;
-
- F _threshold,_multiplier;
- F _thresh_dB,_mult_dB;
-
-private:
- V ms_thresh(F v) { _threshold = FromdB(_thresh_dB = v); }
- V ms_mult(F v) { _multiplier = FromdB(_mult_dB = v); }
-
-
- static V setup(t_classid c);
-
- FLEXT_ATTRGET_F(_thresh_dB)
- FLEXT_CALLSET_F(ms_thresh)
- FLEXT_ATTRGET_F(_mult_dB)
- FLEXT_CALLSET_F(ms_mult)
- FLEXT_ATTRVAR_B(_invert)
-};
-
-FLEXT_LIB_DSP_V("pvoc~",pvoc)
-
-
-V pvoc::setup(t_classid c)
-{
- FLEXT_CADDATTR_VAR(c,"thresh",_thresh_dB,ms_thresh);
- FLEXT_CADDATTR_VAR(c,"mult",_mult_dB,ms_mult);
- FLEXT_CADDATTR_VAR1(c,"invert",_invert);
-}
-
-
-pvoc::pvoc(I argc,const t_atom *argv):
- fftease(4,F_STEREO|F_BALANCED|F_BITSHUFFLE|F_NOPH2),
- _thresh_dB(-30),_mult_dB(-18),
- _invert(false)
-{
- /* parse and set object's options given */
- if(argc >= 1) {
- if(CanbeFloat(argv[0]))
- _thresh_dB = GetAFloat(argv[0]);
- else
- post("%s - Threshold must be a float value - set to %0f",thisName(),_thresh_dB);
- }
- if(argc >= 2) {
- if(CanbeFloat(argv[1]))
- _mult_dB = GetAFloat(argv[1]);
- else
- post("%s - Multiplier must be a float value - set to %0f",thisName(),_mult_dB);
- }
- if(argc >= 3) {
- if(CanbeBool(argv[2]))
- _invert = GetABool(argv[2]);
- else
- post("%s - Invert flag must be a boolean value - set to %i",thisName(),_invert?1:0);
- }
-
- ms_thresh(_thresh_dB);
- ms_mult(_mult_dB);
-
- AddInSignal("Messages and input signal");
- AddInSignal("Reference signal");
- AddOutSignal("Transformed signal");
-}
-
-
-V pvoc::Transform(I _N,S *const *in)
-{
- /*
- int freq,amp;
- int chan;
-
- // start osc bank
- for ( chan = lo_bin; chan < hi_bin; chan++ ) {
- freq = ( amp = ( chan << 1 ) ) + 1;
- if ( _channel1[amp] < synt ){
- breaker = 1;
- }
- if( breaker ) {
- breaker = 0 ;
- }
- else {
- _channel1[freq] *= myPInc;
- finc = ( _channel1[freq] - ( f = lastfreq[chan] ) )*Iinv;
- ainc = ( _channel1[amp] - ( a = lastamp[chan] ) )*Iinv;
- address = index[chan];
- for ( n = 0; n < I; n++ ) {
- output[n] += a*table[ (int) address ];
- address += f;
- while ( address >= L )
- address -= L;
- while ( address < 0 )
- address += L;
- a += ainc;
- f += finc;
- }
- lastfreq[chan] = _channel1[freq];
- lastamp[chan] = _channel1[amp];
- index[chan] = address;
- }
- }
- */
-}
-
-
-
diff --git a/externals/grill/fftease/src/scrape~.cpp b/externals/grill/fftease/src/scrape~.cpp
deleted file mode 100644
index dff46dfb..00000000
--- a/externals/grill/fftease/src/scrape~.cpp
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
-
-FFTease - A set of Live Spectral Processors
-Originally written by Eric Lyon and Christopher Penrose for the Max/MSP platform
-
-Copyright (c)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.
-
-*/
-
-#include "main.h"
-#include <stdlib.h>
-
-class scrape:
- public fftease
-{
- FLEXT_HEADER_S(scrape,fftease,setup)
-
-public:
- scrape(I argc,const t_atom *argv);
-
-protected:
-
- virtual V Transform(I n,S *const *in);
-
- F _thresh1,_thresh2;
- F _knee,_cutoff;
- F *_threshfunc;
-
- V UpdThrFun();
-
-private:
- virtual V Set();
- virtual V Clear();
- virtual V Delete();
-
- static V setup(t_classid c);
-
- inline V ms_knee(F knee) { _knee = knee; UpdThrFun(); }
- inline V ms_cutoff(F cutoff) { _cutoff = cutoff; UpdThrFun(); }
- inline V ms_thresh1(F thr) { _thresh1 = thr; UpdThrFun(); }
- inline V ms_thresh2(F thr) { _thresh2 = thr; UpdThrFun(); }
-
- FLEXT_ATTRGET_F(_knee)
- FLEXT_CALLSET_F(ms_knee)
- FLEXT_ATTRGET_F(_cutoff)
- FLEXT_CALLSET_F(ms_cutoff)
- FLEXT_ATTRGET_F(_thresh1)
- FLEXT_CALLSET_F(ms_thresh1)
- FLEXT_ATTRGET_F(_thresh2)
- FLEXT_CALLSET_F(ms_thresh2)
-};
-
-FLEXT_LIB_DSP_V("scrape~",scrape)
-
-
-V scrape::setup(t_classid c)
-{
- FLEXT_CADDATTR_VAR(c,"knee",_knee,ms_knee);
- FLEXT_CADDATTR_VAR(c,"cutoff",_cutoff,ms_cutoff);
- FLEXT_CADDATTR_VAR(c,"thresh1",_thresh1,ms_thresh1);
- FLEXT_CADDATTR_VAR(c,"thresh2",_thresh2,ms_thresh2);
-}
-
-
-scrape::scrape(I argc,const t_atom *argv):
- fftease(4,F_BALANCED|F_BITSHUFFLE),
- _thresh1(.0001),_thresh2(.09),
- _knee(1000),_cutoff(4000)
-
-{
- /* parse and set object's options given */
- if(argc >= 1) {
- if(CanbeFloat(argv[0]))
- _knee = GetAFloat(argv[0]);
- else
- post("%s - Knee must be a float value - set to %f",thisName(),_knee);
- }
- if(argc >= 2) {
- if(CanbeFloat(argv[1])) {
- F c = GetAFloat(argv[1]);
- if(c > 0) _cutoff = c;
- else
- post("%s - Cutoff must be > 0 - set to %f",thisName(),_cutoff);
- }
- else
- post("%s - Cutoff must be a float value - set to %f",thisName(),_cutoff);
- }
-
- AddInSignal("Messages and input signal");
- AddInSignal("Multiplier signal");
- AddOutSignal("Transformed signal");
-}
-
-V scrape::Clear()
-{
- _threshfunc = NULL;
- fftease::Clear();
-}
-
-V scrape::Delete()
-{
- fftease::Delete();
- if(_threshfunc) delete[] _threshfunc;
-}
-
-V scrape::Set()
-{
- fftease::Set();
-
- _threshfunc = new F[get_N()/2];
- UpdThrFun();
-}
-
-V scrape::UpdThrFun()
-{
- const I _N2 = get_N()/2;
- const F funda = get_Fund();
-
- F curfreq = funda;
- for(I i = 0; i < _N2; i++ ) {
- if( curfreq < _knee )
- _threshfunc[i] = 0;
- else if( curfreq >= _knee && curfreq < _cutoff ) {
- const F m = (_knee - curfreq) / (_cutoff - _knee) ;
- _threshfunc[i] = (1-m) * _thresh1 + m * _thresh2 ;
- } else
- _threshfunc[i] = _thresh2;
-
- curfreq += funda ;
- }
-}
-
-/*! \brief Do the spectral transformation
-
- \remark maxamp is calculated later than in the original FFTease scrape~ object
-*/
-V scrape::Transform(I _N,S *const *in)
-{
- const F fmult = *in[0];
- const F *thrf = _threshfunc;
-
- I i;
- F maxamp = 1.;
- for( i = 0; i <= _N; i += 2 )
- if(maxamp < _channel1[i])
- maxamp = _channel1[i];
-
- for( i = 0; i <= _N; i += 2 )
- if(_channel1[i] < *(thrf++) * maxamp)
- _channel1[i] *= fmult;
-}
-
diff --git a/externals/grill/fftease/src/shapee~.cpp b/externals/grill/fftease/src/shapee~.cpp
deleted file mode 100644
index 1e86f801..00000000
--- a/externals/grill/fftease/src/shapee~.cpp
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
-
-FFTease - A set of Live Spectral Processors
-Originally written by Eric Lyon and Christopher Penrose for the Max/MSP platform
-
-Copyright (c)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.
-
-*/
-
-#include "main.h"
-#include <stdlib.h>
-
-class shapee:
- public fftease
-{
- FLEXT_HEADER(shapee,fftease)
-
-public:
- shapee(I argc,const t_atom *argv);
-
-protected:
-
- virtual V Transform(I n,S *const *in);
-
- BL _qual;
-};
-
-FLEXT_LIB_DSP_V("shapee~",shapee)
-
-
-shapee::shapee(I argc,const t_atom *argv):
- fftease(2,F_STEREO|F_BITSHUFFLE),
- _qual(false)
-{
- /* parse and set object's options given */
- if(argc >= 1) {
- if(CanbeBool(argv[0]))
- _qual = GetABool(argv[0]);
- else
- post("%s - Quality must be a boolean value - set to %0i",thisName(),_qual?1:0);
- }
-
- if(_qual) {
- Mult(4);
- _flags |= F_BALANCED;
- }
- else
- Mult(2);
-
- AddInSignal("Messages and frequency reference signal");
- AddInSignal("Amplitude reference signal");
- AddOutSignal("Transformed signal");
-}
-
-#define THRESH 0.000001
-
-V shapee::Transform(I _N,S *const *)
-{
- // lets just shape the entire signal in groups of three
-
- I i;
- for ( i=2; i <= _N; i += 6 ) {
- const F ref = _channel1[i];
- F lowerMult,upperMult;
-
- if(!ref)
- lowerMult = upperMult = 1;
- else {
- lowerMult = _channel1[i-2] / ref;
- upperMult = _channel1[i+2] / ref;
- }
- F newCenter = ( _channel2[i-2]+_channel2[i]+_channel2[i+2] ) / (upperMult + lowerMult + 1);
-
- _channel2[i-2] = lowerMult * newCenter;
- _channel2[i+2] = upperMult * newCenter;
- _channel2[i] = newCenter;
- }
-
- for ( i=0; i <= _N; i+=2 ) {
- _channel1[i] = _channel2[i];
- if ( _channel1[i] == 0. )
- _channel1[i+1] = 0.;
- else if( _channel1[i+1] == 0. )
- _channel1[i+1] = _channel2[i+1];
- }
-}
diff --git a/externals/grill/fftease/src/swinger~.cpp b/externals/grill/fftease/src/swinger~.cpp
deleted file mode 100644
index 4660058d..00000000
--- a/externals/grill/fftease/src/swinger~.cpp
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
-
-FFTease - A set of Live Spectral Processors
-Originally written by Eric Lyon and Christopher Penrose for the Max/MSP platform
-
-Copyright (c)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.
-
-*/
-
-#include "main.h"
-#include <stdlib.h>
-
-
-// add quality switch
-
-class swinger:
- public fftease
-{
- FLEXT_HEADER(swinger,fftease)
-
-public:
- swinger(I argc,const t_atom *argv);
-
-protected:
-
- BL _qual;
-
- virtual V Transform(I n,S *const *in);
-};
-
-FLEXT_LIB_DSP_V("swinger~",swinger)
-
-
-swinger::swinger(I argc,const t_atom *argv):
- fftease(2,F_STEREO|F_BITSHUFFLE|F_NOPH1|F_NOAMP2),
- _qual(false)
-{
- /* parse and set object's options given */
- if(argc >= 1) {
- if(CanbeBool(argv[0]))
- _qual = GetABool(argv[0]);
- else
- post("%s - Quality must be a boolean value - set to %0i",thisName(),_qual?1:0);
- }
-
- if(_qual) {
- Mult(4);
- _flags |= F_BALANCED;
- }
- else
- Mult(2);
-
- AddInSignal("Messages and input signal");
- AddInSignal("Signal to supply phase information");
- AddOutSignal("Transformed signal");
-}
-
-
-V swinger::Transform(I _N,S *const *)
-{
- for (I i = 0; i <= _N; i += 2) _channel1[i+1] = _channel2[i+1];
-}
diff --git a/externals/grill/fftease/src/taint~.cpp b/externals/grill/fftease/src/taint~.cpp
deleted file mode 100644
index b9bf9cf9..00000000
--- a/externals/grill/fftease/src/taint~.cpp
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
-
-FFTease - A set of Live Spectral Processors
-Originally written by Eric Lyon and Christopher Penrose for the Max/MSP platform
-
-Copyright (c)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.
-
-*/
-
-#include "main.h"
-#include <stdlib.h>
-
-class taint:
- public fftease
-{
- FLEXT_HEADER_S(taint,fftease,setup)
-
-public:
- taint(I argc,const t_atom *argv);
-
-protected:
-
- virtual V Transform(I n,S *const *in);
-
- V ms_thresh(F thr) { _threshold = FromdB(_threshdB = thr); }
-
- F _threshold,_threshdB;
- BL _invert;
-
-private:
- static V setup(t_classid c);
-
- FLEXT_ATTRGET_F(_threshdB)
- FLEXT_CALLSET_F(ms_thresh)
- FLEXT_ATTRVAR_B(_invert)
-};
-
-FLEXT_LIB_DSP_V("taint~",taint)
-
-
-V taint::setup(t_classid c)
-{
- FLEXT_CADDATTR_VAR(c,"thresh",_threshdB,ms_thresh);
- FLEXT_CADDATTR_VAR1(c,"invert",_invert);
-}
-
-
-taint::taint(I argc,const t_atom *argv):
- fftease(4,F_STEREO|F_BALANCED|F_BITSHUFFLE|F_NOPH2),
- _threshdB(-10),_invert(false)
-{
- /* parse and set object's options given */
- if(argc >= 1) {
- if(CanbeFloat(argv[0]))
- _threshdB = GetAFloat(argv[0]);
- else
- post("%s - Threshold must be a float value - set to %f",thisName(),_threshdB);
- }
-
- if(argc >= 2) {
- if(CanbeBool(argv[1]))
- _invert = GetABool(argv[1]);
- else
- post("%s - Invert must be a boolean value - set to %0i",thisName(),_invert?1:0);
- }
-
- ms_thresh(_threshdB);
-
- AddInSignal("Messages and frequency reference signal");
- AddInSignal("Amplitude reference signal");
- AddOutSignal("Transformed signal");
-}
-
-
-V taint::Transform(I _N,S *const *)
-{
- register const F thr = _threshold;
-
- if(_invert) {
- // use threshold for inverse filtering to avoid division by zero
- for (I i = 0; i <= _N; i += 2) {
- const F magnitude = _channel2[i];
-
- if ( magnitude < thr )
- _channel1[i] = 0;
- else
- _channel1[i] /= magnitude;
- }
- }
- else {
- // simple multiplication of magnitudes
- for (I i = 0; i <= _N; i += 2) {
- const F magnitude = _channel2[i];
- if (magnitude > thr) _channel1[i] *= magnitude;
- }
- }
-}
diff --git a/externals/grill/fftease/src/thresher~.cpp b/externals/grill/fftease/src/thresher~.cpp
deleted file mode 100644
index 7e674bdf..00000000
--- a/externals/grill/fftease/src/thresher~.cpp
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
-
-FFTease - A set of Live Spectral Processors
-Originally written by Eric Lyon and Christopher Penrose for the Max/MSP platform
-
-Copyright (c)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.
-
-*/
-
-#include "main.h"
-#include <stdlib.h>
-
-class thresher:
- public fftease
-{
- FLEXT_HEADER_S(thresher,fftease,setup)
-
-public:
- thresher();
-
-protected:
- virtual V Set();
- virtual V Clear();
- virtual V Delete();
-
- virtual V Transform(I n,S *const *in);
-
- F *_compositeFrame;
- I *_framesLeft;
- BL _firstFrame;
-
- F _moveThreshold;
- I _maxHoldFrames;
-
-private:
- static V setup(t_classid c);
-};
-
-FLEXT_LIB_DSP("thresher~ nacho~",thresher)
-
-
-V thresher::setup(t_classid )
-{
-}
-
-void thresher::Set()
-{
- fftease::Set();
-
- const F rate = Samplerate();
- const I n = Blocksize(),_N = get_N(),_N2 = _N/2;
-
- _compositeFrame = new F[_N+2];
- _framesLeft = new I[_N2+1];
-
- _firstFrame = true;
- _moveThreshold = .00001 ;
- F _maxHoldTime = 5.0 ;
- _maxHoldFrames = (I)(_maxHoldTime *rate/n);
-}
-
-void thresher::Clear()
-{
- fftease::Clear();
- _compositeFrame = NULL;
- _framesLeft = NULL;
-}
-
-void thresher::Delete()
-{
- fftease::Delete();
- if(_compositeFrame) delete[] _compositeFrame;
- if(_framesLeft) delete[] _framesLeft;
-}
-
-
-thresher::thresher():
- fftease(4,F_BALANCED|F_BITSHUFFLE|F_PHCONV)
-{
- AddInSignal("Messages and input signal");
- AddOutSignal("Transformed signal");
-}
-
-
-V thresher::Transform(I _N,S *const *)
-{
- I *fr = _framesLeft;
- if( _firstFrame ) {
- for (I i = 0; i <= _N; i += 2,++fr ){
- _compositeFrame[i] = _channel1[i];
- _compositeFrame[i+1] = _channel1[i+1];
- *fr = _maxHoldFrames;
- }
- _firstFrame = false;
- }
- else {
- for(I i = 0; i <= _N; i += 2,++fr ){
- if( (fabs( _compositeFrame[i] - _channel1[i] ) > _moveThreshold) || (*fr <= 0) ) {
- _compositeFrame[i] = _channel1[i];
- _compositeFrame[i+1] = _channel1[i+1];
- *fr = _maxHoldFrames;
- }
- else {
- _channel1[i] = _compositeFrame[i];
- _channel1[i+1] = _compositeFrame[i+1];
- --*fr;
- }
- }
- }
-}
diff --git a/externals/grill/fftease/src/vacancy~.cpp b/externals/grill/fftease/src/vacancy~.cpp
deleted file mode 100644
index 53341bb4..00000000
--- a/externals/grill/fftease/src/vacancy~.cpp
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
-
-FFTease - A set of Live Spectral Processors
-Originally written by Eric Lyon and Christopher Penrose for the Max/MSP platform
-
-Copyright (c)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.
-
-*/
-
-#include "main.h"
-#include <stdlib.h>
-
-class vacancy:
- public fftease
-{
- FLEXT_HEADER_S(vacancy,fftease,setup)
-
-public:
- vacancy(I argc,const t_atom *argv);
-
-protected:
- virtual V Transform(I n,S *const *in);
-
- V ms_thresh(F thr) { _threshold = FromdB(_threshdB = thr); }
- V ms_userms(BL r) { if(r) _flags |= F_RMS; else _flags &= ~F_RMS; }
-
- F _threshold,_threshdB;
- BL _invert,_useRms,_swapPhase;
-
-private:
- static V setup(t_classid c);
-
- FLEXT_ATTRGET_F(_threshdB)
- FLEXT_CALLSET_F(ms_thresh)
- FLEXT_ATTRVAR_B(_invert)
- FLEXT_ATTRGET_B(_useRms)
- FLEXT_CALLSET_B(ms_userms)
- FLEXT_ATTRVAR_B(_swapPhase)
-};
-
-FLEXT_LIB_DSP_V("vacancy~",vacancy)
-
-
-V vacancy::setup(t_classid c)
-{
- FLEXT_CADDATTR_VAR(c,"thresh",_threshdB,ms_thresh);
- FLEXT_CADDATTR_VAR1(c,"invert",_invert);
- FLEXT_CADDATTR_VAR(c,"rms",_useRms,ms_userms);
- FLEXT_CADDATTR_VAR1(c,"swap",_swapPhase);
-}
-
-
-vacancy::vacancy(I argc,const t_atom *argv):
- fftease(2,F_STEREO|F_BITSHUFFLE),
- _threshdB(-30),_invert(false),_useRms(true),_swapPhase(false)
-{
- /* parse and set object's options given */
- if(argc >= 1) {
- if(CanbeFloat(argv[0]))
- _threshdB = GetAFloat(argv[0]);
- else
- post("%s - Threshold must be a float value - set to %f",thisName(),_threshdB);
- }
-
- if(argc >= 2) {
- if(CanbeBool(argv[1]))
- _invert = GetABool(argv[1]);
- else
- post("%s - Invert must be a boolean value - set to %0i",thisName(),_invert?1:0);
- }
-
- if(argc >= 3) {
- if(CanbeBool(argv[2]))
- _useRms = GetABool(argv[2]);
- else
- post("%s - Rms flag must be a boolean value - set to %0i",thisName(),_useRms?1:0);
- }
-
- if(argc >= 4) {
- if(CanbeBool(argv[3]))
- _swapPhase = GetABool(argv[3]);
- else
- post("%s - Swapphase flag must be a boolean value - set to %0i",thisName(),_swapPhase?1:0);
- }
-
- ms_thresh(_threshdB);
- ms_userms(_useRms);
-
- AddInSignal("Messages and input signal");
- AddInSignal("Reference signal");
- AddOutSignal("Transformed signal");
-}
-
-
-V vacancy::Transform(I _N,S *const *)
-{
- const F useme = _useRms?_rms * _threshold:_threshold;
-
- // composite here please
- if (_invert) {
- if (_swapPhase) {
- for (I i=0; i < _N; i+=2 )
- if ( _channel1[i] > useme && _channel2[i] < _channel1[i] ) {
- _channel1[i] = _channel2[i];
- _channel1[i+1] = _channel2[i+1];
- }
- }
- else {
- for (I i=0; i < _N; i+=2 )
- if ( _channel1[i] > useme && _channel2[i] < _channel1[i] ) {
- _channel1[i] = _channel2[i];
- if ( _channel1[i+1] == 0. ) _channel1[i+1] = _channel2[i+1];
- }
- }
- }
- else {
- if (_swapPhase) {
- for (I i=0; i < _N; i+=2 )
- if ( _channel1[i] < useme && _channel2[i] > _channel1[i] ) {
- _channel1[i] = _channel2[i];
- _channel1[i+1] = _channel2[i+1];
- }
- }
- else {
- for (I i=0; i < _N; i+=2 )
- if ( _channel1[i] < useme && _channel2[i] > _channel1[i] ) {
- _channel1[i] = _channel2[i];
- if ( _channel1[i+1] == 0. ) _channel1[i+1] = _channel2[i+1];
- }
- }
- }
-}
diff --git a/externals/grill/fftease/src/xsyn~.cpp b/externals/grill/fftease/src/xsyn~.cpp
deleted file mode 100644
index b08ae1e2..00000000
--- a/externals/grill/fftease/src/xsyn~.cpp
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
-
-FFTease - A set of Live Spectral Processors
-Originally written by Eric Lyon and Christopher Penrose for the Max/MSP platform
-
-Copyright (c)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.
-
-*/
-
-#include "main.h"
-#include <stdlib.h>
-
-class xsyn:
- public fftease
-{
- FLEXT_HEADER(xsyn,fftease)
-
-public:
- xsyn();
-
-protected:
- virtual V Transform(I n,S *const *in);
-};
-
-FLEXT_LIB_DSP("xsyn~",xsyn)
-
-
-xsyn::xsyn():
- fftease(2,F_STEREO|F_BITSHUFFLE|F_NOPH2)
-{
- AddInSignal("Messages and source signal 1");
- AddInSignal("Source signal 2");
- AddOutSignal("Transformed signal");
-}
-
-
-V xsyn::Transform(I _N,S *const *)
-{
- F maxamp = 0;
- I i;
- for( i = 0; i <= _N; i+= 2 )
- if(_channel2[i] > maxamp ) maxamp = _channel2[i];
-
- const F f = maxamp?1./maxamp:1.;
-
- for( i = 0; i <= _N; i+= 2 )
- _channel1[i] *= (_channel2[i] * f);
-}
diff --git a/externals/grill/flext/Doxyfile b/externals/grill/flext/Doxyfile
deleted file mode 100644
index 63e8b61d..00000000
--- a/externals/grill/flext/Doxyfile
+++ /dev/null
@@ -1,273 +0,0 @@
-# Doxyfile 1.4.3
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-PROJECT_NAME = flext
-PROJECT_NUMBER = 0.5.0
-OUTPUT_DIRECTORY = ./doc
-CREATE_SUBDIRS = NO
-OUTPUT_LANGUAGE = English
-USE_WINDOWS_ENCODING = NO
-BRIEF_MEMBER_DESC = YES
-REPEAT_BRIEF = YES
-ABBREVIATE_BRIEF = "The $name class" \
- "The $name widget" \
- "The $name file" \
- is \
- provides \
- specifies \
- contains \
- represents \
- a \
- an \
- the
-ALWAYS_DETAILED_SEC = NO
-INLINE_INHERITED_MEMB = NO
-FULL_PATH_NAMES = YES
-STRIP_FROM_PATH = /Applications/util/
-STRIP_FROM_INC_PATH =
-SHORT_NAMES = NO
-JAVADOC_AUTOBRIEF = NO
-MULTILINE_CPP_IS_BRIEF = NO
-DETAILS_AT_TOP = NO
-INHERIT_DOCS = YES
-DISTRIBUTE_GROUP_DOC = NO
-SEPARATE_MEMBER_PAGES = NO
-TAB_SIZE = 8
-ALIASES =
-OPTIMIZE_OUTPUT_FOR_C = NO
-OPTIMIZE_OUTPUT_JAVA = NO
-SUBGROUPING = YES
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
-EXTRACT_ALL = YES
-EXTRACT_PRIVATE = YES
-EXTRACT_STATIC = YES
-EXTRACT_LOCAL_CLASSES = YES
-EXTRACT_LOCAL_METHODS = NO
-HIDE_UNDOC_MEMBERS = NO
-HIDE_UNDOC_CLASSES = NO
-HIDE_FRIEND_COMPOUNDS = NO
-HIDE_IN_BODY_DOCS = NO
-INTERNAL_DOCS = NO
-CASE_SENSE_NAMES = NO
-HIDE_SCOPE_NAMES = NO
-SHOW_INCLUDE_FILES = YES
-INLINE_INFO = YES
-SORT_MEMBER_DOCS = YES
-SORT_BRIEF_DOCS = NO
-SORT_BY_SCOPE_NAME = NO
-GENERATE_TODOLIST = YES
-GENERATE_TESTLIST = YES
-GENERATE_BUGLIST = YES
-GENERATE_DEPRECATEDLIST= YES
-ENABLED_SECTIONS =
-MAX_INITIALIZER_LINES = 30
-SHOW_USED_FILES = YES
-SHOW_DIRECTORIES = YES
-FILE_VERSION_FILTER =
-#---------------------------------------------------------------------------
-# configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-QUIET = NO
-WARNINGS = YES
-WARN_IF_UNDOCUMENTED = YES
-WARN_IF_DOC_ERROR = YES
-WARN_NO_PARAMDOC = NO
-WARN_FORMAT = "$file:$line: $text"
-WARN_LOGFILE =
-#---------------------------------------------------------------------------
-# configuration options related to the input files
-#---------------------------------------------------------------------------
-INPUT = \
- /Users/thomas/Develop/pdmax/flext/source
-FILE_PATTERNS = *.c \
- *.cc \
- *.cxx \
- *.cpp \
- *.c++ \
- *.d \
- *.java \
- *.ii \
- *.ixx \
- *.ipp \
- *.i++ \
- *.inl \
- *.h \
- *.hh \
- *.hxx \
- *.hpp \
- *.h++ \
- *.idl \
- *.odl \
- *.cs \
- *.php \
- *.php3 \
- *.inc \
- *.m \
- *.mm \
- *.dox \
- *.C \
- *.CC \
- *.C++ \
- *.II \
- *.I++ \
- *.H \
- *.HH \
- *.H++ \
- *.CS \
- *.PHP \
- *.PHP3 \
- *.M \
- *.MM
-RECURSIVE = NO
-EXCLUDE =
-EXCLUDE_SYMLINKS = NO
-EXCLUDE_PATTERNS =
-EXAMPLE_PATH =
-EXAMPLE_PATTERNS = *
-EXAMPLE_RECURSIVE = NO
-IMAGE_PATH =
-INPUT_FILTER =
-FILTER_PATTERNS =
-FILTER_SOURCE_FILES = NO
-#---------------------------------------------------------------------------
-# configuration options related to source browsing
-#---------------------------------------------------------------------------
-SOURCE_BROWSER = NO
-INLINE_SOURCES = NO
-STRIP_CODE_COMMENTS = YES
-REFERENCED_BY_RELATION = NO
-REFERENCES_RELATION = NO
-USE_HTAGS = NO
-VERBATIM_HEADERS = YES
-#---------------------------------------------------------------------------
-# configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-ALPHABETICAL_INDEX = NO
-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 = YES
-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 = YES
-LATEX_OUTPUT = latex
-LATEX_CMD_NAME = latex
-MAKEINDEX_CMD_NAME = makeindex
-COMPACT_LATEX = NO
-PAPER_TYPE = a4wide
-EXTRA_PACKAGES =
-LATEX_HEADER =
-PDF_HYPERLINKS = YES
-USE_PDFLATEX = YES
-LATEX_BATCHMODE = NO
-LATEX_HIDE_INDICES = 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
-XML_OUTPUT = xml
-XML_SCHEMA =
-XML_DTD =
-XML_PROGRAMLISTING = YES
-#---------------------------------------------------------------------------
-# configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-GENERATE_AUTOGEN_DEF = NO
-#---------------------------------------------------------------------------
-# configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-GENERATE_PERLMOD = NO
-PERLMOD_LATEX = NO
-PERLMOD_PRETTY = YES
-PERLMOD_MAKEVAR_PREFIX =
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor
-#---------------------------------------------------------------------------
-ENABLE_PREPROCESSING = YES
-MACRO_EXPANSION = YES
-EXPAND_ONLY_PREDEF = NO
-SEARCH_INCLUDES = YES
-INCLUDE_PATH =
-INCLUDE_FILE_PATTERNS =
-PREDEFINED = FLEXT_SYS=2 \
- FLEXT_SHARED \
- __DOXYGEN__
-EXPAND_AS_DEFINED =
-SKIP_FUNCTION_MACROS = YES
-#---------------------------------------------------------------------------
-# Configuration::additions 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
-GROUP_GRAPHS = YES
-UML_LOOK = NO
-TEMPLATE_RELATIONS = NO
-INCLUDE_GRAPH = YES
-INCLUDED_BY_GRAPH = YES
-CALL_GRAPH = NO
-GRAPHICAL_HIERARCHY = YES
-DIRECTORY_GRAPH = YES
-DOT_IMAGE_FORMAT = png
-DOT_PATH =
-DOTFILE_DIRS =
-MAX_DOT_GRAPH_WIDTH = 1024
-MAX_DOT_GRAPH_HEIGHT = 1024
-MAX_DOT_GRAPH_DEPTH = 1000
-DOT_TRANSPARENT = NO
-DOT_MULTI_TARGETS = NO
-GENERATE_LEGEND = YES
-DOT_CLEANUP = YES
-#---------------------------------------------------------------------------
-# Configuration::additions related to the search engine
-#---------------------------------------------------------------------------
-SEARCHENGINE = NO
diff --git a/externals/grill/flext/Makefile.am b/externals/grill/flext/Makefile.am
deleted file mode 100755
index 0cf89b38..00000000
--- a/externals/grill/flext/Makefile.am
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# automake template
-# added by tim blechmann
-#
-
-SUBDIRS = source tutorial
-
-EXTRA_DIST = flext.doxy \ No newline at end of file
diff --git a/externals/grill/flext/bootstrap.sh b/externals/grill/flext/bootstrap.sh
deleted file mode 100755
index 8e1a99b2..00000000
--- a/externals/grill/flext/bootstrap.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-#! /bin/sh
-
-aclocal \
-&& automake --foreign \
-&& autoconf
diff --git a/externals/grill/flext/build.bat b/externals/grill/flext/build.bat
deleted file mode 100644
index 4f97f0cd..00000000
--- a/externals/grill/flext/build.bat
+++ /dev/null
@@ -1,58 +0,0 @@
-@echo off
-
-rem
-rem flext - C++ layer for Max/MSP and pd (pure data) externals
-rem
-rem Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org)
-rem For information on usage and redistribution, and for a DISCLAIMER OF ALL
-rem WARRANTIES, see the file, "license.txt," in this distribution.
-rem
-rem more information on http://grrrr.org/ext
-rem ------------------------------------------------------------------------
-rem
-rem To build flext or flext-based externals simply run this script.
-rem Running it without arguments will print some help to the console.
-rem
-rem ------------------------------------------------------------------------
-
-set flext=%~dp0
-
-rem Arguments:
-rem %1 - system (pd/max)
-rem %2 - compiler (msvc/gcc/mingw/cygwin/bcc/icc)
-rem %3 - target (build/clean/install)
-
-set platform=win
-set rtsys=%1
-set compiler=%2
-set target=%3
-
-rem --- The subbatch knowns which make utility to use ---
-set subbatch=%flext%buildsys\build-%compiler%.bat
-
-if "%platform%"=="" goto syntax
-if "%rtsys%"=="" goto syntax
-if "%compiler%"=="" goto syntax
-
-if not exist %subbatch% goto syntax
-
-call %subpatch% %subbatch% %platform% %rtsys% %target% %4 %5 %6 %7 %8 %9
-
-goto end
-
-rem -----------------------------------------
-:syntax
-
-echo .
-echo SYNTAX: build [system] [compiler] {target}
-echo system ... pd / max
-echo compiler ... msvc / gcc / mingw / cygwin / bcc / icc
-echo target ... all (default) / clean / install
-echo .
-echo Please make sure that your make program and compiler can be accessed with the
-echo system path and that all relevant environment variables are properly set.
-echo .
-echo For further information read flext/build.txt
-echo .
-
-:end
diff --git a/externals/grill/flext/build.sh b/externals/grill/flext/build.sh
deleted file mode 100644
index c467fd45..00000000
--- a/externals/grill/flext/build.sh
+++ /dev/null
@@ -1,57 +0,0 @@
-#! /bin/bash
-
-# flext - C++ layer for Max/MSP and pd (pure data) externals
-#
-# Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org)
-# For information on usage and redistribution, and for a DISCLAIMER OF ALL
-# WARRANTIES, see the file, "license.txt," in this distribution.
-#
-# more information on http://grrrr.org/ext
-# ------------------------------------------------------------------------
-#
-# To build flext or flext-based externals simply run this script.
-# Running it without arguments will print some help to the console.
-#
-# ------------------------------------------------------------------------
-
-flext=${0%/*}/
-if [ "$flext" = "$0"/ ]; then flext=./ ; fi
-
-# Arguments:
-# $1 - system (pd/max)
-# $2 - compiler (msvc/gcc/mingw/cygwin/bcc/icc)
-# $3 - target (build/clean/install)
-
-unamesys=$(uname -s)
-
-case $unamesys in
- Linux) platform=lnx;;
- Darwin) platform=mac;;
- CYGWIN*|MINGW*) platform=win;;
- *) echo Platform $unamesys not supported; exit;;
-esac
-
-rtsys=$1
-compiler=$2
-target=$3
-
-# --- The subbatch knows which make utility to use ---
-subbatch=${flext}buildsys/build-${compiler}.sh
-
-if
- [ -n "$platform" -a -n "$rtsys" -a -n "$compiler" -a -f $subbatch ]
-then
- sh $subbatch $platform $rtsys $target $4 $5 $6 $7 $8 $9
-else
- echo
- echo SYNTAX: build.sh [system] [compiler] {target}
- echo system ..... pd / max
- echo compiler ... msvc / gcc / mingw / cygwin / bcc / icc
- echo target ..... build \(default\) / clean / install
- echo
- echo Please make sure that your make program and compiler can be accessed with the
- echo system path and that all relevant environment variables are properly set.
- echo
- echo For further information read flext/build.txt
- echo
-fi
diff --git a/externals/grill/flext/build.txt b/externals/grill/flext/build.txt
deleted file mode 100644
index 04eb5248..00000000
--- a/externals/grill/flext/build.txt
+++ /dev/null
@@ -1,251 +0,0 @@
-flext - C++ layer for Max/MSP and pd (pure data) externals
-
-Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-----------------------------------------------------------------------------
-
-This document consists of the following parts:
-
-0) Important stuff at the beginning
-1) Using the flext build system
-1.1) Building and installing flext
-1.2) Building externals
-1.3) Tested configurations
-
-2) Using autoconf
-
-3) Other ways to compile flext and flext-based externals
-
-----------------------------------------------------------------------------
-
-0) Important stuff at the beginning
-===================================
-
-Please be aware that the build system might have difficulties handling paths with spaces.
-Under unix you might get along with escaping your\ path or quoting "your path".
-Under Windows escaping doesn't work at all and quoting might not work either - therefore it's
-best not to use spaced paths at all.
-
-----------------------------------------------------------------------------
-
-1) Using the flext build system
-===============================
-
-flext provides a universal build system which supports
-
-- various operating systems
- Windows (win)
- Linux (lnx)
- MacOSX (mac)
-- various real-time systems
- Pure Data (pd)
- Max/MSP (max)
-- various make programs
- GNU make (gnumake)
- Microsoft nmake (nmake)
- Borland make (bmake)
-- various compilers
- Microsoft Visual C/C++ 6.0 or .NET 2002/2003 (msvc)
- GNU gcc 2.95 and above (gcc,cygwin,mingw)
- Borland bcc32 (bcc)
-
-Useful combinations of the above are
-
-under Windows:
-pd msvc, using nmake
-pd cygwin, using GNU make
-pd mingw, using GNU make (from the CMD prompt, not msys!)
-max msvc, using nmake
-max cygwin, using GNU make
-max mingw, using GNU make (from the CMD prompt, not msys!)
-pd bcc, using Borland make
-
-under Linux or MacOSX:
-pd gcc, using GNU make
-
-under MacOSX:
-max gcc, using GNU make - Mach-O externals only (Max 4.5 upwards)
-
-
-There are two central scripts in the flext folder which invoke the building process:
-- build.sh for bash shells (Linux, MacOSX, cygwin)
-- build.bat for the Windows command prompt
-
-A project needs to provide some information in order to be built properly.
-By default, this resides in a file called package.txt
-
-
-Please note, that the build system is shell-oriented, which means, that you'll have
-to launch a command prompt (cmd.exe under Windows) and probably also set some
-environment variables for your development system (e.g. run vcvars32.bat included with Microsoft Visual Studio)
-
-By invoking one of the build scripts (e.g. with "bash build.sh" under unix,
-or just "build" unter Windows) you'll get some lines of help.
-Operating System, real-time system and compiler need to be provided as arguments.
-
-
-See buildsys/readme.txt for developer-centered information.
-
-
-1.1) Prerequisites
-==================
-
-Linux:
-- A gnu g/g++ compiler should be present on any system.
- The command "g++ --version" should show version 2.95 at least. Compiler version >= 3.3 is recommended.
-
-OSX:
-- The developer package must be installed which contains all necessary parts.
-
-Windows:
-- Microsoft Visual Studio 6, .NET 2002, .NET 2003 or .NET 2005
- be sure to use the VCVARS32.BAT (or probably SDKVARS.BAT) command on the prompt to set up the environment variables
-or
-- cygwin with binutils, gcc and make packages
-
-
-
-1.2) Building and installing flext
-==================================
-
-Flext can build itself using the build system.
-From the flext main directory, run the build script
-
-e.g. under Windows
- build pd msvc
-or under unix with
- bash build.sh pd gcc
-
-When you run it for the first time, one or more configuration files will be created
-from templates - you will get a message on the console.
-You should edit the files to adapt it to your system.
-
-Depending on your platform these will have name like
-buildsys/config-win-pd-msvc.txt
-or
-buildsys/config-lnx-pd-gcc.txt
-or
-buildsys/config-mac-max-gcc.txt
-
-
-After editing the files you will have to run the build script again to ensure that flext is built.
-
-After successfully building everything, you can install flext with (under Windows)
- build pd msvc install
-or (under unix)
- bash build.sh pd gcc install
-
-
-You will probably have to have superuser rights in order to install things
-into the default location.
-(try "sudo" or "su -c" prefixes, or log in as root)
-
-
-1.3) Building externals
-=======================
-
-The flext build system can be used to compile flext-based externals or also
-native PD and Max/MSP externals, provided there is a package.txt file in the project folder.
-
-In the shell, change to the project folder.
-Then, simply run the flext build script,
-
-e.g. under Windows
- ..\flext\build pd msvc
-Then install your newly built external with
- ..\flext\build pd msvc install
-You can clean up the intermediate build folders with
- ..\flext\build pd msvc clean
-
-or under unix with
- bash ../flext/build.sh pd gcc
-Then install your external with
- bash ../flext/build.sh pd gcc install
-You can clean up the intermediate build folders with
- bash ../flext/build.sh pd gcc clean
-
-
-1.4) Tested configurations
-==========================
-
-Both flext and flext-based externals have been successfully built with the
-following combination of platform-system-compiler, build type.
-A missing combination does not necessarily mean that it won't work.
-
-win-pd-msvc, single/multi/shared
-win-pd-bcc, single/multi/shared
-win-pd-mingw, single/multi/shared (from CMD prompt, not MSYS)
-win-pd-cygwin, single/multi/shared
-win-max-msvc, single/multi/shared
-win-max-cygwin, single/multi/shared
-win-max-mingw, single/multi/shared
-
-
-mac-pd-gcc, single/multi/shared
-mac-max-gcc, single/multi/shared
-
-lnx-pd-gcc, single/multi/shared
-
-----------------------------------------------------------------------------
-
-2) Using autoconf
-=================
-
-Thanks to Tim Blechmann, flext can also be built using autoconf.
-This only works under unix shells.
-
-When starting from a fresh cvs-based copy of flext first run
-./bootstrap.sh
-
-then you can run
-./configure --help
-to get a page of options.
-
-You need to pass the path to the PD source files to the ./configure script, e.g. with
-./configure --with-sysdir=/usr/local/src/pd/src
-
-Then build flext with
-make
-and install it with
-su -c "make install"
-
-----------------------------------------------------------------------------
-
-3) Other ways to compile flext and flext-based externals
-========================================================
-
-- Windows - Microsoft Visual Studio projects (.vcproj files)
-
- Please have a look at the projects delivered with flext and flext-based externals.
-
-- MacOSX - Apple Xcode projects (.xcode bundles)
-
- Please have a look at the projects delivered with flext and flext-based externals.
-
- Xcode projects often use some Source Trees (definable in the Xcode Preferences).
- - Flext - the flext main folder
- - PD - the PD installation
- - Max SDK - the Max SDK (path ending with "c74support")
- - Max Common - Max common files (normally /Library/Application\ Support/Cycling\ \'74 )
-
-- MacOSX - Metrowerks Codewarrior (.mcp files)
-
- You should have the following "Source Trees" (CW preferences, not project specific!) defined:
- "OS X Volume" - Pointing to your OSX boot drive
- "flext" - Pointing to the flext main directory
- "Cycling74 OSX" - Pointing to the SDK for Max/MSP - the path should end with /c74support
-
- With your project using flext use the prefix file "flcwmax-x.h" or,
- alternatively "flcwmax-x-thr.h" for threading support.
-
-- MacOS9 - Metrowerks Codewarrior (.mcp files)
-
- You should have the following "Source Trees" (CW preferences, not project specific!) defined:
- "flext" - Pointing to the flext main directory
- "Cycling74" - Pointing to the Cycling 74 SDK
- "MP SDK" - Pointing to the Multiprocessing SDK (for threading support)
-
- With your project using flext use the prefix file "flcwmax.h" or,
- alternatively "flcwmax-thr.h" for threading support.
diff --git a/externals/grill/flext/build/bmake-win-bcc.inc b/externals/grill/flext/build/bmake-win-bcc.inc
deleted file mode 100644
index a54bb367..00000000
--- a/externals/grill/flext/build/bmake-win-bcc.inc
+++ /dev/null
@@ -1,17 +0,0 @@
-!ifdef SIMD
-DEFS=$(DEFS) /DFLEXT_USE_SIMD
-!endif
-
-!ifdef SNDOBJ
-SRCS=$(SRCS) $(SRCS_SNDOBJ)
-HDRS=$(HDRS) $(HDRS_SNDOBJ)
-INCPATH=$(INCPATH) /I$(SNDOBJ)\include
-LIBS=$(LIBS) $(SNDOBJ)\lib\sndobj.lib
-!endif
-
-!ifdef STK
-SRCS=$(SRCS) $(SRCS_STK)
-HDRS=$(HDRS) $(HDRS_STK)
-INCPATH=$(INCPATH) /I$(STK)\include
-LIBS=$(LIBS) $(STK)\lib\stk.lib
-!endif
diff --git a/externals/grill/flext/build/config-lnx.def b/externals/grill/flext/build/config-lnx.def
deleted file mode 100644
index 88c43f4d..00000000
--- a/externals/grill/flext/build/config-lnx.def
+++ /dev/null
@@ -1,2 +0,0 @@
-# comment out to inhibit SIMD (Altivec/SSE) usage
-SIMD=1
diff --git a/externals/grill/flext/build/config-mac.def b/externals/grill/flext/build/config-mac.def
deleted file mode 100644
index 88c43f4d..00000000
--- a/externals/grill/flext/build/config-mac.def
+++ /dev/null
@@ -1,2 +0,0 @@
-# comment out to inhibit SIMD (Altivec/SSE) usage
-SIMD=1
diff --git a/externals/grill/flext/build/config-win.def b/externals/grill/flext/build/config-win.def
deleted file mode 100644
index 88c43f4d..00000000
--- a/externals/grill/flext/build/config-win.def
+++ /dev/null
@@ -1,2 +0,0 @@
-# comment out to inhibit SIMD (Altivec/SSE) usage
-SIMD=1
diff --git a/externals/grill/flext/build/gnumake-lnx-gcc.inc b/externals/grill/flext/build/gnumake-lnx-gcc.inc
deleted file mode 100644
index aec212c5..00000000
--- a/externals/grill/flext/build/gnumake-lnx-gcc.inc
+++ /dev/null
@@ -1,13 +0,0 @@
-ifdef SIMD
-DEFS += -DFLEXT_USE_SIMD
-endif
-
-ifdef SNDOBJ_LIB
-SRCS+=$(SRCS_SNDOBJ)
-HDRS+=$(HDRS_SNDOBJ)
-endif
-
-ifdef STK_LIB
-SRCS+=$(SRCS_STK)
-HDRS+=$(HDRS_STK)
-endif
diff --git a/externals/grill/flext/build/gnumake-lnx-icc.inc b/externals/grill/flext/build/gnumake-lnx-icc.inc
deleted file mode 100644
index aec212c5..00000000
--- a/externals/grill/flext/build/gnumake-lnx-icc.inc
+++ /dev/null
@@ -1,13 +0,0 @@
-ifdef SIMD
-DEFS += -DFLEXT_USE_SIMD
-endif
-
-ifdef SNDOBJ_LIB
-SRCS+=$(SRCS_SNDOBJ)
-HDRS+=$(HDRS_SNDOBJ)
-endif
-
-ifdef STK_LIB
-SRCS+=$(SRCS_STK)
-HDRS+=$(HDRS_STK)
-endif
diff --git a/externals/grill/flext/build/gnumake-mac-gcc.inc b/externals/grill/flext/build/gnumake-mac-gcc.inc
deleted file mode 100644
index aec212c5..00000000
--- a/externals/grill/flext/build/gnumake-mac-gcc.inc
+++ /dev/null
@@ -1,13 +0,0 @@
-ifdef SIMD
-DEFS += -DFLEXT_USE_SIMD
-endif
-
-ifdef SNDOBJ_LIB
-SRCS+=$(SRCS_SNDOBJ)
-HDRS+=$(HDRS_SNDOBJ)
-endif
-
-ifdef STK_LIB
-SRCS+=$(SRCS_STK)
-HDRS+=$(HDRS_STK)
-endif
diff --git a/externals/grill/flext/build/gnumake-win-cygwin.inc b/externals/grill/flext/build/gnumake-win-cygwin.inc
deleted file mode 100644
index 1eb1ce77..00000000
--- a/externals/grill/flext/build/gnumake-win-cygwin.inc
+++ /dev/null
@@ -1,17 +0,0 @@
-ifdef SIMD
-DEFS += -DFLEXT_USE_SIMD
-endif
-
-ifdef SNDOBJ
-SRCS+=$(SRCS_SNDOBJ)
-HDRS+=$(HDRS_SNDOBJ)
-INCPATH+=-I$(SNDOBJ)
-LIBS+=-lsndobj
-endif
-
-ifdef STK
-SRCS+=$(SRCS_STK)
-HDRS+=$(HDRS_STK)
-INCPATH+=-I$(STK)
-LIBS+=-lstk
-endif
diff --git a/externals/grill/flext/build/gnumake-win-mingw.inc b/externals/grill/flext/build/gnumake-win-mingw.inc
deleted file mode 100644
index 1eb1ce77..00000000
--- a/externals/grill/flext/build/gnumake-win-mingw.inc
+++ /dev/null
@@ -1,17 +0,0 @@
-ifdef SIMD
-DEFS += -DFLEXT_USE_SIMD
-endif
-
-ifdef SNDOBJ
-SRCS+=$(SRCS_SNDOBJ)
-HDRS+=$(HDRS_SNDOBJ)
-INCPATH+=-I$(SNDOBJ)
-LIBS+=-lsndobj
-endif
-
-ifdef STK
-SRCS+=$(SRCS_STK)
-HDRS+=$(HDRS_STK)
-INCPATH+=-I$(STK)
-LIBS+=-lstk
-endif
diff --git a/externals/grill/flext/build/nmake-win-msvc.inc b/externals/grill/flext/build/nmake-win-msvc.inc
deleted file mode 100644
index 9dee194d..00000000
--- a/externals/grill/flext/build/nmake-win-msvc.inc
+++ /dev/null
@@ -1,3 +0,0 @@
-!ifdef SIMD
-DEFS=$(DEFS) /DFLEXT_USE_SIMD
-!endif
diff --git a/externals/grill/flext/buildsys/bmake-ext.inc b/externals/grill/flext/buildsys/bmake-ext.inc
deleted file mode 100644
index 1455c83e..00000000
--- a/externals/grill/flext/buildsys/bmake-ext.inc
+++ /dev/null
@@ -1 +0,0 @@
-OUTNAME=$(NAME)
diff --git a/externals/grill/flext/buildsys/bmake-flext.inc b/externals/grill/flext/buildsys/bmake-flext.inc
deleted file mode 100644
index 2e7faf0c..00000000
--- a/externals/grill/flext/buildsys/bmake-flext.inc
+++ /dev/null
@@ -1,3 +0,0 @@
-DEFS=$(DEFS) /DFLEXT_EXPORTS
-
-OUTNAME=$(FLEXTNAME)
diff --git a/externals/grill/flext/buildsys/bmake-sub.mak b/externals/grill/flext/buildsys/bmake-sub.mak
deleted file mode 100644
index f55fcc4f..00000000
--- a/externals/grill/flext/buildsys/bmake-sub.mak
+++ /dev/null
@@ -1,44 +0,0 @@
-# include flext version number
-!include $(BUILDPATH)version.inc
-
-# general settings
-!include $(BUILDPATH)config-$(PLATFORM)-$(RTSYS)-$(COMPILER).txt
-
-###############################
-# project-specific definitions
-
-# package info
-!if "$(PKGINFO)" != "" && "$(PKGINFO)" != "1"
-!include $(PKGINFO)
-!endif
-
-# special package settings
-!ifdef USRCONFIG
-!include $(USRCONFIG)
-!endif
-
-# package specific make stuff
-!ifdef USRMAKE
-!include $(USRMAKE)
-!endif
-
-##############################
-# flext-specific make stuff
-
-!include $(BUILDPATH)bmake.inc
-
-!include $(BUILDPATH)bmake-$(BUILDCLASS).inc
-
-##############################
-# platform-specific make stuff
-
-!include $(BUILDPATH)$(PLATFORM)\$(RTSYS)\bmake-$(COMPILER).inc
-
-!include $(BUILDPATH)$(PLATFORM)\$(RTSYS)\bmake-$(COMPILER)-$(BUILDCLASS).inc
-
-##############################
-# general make stuff
-
-!include $(BUILDPATH)$(PLATFORM)\bmake-$(COMPILER).inc
-
-!include $(BUILDPATH)$(PLATFORM)\bmake-$(COMPILER)-$(BUILDCLASS).inc
diff --git a/externals/grill/flext/buildsys/bmake.inc b/externals/grill/flext/buildsys/bmake.inc
deleted file mode 100644
index c8dac6fa..00000000
--- a/externals/grill/flext/buildsys/bmake.inc
+++ /dev/null
@@ -1,67 +0,0 @@
-##############################################
-# flext defines
-##############################################
-
-CFLAGS=$(CFLAGS) $(UFLAGS)
-
-!ifdef DEBUG
-CFLAGS=$(CFLAGS) /D_DEBUG $(DFLAGS)
-!else
-CFLAGS=$(CFLAGS) /DNDEBUG $(OFLAGS)
-!endif
-
-
-!ifdef SHARED
-# --- shared ---
-DEFS=$(DEFS) /DFLEXT_SHARED
-
-!else
-!ifdef THREADED
-# --- static multi-threaded ---
-DEFS=$(DEFS) /DFLEXT_THREADS
-
-!else
-# --- static single-threaded ---
-
-!endif
-!endif
-
-##############################################
-# name of flext library
-##############################################
-
-!ifdef SHARED
-TYPEEXT=_
-!else
-!ifdef THREADED
-TYPEEXT=_t
-!else
-TYPEEXT=_s
-!endif
-!endif
-
-!ifdef DEBUG
-MODEEXT=d
-!else
-!ifdef PROFILE
-MODEEXT=p
-!else
-MODEEXT=
-!ifdef SHARED
-TYPEEXT=
-!endif
-!endif
-!endif
-
-FLEXTNAME=flext-$(RTSYS)$(TYPEEXT)$(MODEEXT)
-
-##############################################
-# product name and folder
-##############################################
-
-!ifndef SRCDIR
-SRCDIR=.
-!endif
-
-OUTNAME=$(NAME)
-OUTSUB=$(TARGETMODE)-$(TARGETTYPE)
diff --git a/externals/grill/flext/buildsys/bmake.mak b/externals/grill/flext/buildsys/bmake.mak
deleted file mode 100644
index 5b5ea10a..00000000
--- a/externals/grill/flext/buildsys/bmake.mak
+++ /dev/null
@@ -1,110 +0,0 @@
-# required settings:
-#
-# PLATFORM - win/mac/lnx
-# RTSYS - pd/max
-# COMPILER - msvc/gcc/mingw/cygwin
-# BUILDPATH including trailing \
-
-###############################################
-# package info
-
-!ifndef PKGINFO
-PKGINFO=package.txt
-!endif
-
-!if "$(PKGINFO)" != "" && "$(PKGINFO)" != "1"
-!include $(PKGINFO)
-!endif
-
-!ifndef NAME
-!error NAME variable must be defined (name of target)
-!endif
-
-!ifndef SRCS
-!error SRCS variable must be defined (list of source files)
-!endif
-
-###############################################
-# check variables
-
-!ifndef BUILDCLASS
-BUILDCLASS=ext
-!endif
-
-!ifndef BUILDMODE
-BUILDMODE=release
-!endif
-
-!ifndef BUILDTYPE
-BUILDTYPE=single
-!endif
-
-##############################
-
-#!ifndef TARGETMODE
-#TARGETMODE=$(BUILDMODE)
-#!endif
-
-#!ifndef TARGETTYPE
-#TARGETTYPE=$(BUILDTYPE)
-#!endif
-
-###############################################
-
-SYSCONFIG=$(BUILDPATH)config-$(PLATFORM)-$(RTSYS)-$(COMPILER).txt
-SYSDEFAULT=$(BUILDPATH)$(PLATFORM)\$(RTSYS)\config-$(COMPILER).def
-
-OPTIONS=-f $(BUILDPATH)bmake-sub.mak -N \
- PLATFORM=$(PLATFORM) RTSYS=$(RTSYS) COMPILER=$(COMPILER) \
- BUILDPATH=$(BUILDPATH) PKGINFO=$(PKGINFO) BUILDCLASS=$(BUILDCLASS)
-
-###############################################
-
-!ifdef BUILDDIR
-USRCONFIG=config.txt
-USRDEFAULT=$(BUILDDIR)\config-$(PLATFORM).def
-
-USRMAKE=$(BUILDDIR)\bmake-$(PLATFORM)-$(COMPILER).inc
-
-OPTIONS=$(OPTIONS) USRCONFIG=$(USRCONFIG) USRMAKE=$(USRMAKE)
-!endif
-
-###############################################
-# include file describing default target dependencies
-
-!include $(BUILDPATH)targets.inc
-
-!include $(BUILDPATH)targets-$(BUILDCLASS).inc
-
-###############################################
-
-.precious: $(SYSCONFIG) $(USRCONFIG)
-
-$(SYSCONFIG): $(SYSDEFAULT)
- @copy $** $@
- @echo -------------------------------------------------------------------------
- @echo A default system configuration file has been created.
- @echo Please edit $(SYSCONFIG)
- @echo to match your platform and start again.
- @echo -------------------------------------------------------------------------
- @exit 1
-
-!ifdef BUILDDIR
-$(USRCONFIG): $(USRDEFAULT)
- @copy $** $@
- @echo -------------------------------------------------------------------------
- @echo A default package configuration file has been created.
- @echo Please edit $(USRCONFIG) and start again.
- @echo -------------------------------------------------------------------------
- @exit 1
-
-$(USRDEFAULT) $(USRMAKE):
- @echo -------------------------------------------------------------------------
- @echo Your combination of platform, system and compiler is not supported yet.
- @echo Required files:
- @echo $(USRDEFAULT)
- @echo and
- @echo $(USRMAKE)
- @echo -------------------------------------------------------------------------
- @exit 1
-!endif
diff --git a/externals/grill/flext/buildsys/build-bcc.bat b/externals/grill/flext/buildsys/build-bcc.bat
deleted file mode 100644
index bf5c4bff..00000000
--- a/externals/grill/flext/buildsys/build-bcc.bat
+++ /dev/null
@@ -1,3 +0,0 @@
-@set build=%~dp0
-
-make -f %build%bmake.mak -N PLATFORM=%1 RTSYS=%2 COMPILER=bcc BUILDPATH=%build% %3 %4 %5 %6 %7 %8 %9
diff --git a/externals/grill/flext/buildsys/build-cygwin.sh b/externals/grill/flext/buildsys/build-cygwin.sh
deleted file mode 100644
index 606eaade..00000000
--- a/externals/grill/flext/buildsys/build-cygwin.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-#! /bin/bash
-
-build=${0%/*}/
-
-make -f ${build}gnumake.mak PLATFORM=$1 RTSYS=$2 COMPILER=cygwin BUILDPATH=${build} $3 $4 $5 $6 $7 $8 $9
diff --git a/externals/grill/flext/buildsys/build-gcc.sh b/externals/grill/flext/buildsys/build-gcc.sh
deleted file mode 100644
index ab4b5570..00000000
--- a/externals/grill/flext/buildsys/build-gcc.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-#! /bin/bash
-
-build=${0%/*}/
-
-make -f ${build}gnumake.mak PLATFORM=$1 RTSYS=$2 COMPILER=gcc BUILDPATH=${build} $3 $4 $5 $6 $7 $8 $9
diff --git a/externals/grill/flext/buildsys/build-icc.sh b/externals/grill/flext/buildsys/build-icc.sh
deleted file mode 100644
index d110da66..00000000
--- a/externals/grill/flext/buildsys/build-icc.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-#! /bin/bash
-
-build=${0%/*}/
-
-make -f ${build}gnumake.mak PLATFORM=$1 RTSYS=$2 COMPILER=icc BUILDPATH=${build} $3 $4 $5 $6 $7 $8 $9
diff --git a/externals/grill/flext/buildsys/build-mingw.bat b/externals/grill/flext/buildsys/build-mingw.bat
deleted file mode 100644
index 11a39ed3..00000000
--- a/externals/grill/flext/buildsys/build-mingw.bat
+++ /dev/null
@@ -1,3 +0,0 @@
-@set build=%~dp0
-
-mingw32-make -f %build%gnumake.mak PLATFORM=%1 RTSYS=%2 COMPILER=mingw BUILDPATH=%build% %3 %4 %5 %6 %7 %8 %9
diff --git a/externals/grill/flext/buildsys/build-msvc.bat b/externals/grill/flext/buildsys/build-msvc.bat
deleted file mode 100644
index b7cbb8f1..00000000
--- a/externals/grill/flext/buildsys/build-msvc.bat
+++ /dev/null
@@ -1,3 +0,0 @@
-@set build=%~dp0
-
-nmake -f %build%nmake.mak PLATFORM=%1 RTSYS=%2 COMPILER=msvc BUILDPATH=%build% %3 %4 %5 %6 %7 %8 %9
diff --git a/externals/grill/flext/buildsys/gnumake-ext.inc b/externals/grill/flext/buildsys/gnumake-ext.inc
deleted file mode 100644
index 1455c83e..00000000
--- a/externals/grill/flext/buildsys/gnumake-ext.inc
+++ /dev/null
@@ -1 +0,0 @@
-OUTNAME=$(NAME)
diff --git a/externals/grill/flext/buildsys/gnumake-flext.inc b/externals/grill/flext/buildsys/gnumake-flext.inc
deleted file mode 100644
index 64204656..00000000
--- a/externals/grill/flext/buildsys/gnumake-flext.inc
+++ /dev/null
@@ -1,3 +0,0 @@
-DEFS+=-DFLEXT_EXPORTS
-
-OUTNAME=lib$(FLEXTNAME)
diff --git a/externals/grill/flext/buildsys/gnumake-sub.mak b/externals/grill/flext/buildsys/gnumake-sub.mak
deleted file mode 100644
index 17aa589f..00000000
--- a/externals/grill/flext/buildsys/gnumake-sub.mak
+++ /dev/null
@@ -1,44 +0,0 @@
-# include flext version number
-include $(BUILDPATH)version.inc
-
-# system settings
-include $(BUILDPATH)config-$(PLATFORM)-$(RTSYS)-$(COMPILER).txt
-
-###############################
-# project specific definitions
-
-# package info
-ifneq ($(PKGINFO),)
- include $(PKGINFO)
-endif
-
-# special settings
-ifdef USRCONFIG
- include $(USRCONFIG)
-endif
-
-# package specific make stuff
-ifdef USRMAKE
- include $(USRMAKE)
-endif
-
-##############################
-# flext-specific definitions
-
-include $(BUILDPATH)gnumake.inc
-
-include $(BUILDPATH)gnumake-$(BUILDCLASS).inc
-
-##############################
-# platform-specific make stuff
-
-include $(BUILDPATH)$(PLATFORM)/$(RTSYS)/gnumake-$(COMPILER).inc
-
-include $(BUILDPATH)$(PLATFORM)/$(RTSYS)/gnumake-$(COMPILER)-$(BUILDCLASS).inc
-
-##############################
-# general make stuff
-
-include $(BUILDPATH)$(PLATFORM)/gnumake-$(COMPILER).inc
-
-include $(BUILDPATH)$(PLATFORM)/gnumake-$(COMPILER)-$(BUILDCLASS).inc
diff --git a/externals/grill/flext/buildsys/gnumake.inc b/externals/grill/flext/buildsys/gnumake.inc
deleted file mode 100644
index 27052d68..00000000
--- a/externals/grill/flext/buildsys/gnumake.inc
+++ /dev/null
@@ -1,95 +0,0 @@
-##############################################
-# cross-compilation
-##############################################
-
-ifndef ARCH
-ifeq ("$(shell uname -p)","powerpc")
-ARCH := ppc
-else
-ARCH := $(shell uname -p)
-endif
-endif
-
-##############################################
-# some compiler definitions
-##############################################
-
-CFLAGS += $(UFLAGS)
-$(foreach arch,$(ARCH),$(eval CFLAGS_$(arch) += $$(UFLAGS_$(arch)) ) )
-
-ifdef DEBUG
-
-DEFS += -D_DEBUG
-CFLAGS += $(DFLAGS)
-
-define ARCH_FLAGS
-CFLAGS_$(1) += $$(DFLAGS_$(1))
-endef
-
-else ## profile and release
-
-DEFS += -DNDEBUG
-CFLAGS += $(OFLAGS)
-
-define ARCH_FLAGS
-CFLAGS_$(1) += $$(OFLAGS_$(1))
-endef
-
-endif
-
-$(foreach arch,$(ARCH),$(eval $(call ARCH_FLAGS,$(arch))))
-
-
-ifdef SHARED
-# --- shared ---
-DEFS += -DFLEXT_SHARED
-
-else
-ifdef THREADED
-# --- static multi-threaded ---
-DEFS += -DFLEXT_THREADS
-
-else
-# --- static single-threaded ---
-
-endif
-endif
-
-##############################################
-# name of flext library
-##############################################
-
-ifdef SHARED
-TYPEEXT := _
-else
-ifdef THREADED
-TYPEEXT := _t
-else
-TYPEEXT := _s
-endif
-endif
-
-ifdef DEBUG
-MODEEXT := d
-else
-ifdef PROFILE
-MODEEXT := p
-else
-MODEEXT :=
-ifdef SHARED
-TYPEEXT :=
-endif
-endif
-endif
-
-FLEXTNAME := flext-$(RTSYS)$(TYPEEXT)$(MODEEXT)
-
-##############################################
-# product name and folder
-##############################################
-
-ifndef SRCDIR
-SRCDIR := .
-endif
-
-OUTSUB := $(TARGETMODE)-$(TARGETTYPE)
diff --git a/externals/grill/flext/buildsys/gnumake.mak b/externals/grill/flext/buildsys/gnumake.mak
deleted file mode 100644
index efa0c273..00000000
--- a/externals/grill/flext/buildsys/gnumake.mak
+++ /dev/null
@@ -1,142 +0,0 @@
-# required settings:
-#
-# PLATFORM - win/mac/lnx
-# RTSYS - pd/max
-# COMPILER - msvc/gcc/mingw/cygwin
-# BUILDPATH including trailing /
-
-###############################################
-# package info
-
-ifndef PKGINFO
-PKGINFO=package.txt
-endif
-
-ifneq ($(PKGINFO),)
-include $(PKGINFO)
-endif
-
-ifndef NAME
-$(error "NAME variable must be defined (name of target)")
-endif
-
-ifndef SRCS
-$(error "SRCS variable must be defined (list of source files)")
-endif
-
-###############################################
-# check variables
-
-ifndef BUILDCLASS
-BUILDCLASS=ext
-endif
-
-ifndef BUILDMODE
-BUILDMODE=release
-endif
-
-ifndef BUILDTYPE
-BUILDTYPE=single
-endif
-
-##############################
-
-#ifndef TARGETMODE
-#TARGETMODE=$(BUILDMODE)
-#endif
-
-#ifndef TARGETTYPE
-#TARGETTYPE=$(BUILDTYPE)
-#endif
-
-###############################################
-
-ifeq ($(PLATFORM),win)
- # substitute eventual \ by /
- UBUILDPATH=$(subst \,/,$(BUILDPATH))
-else
- UBUILDPATH=$(BUILDPATH)
-endif
-
-###############################################
-
-SYSCONFIG=$(UBUILDPATH)config-$(PLATFORM)-$(RTSYS)-$(COMPILER).txt
-SYSDEFAULT=$(UBUILDPATH)$(PLATFORM)/$(RTSYS)/config-$(COMPILER).def
-
-OPTIONS=-f $(UBUILDPATH)gnumake-sub.mak \
- PLATFORM=$(PLATFORM) RTSYS=$(RTSYS) COMPILER=$(COMPILER) \
- BUILDPATH=$(UBUILDPATH) PKGINFO=$(PKGINFO) BUILDCLASS=$(BUILDCLASS)
-
-###############################################
-
-ifdef BUILDDIR
-USRCONFIG=config.txt
-USRDEFAULT=$(BUILDDIR)/config-$(PLATFORM).def
-
-USRMAKE=$(BUILDDIR)/gnumake-$(PLATFORM)-$(COMPILER).inc
-
-OPTIONS+=USRCONFIG=$(USRCONFIG) USRMAKE=$(USRMAKE)
-endif
-
-###############################################
-# include file describing default target dependencies
-
-.PHONY : all build clean install profile
-
-include $(BUILDPATH)targets.inc
-
-include $(BUILDPATH)targets-$(BUILDCLASS).inc
-
-###############################################
-
-.PRECIOUS: $(SYSCONFIG) $(USRCONFIG)
-
-$(SYSCONFIG): $(SYSDEFAULT)
-ifeq ($(COMPILER),mingw)
- @copy $(subst /,\,$<) $(subst /,\,$@)
-else
- @cp $< $@
-endif
- @echo -------------------------------------------------------------------------
- @echo A default system configuration file has been created.
- @echo Please edit $(SYSCONFIG)
- @echo to match your platform, then start again.
- @echo -------------------------------------------------------------------------
-ifeq ($(COMPILER),mingw)
- @exit 1
-else
- @false
-endif
-
-ifdef BUILDDIR
-$(USRCONFIG): $(USRDEFAULT)
-ifeq ($(COMPILER),mingw)
- @copy $(subst /,\,$<) $(subst /,\,$@)
-else
- @cp $< $@
-endif
- @echo -------------------------------------------------------------------------
- @echo A default package configuration file has been created.
- @echo Please edit $(USRCONFIG), then start again.
- @echo -------------------------------------------------------------------------
-ifeq ($(COMPILER),mingw)
- @exit 1
-else
- @false
-endif
-
-$(USRDEFAULT) $(USRMAKE):
- @echo -------------------------------------------------------------------------
- @echo Your combination of platform, system and compiler is not supported yet.
- @echo Required files:
- @echo $(USRDEFAULT)
- @echo and
- @echo $(USRMAKE)
- @echo -------------------------------------------------------------------------
-ifeq ($(COMPILER),mingw)
- @exit 1
-else
- @false
-endif
-
-endif
diff --git a/externals/grill/flext/buildsys/lnx/gnumake-gcc-ext.inc b/externals/grill/flext/buildsys/lnx/gnumake-gcc-ext.inc
deleted file mode 100644
index a1fef152..00000000
--- a/externals/grill/flext/buildsys/lnx/gnumake-gcc-ext.inc
+++ /dev/null
@@ -1,56 +0,0 @@
-# build class specific settings
-
-TARGET=$(TARGETPATH)/$(TARGETNAME)
-INSTTARGET=$(TARGET)
-
-INCPATH += -I$(FLEXTINC)
-LIBPATH += -L$(FLEXTLIB)
-
-#ifdef SHARED
-#LIBS += -l$(FLEXTNAME).$(FLEXTMAJOR).$(FLEXTMINOR)
-#else
-LIBS += -l$(FLEXTNAME)
-#endif
-
-##############################################
-
-# default target
-_build_: $(TARGET)
-
-$(CSRCS) $(CPPSRCS): $(patsubst %,$(SRCDIR)/%,$(HDRS))
- touch $@
-
-$(TARGETPATH):
- mkdir -p $@
-
-$(TARGETPATH)/%.opp : $(SRCDIR)/%.cpp
- -mkdir -p $(dir $@)
- $(CXX) -c $(CFLAGS) $(DEFS) $(INCPATH) $< -o $@
-
-$(TARGETPATH)/%.o : $(SRCDIR)/%.c
- -mkdir -p $(dir $@)
- $(CC) -c $(CFLAGS) $(DEFS) $(INCPATH) $< -o $@
-
-$(TARGET):: $(TARGETPATH)
-
-$(TARGET):: $(COBJS) $(CPPOBJS)
- $(CXX) $(LDFLAGS) $(LIBPATH) -o $@ $(COBJS) $(CPPOBJS) $(LIBS)
- chmod 755 $@
-ifndef DEBUG
-ifndef PROFILE
- strip --strip-unneeded $@
-endif
-endif
-
-##############################################
-
-_clean_:
- -rm -r $(TARGETPATH)
-
-##############################################
-
-$(INSTPATH):
- -mkdir -p $@
-
-_install_: $(INSTPATH)
- install $(TARGET) $(INSTPATH)
diff --git a/externals/grill/flext/buildsys/lnx/gnumake-gcc-flext.inc b/externals/grill/flext/buildsys/lnx/gnumake-gcc-flext.inc
deleted file mode 100644
index 887f093a..00000000
--- a/externals/grill/flext/buildsys/lnx/gnumake-gcc-flext.inc
+++ /dev/null
@@ -1,72 +0,0 @@
-# build class specific settings
-
-CMPNAME=$(OUTNAME).$(EXT).$(FLEXTMAJOR).$(FLEXTMINOR)
-VERNAME=$(CMPNAME).$(FLEXTMICRO)
-TARGET=$(TARGETPATH)/$(VERNAME)
-INSTTARGET=$(TARGET)
-
-ifdef SHARED
-LDFLAGS += -Wl,-soname,$(CMPNAME)
-endif
-
-##############################################
-
-# default target
-_build_: $(TARGET)
-
-$(CSRCS) $(CPPSRCS): $(patsubst %,$(SRCDIR)/%,$(HDRS))
- touch $@
-
-$(TARGETPATH):
- -mkdir -p $@
-
-$(TARGETPATH)/%.opp : $(SRCDIR)/%.cpp
- -mkdir -p $(dir $@)
- $(CXX) -c $(CFLAGS) $(DEFS) $(INCPATH) $< -o $@
-
-$(TARGETPATH)/%.o : $(SRCDIR)/%.c
- -mkdir -p $(dir $@)
- $(CC) -c $(CFLAGS) $(DEFS) $(INCPATH) $< -o $@
-
-$(TARGET) :: $(TARGETPATH)
-
-$(TARGET) :: $(COBJS) $(CPPOBJS)
-ifdef SHARED
- $(CXX) $(LDFLAGS) $(LIBPATH) -o $@ $(COBJS) $(CPPOBJS) $(LIBS)
- chmod 755 $@
-ifndef DEBUG
-ifndef PROFILE
- strip --strip-unneeded $@
-endif
-endif
-else
- $(AR) rc $@ $(COBJS) $(CPPOBJS)
-endif
-
-##############################################
-
-_clean_:
- -rm -r $(TARGETPATH)
-
-##############################################
-
-$(FLEXTINC) $(FLEXTLIB) $(FLEXTSYS) $(FLEXTBIN):
- -mkdir -p $@
-
-_install_: $(FLEXTINC) $(FLEXTLIB) $(FLEXTSYS) $(FLEXTBIN)
- install $(TARGET) $(FLEXTLIB)
-ifdef SHARED
- /sbin/ldconfig -l $(FLEXTLIB)/$(VERNAME)
- -ln -sf $(CMPNAME) $(FLEXTLIB)/$(OUTNAME).$(EXT)
-else
- -ln -sf $(VERNAME) $(FLEXTLIB)/$(TARGETNAME)
-endif
- install $(patsubst %,$(SRCDIR)/%,$(HDRS)) $(FLEXTINC)
-# transfer build system
-# cp -rf buildsys $(FLEXTSYS)
-# install build.sh $(FLEXTSYS)
-# chmod -R a+rx $(FLEXTSYS)
-# make convenience script
-# echo bash $(FLEXTSYS)/build.sh $$\* > $(FLEXTBIN)/flext-build.sh
-# chmod a+rx $(FLEXTBIN)/flext-build.sh
-
diff --git a/externals/grill/flext/buildsys/lnx/gnumake-gcc.inc b/externals/grill/flext/buildsys/lnx/gnumake-gcc.inc
deleted file mode 100644
index 39639d86..00000000
--- a/externals/grill/flext/buildsys/lnx/gnumake-gcc.inc
+++ /dev/null
@@ -1,64 +0,0 @@
-##############################################
-
-ifndef FLEXTINC
-FLEXTINC=$(FLEXTPREFIX)/include/flext
-endif
-ifndef FLEXTLIB
-FLEXTLIB=$(FLEXTPREFIX)/lib
-endif
-ifndef FLEXTSYS
-FLEXTSYS=$(FLEXTPREFIX)/lib/flext
-endif
-ifndef FLEXTBIN
-FLEXTBIN=$(FLEXTPREFIX)/bin
-endif
-
-##############################################
-
-OBJPATH=$(OUTPATH)/$(OUTSUB)
-TARGETPATH=$(OBJPATH)
-TARGETNAME=$(OUTNAME).$(EXT)
-
-##############################################
-
-CFLAGS += -pthread -fPIC
-LDFLAGS += -pthread -shared
-
-##############################################
-
-ifdef DEBUG
-CFLAGS += -g
-LDFLAGS += -g
-else
-ifdef PROFILE
-CFLAGS += -g -pg
-LDFLAGS += -g -pg
-else
-LDFLAGS += -Wl,-S
-endif
-endif
-
-##############################################
-
-ifdef STK_INC
-INCPATH += -I$(STK_INC)
-endif
-ifdef STK_LIB
-LIBS += $(STK_LIB)
-endif
-
-##############################################
-
-ifdef SNDOBJ_INC
-INCPATH += -I$(SNDOBJ_INC)
-endif
-ifdef SNDOBJ_LIB
-LIBS += $(SNDOBJ_LIB)
-endif
-
-##############################################
-
-CSRCS=$(patsubst %.c,$(SRCDIR)/%.c,$(filter %.c,$(SRCS)))
-CPPSRCS=$(patsubst %.cpp,$(SRCDIR)/%.cpp,$(filter %.cpp,$(SRCS)))
-COBJS=$(patsubst %.c,$(OBJPATH)/%.o,$(filter %.c,$(SRCS)))
-CPPOBJS=$(patsubst %.cpp,$(OBJPATH)/%.opp,$(filter %.cpp,$(SRCS)))
diff --git a/externals/grill/flext/buildsys/lnx/gnumake-icc-ext.inc b/externals/grill/flext/buildsys/lnx/gnumake-icc-ext.inc
deleted file mode 100644
index 27c781f3..00000000
--- a/externals/grill/flext/buildsys/lnx/gnumake-icc-ext.inc
+++ /dev/null
@@ -1,56 +0,0 @@
-# build class specific settings
-
-TARGET=$(TARGETPATH)/$(TARGETNAME)
-INSTTARGET=$(TARGET)
-
-INCPATH += -I$(FLEXTINC)
-LIBPATH += -L$(FLEXTLIB)
-
-ifdef SHARED
-LIBS += -l$(FLEXTNAME).$(FLEXTMAJOR).$(FLEXTMINOR)
-else
-LIBS += -l$(FLEXTNAME)
-endif
-
-##############################################
-
-# default target
-_build_: $(TARGET)
-
-$(CSRCS) $(CPPSRCS): $(patsubst %,$(SRCDIR)/%,$(HDRS))
- touch $@
-
-$(TARGETPATH):
- -mkdir -p $@
-
-$(TARGETPATH)/%.opp : $(SRCDIR)/%.cpp
- -mkdir -p $(dir $@)
- icc -c $(CFLAGS) $(DEFS) $(INCPATH) $< -o $@
-
-$(TARGETPATH)/%.o : $(SRCDIR)/%.c
- -mkdir -p $(dir $@)
- icc -c $(CFLAGS) $(DEFS) $(INCPATH) $< -o $@
-
-$(TARGET):: $(TARGETPATH)
-
-$(TARGET):: $(COBJS) $(CPPOBJS)
- icc $(LDFLAGS) $(LIBPATH) -o $@ $(COBJS) $(CPPOBJS) $(LIBS)
- chmod 755 $@
-ifndef DEBUG
-ifndef PROFILE
- strip --strip-unneeded $@
-endif
-endif
-
-##############################################
-
-_clean_:
- -rm -r $(TARGETPATH)
-
-##############################################
-
-$(INSTPATH):
- -mkdir -p $@
-
-_install_: $(INSTPATH)
- install $(TARGET) $(INSTPATH)
diff --git a/externals/grill/flext/buildsys/lnx/gnumake-icc-flext.inc b/externals/grill/flext/buildsys/lnx/gnumake-icc-flext.inc
deleted file mode 100644
index b289d77f..00000000
--- a/externals/grill/flext/buildsys/lnx/gnumake-icc-flext.inc
+++ /dev/null
@@ -1,72 +0,0 @@
-# build class specific settings
-
-CMPNAME=$(OUTNAME).$(EXT).$(FLEXTMAJOR).$(FLEXTMINOR)
-VERNAME=$(CMPNAME).$(FLEXTMICRO)
-TARGET=$(TARGETPATH)/$(VERNAME)
-INSTTARGET=$(TARGET)
-
-ifdef SHARED
-LDFLAGS += -Wl,-soname,$(CMPNAME)
-endif
-
-##############################################
-
-# default target
-_build_: $(TARGET)
-
-$(CSRCS) $(CPPSRCS): $(patsubst %,$(SRCDIR)/%,$(HDRS))
- touch $@
-
-$(TARGETPATH):
- -mkdir -p $@
-
-$(TARGETPATH)/%.opp : $(SRCDIR)/%.cpp
- -mkdir -p $(dir $@)
- icc -c $(CFLAGS) $(DEFS) $(INCPATH) $< -o $@
-
-$(TARGETPATH)/%.o : $(SRCDIR)/%.c
- -mkdir -p $(dir $@)
- icc -c $(CFLAGS) $(DEFS) $(INCPATH) $< -o $@
-
-$(TARGET) :: $(TARGETPATH)
-
-$(TARGET) :: $(COBJS) $(CPPOBJS)
-ifdef SHARED
- icc $(LDFLAGS) $(LIBPATH) -o $@ $(COBJS) $(CPPOBJS) $(LIBS)
- chmod 755 $@
-ifndef DEBUG
-ifndef PROFILE
- strip --strip-unneeded $@
-endif
-endif
-else
- $(AR) rc $@ $(COBJS) $(CPPOBJS)
-endif
-
-##############################################
-
-_clean_:
- -rm -r $(TARGETPATH)
-
-##############################################
-
-$(FLEXTINC) $(FLEXTLIB) $(FLEXTSYS) $(FLEXTBIN):
- -mkdir -p $@
-
-_install_: $(FLEXTINC) $(FLEXTLIB) $(FLEXTSYS) $(FLEXTBIN)
- install $(TARGET) $(FLEXTLIB)
-ifdef SHARED
- /sbin/ldconfig -l $(FLEXTLIB)/$(VERNAME)
- -ln -sf $(CMPNAME) $(FLEXTLIB)/$(OUTNAME).$(EXT)
-else
- -ln -sf $(VERNAME) $(FLEXTLIB)/$(TARGETNAME)
-endif
- install $(patsubst %,$(SRCDIR)/%,$(HDRS)) $(FLEXTINC)
-# transfer build system
-# cp -rf buildsys $(FLEXTSYS)
-# install build.sh $(FLEXTSYS)
-# chmod -R a+rx $(FLEXTSYS)
-# make convenience script
-# echo bash $(FLEXTSYS)/build.sh $$\* > $(FLEXTBIN)/flext-build.sh
-# chmod a+rx $(FLEXTBIN)/flext-build.sh
-
diff --git a/externals/grill/flext/buildsys/lnx/gnumake-icc.inc b/externals/grill/flext/buildsys/lnx/gnumake-icc.inc
deleted file mode 100644
index b95dd55a..00000000
--- a/externals/grill/flext/buildsys/lnx/gnumake-icc.inc
+++ /dev/null
@@ -1,64 +0,0 @@
-##############################################
-
-ifndef FLEXTINC
-FLEXTINC=$(FLEXTPREFIX)/include/flext
-endif
-ifndef FLEXTLIB
-FLEXTLIB=$(FLEXTPREFIX)/lib
-endif
-ifndef FLEXTSYS
-FLEXTSYS=$(FLEXTPREFIX)/lib/flext
-endif
-ifndef FLEXTBIN
-FLEXTBIN=$(FLEXTPREFIX)/bin
-endif
-
-##############################################
-
-OBJPATH=$(OUTPATH)/$(OUTSUB)
-TARGETPATH=$(OBJPATH)
-TARGETNAME=$(OUTNAME).$(EXT)
-
-##############################################
-
-CFLAGS +=
-LDFLAGS += -shared -Wl,-x
-
-##############################################
-
-ifdef DEBUG
-CFLAGS += -g
-LDFLAGS += -g
-else
-ifdef PROFILE
-CFLAGS += -g -qp
-LDFLAGS += -g -qp
-else
-LDFLAGS += -Wl,-S
-endif
-endif
-
-##############################################
-
-ifdef STK_INC
-INCPATH += -I$(STK_INC)
-endif
-ifdef STK_LIB
-LIBS += $(STK_LIB)
-endif
-
-##############################################
-
-ifdef SNDOBJ_INC
-INCPATH += -I$(SNDOBJ_INC)
-endif
-ifdef SNDOBJ_LIB
-LIBS += $(SNDOBJ_LIB)
-endif
-
-##############################################
-
-CSRCS=$(patsubst %.c,$(SRCDIR)/%.c,$(filter %.c,$(SRCS)))
-CPPSRCS=$(patsubst %.cpp,$(SRCDIR)/%.cpp,$(filter %.cpp,$(SRCS)))
-COBJS=$(patsubst %.c,$(OBJPATH)/%.o,$(filter %.c,$(SRCS)))
-CPPOBJS=$(patsubst %.cpp,$(OBJPATH)/%.opp,$(filter %.cpp,$(SRCS)))
diff --git a/externals/grill/flext/buildsys/lnx/pd/config-gcc.def b/externals/grill/flext/buildsys/lnx/pd/config-gcc.def
deleted file mode 100644
index e0340e77..00000000
--- a/externals/grill/flext/buildsys/lnx/pd/config-gcc.def
+++ /dev/null
@@ -1,56 +0,0 @@
-# where is the PD source package?
-# (this should point to the main folder, which has a "src" subfolder)
-PDPATH=/usr/local/src/pd
-
-###############################################################
-
-# prefix for flext installation
-# headers are in $(FLEXTPREFIX)/include/flext
-# libraries are in $(FLEXTPREFIX)/lib
-# build system is in $(FLEXTPREFIX)/lib/flext
-
-FLEXTPREFIX=/usr/local
-
-###############################################################
-
-# where should the external be built?
-OUTPATH=pd-linux
-
-# where should the external be installed?
-INSTPATH=/usr/local/lib/pd/extra
-
-###############################################################
-
-# STK (synthesis tool kit) support
-# http://ccrma.stanford.edu/software/stk
-
-# where to find the STK header files (e.g. stk.h)
-STK_INC=/usr/local/include/stk
-
-# where to find the STK library (normally libstk.a)
-# (comment out STK_LIB if you don't use STK)
-#STK_LIB=/usr/local/lib/libstk.a
-
-###############################################################
-
-# SndObj support
-# http://music.nuim.ie//musictec/SndObj
-
-# where to find the SndObj header files (e.g. sndobj.h)
-SNDOBJ_INC=/usr/local/include/sndobj
-
-# where to find the SndObj library (normally libsndobj.a)
-# (comment out STK_LIB if you don't use SndObj)
-#SNDOBJ_LIB=/usr/local/lib/libsndobj.a
-
-###############################################################
-
-# user defined compiler flags
-# (check if they match your system!)
-UFLAGS=-msse -mfpmath=sse -ffast-math
-
-# user defined optimization flags
-# (check if they match your system!)
-OFLAGS=-O3
-# optimizations for Pentium 4
-OFLAGS+=-march=pentium4
diff --git a/externals/grill/flext/buildsys/lnx/pd/config-icc.def b/externals/grill/flext/buildsys/lnx/pd/config-icc.def
deleted file mode 100644
index 6032cfa2..00000000
--- a/externals/grill/flext/buildsys/lnx/pd/config-icc.def
+++ /dev/null
@@ -1,56 +0,0 @@
-# where is the PD source package?
-# (this should point to the main folder, which has a "src" subfolder)
-PDPATH=/usr/local/src/pd
-
-###############################################################
-
-# prefix for flext installation
-# headers are in $(FLEXTPREFIX)/include/flext
-# libraries are in $(FLEXTPREFIX)/lib
-# build system is in $(FLEXTPREFIX)/lib/flext
-
-FLEXTPREFIX=/usr/local
-
-###############################################################
-
-# where should the external be built?
-OUTPATH=pd-linux
-
-# where should the external be installed?
-INSTPATH=/usr/local/lib/pd/extra
-
-###############################################################
-
-# STK (synthesis tool kit) support
-# http://ccrma.stanford.edu/software/stk
-
-# where to find the STK header files (e.g. stk.h)
-STK_INC=/usr/local/include/stk
-
-# where to find the STK library (normally libstk.a)
-# (comment out STK_LIB if you don't use STK)
-#STK_LIB=/usr/local/lib/libstk.a
-
-###############################################################
-
-# SndObj support
-# http://music.nuim.ie//musictec/SndObj
-
-# where to find the SndObj header files (e.g. sndobj.h)
-SNDOBJ_INC=/usr/local/include/sndobj
-
-# where to find the SndObj library (normally libsndobj.a)
-# (comment out STK_LIB if you don't use SndObj)
-#SNDOBJ_LIB=/usr/local/lib/libsndobj.a
-
-###############################################################
-
-# user defined compiler flags
-# (check if they match your system!)
-UFLAGS=
-
-# user defined optimization flags
-# (check if they match your system!)
-OFLAGS=-O3 -Ob2 -ip
-# optimizations for Pentium 4
-OFLAGS+=-mcpu=pentium4 -march=pentium4 -xMKW
diff --git a/externals/grill/flext/buildsys/lnx/pd/gnumake-gcc-ext.inc b/externals/grill/flext/buildsys/lnx/pd/gnumake-gcc-ext.inc
deleted file mode 100644
index 88feb249..00000000
--- a/externals/grill/flext/buildsys/lnx/pd/gnumake-gcc-ext.inc
+++ /dev/null
@@ -1 +0,0 @@
-EXT=pd_linux
diff --git a/externals/grill/flext/buildsys/lnx/pd/gnumake-gcc-flext.inc b/externals/grill/flext/buildsys/lnx/pd/gnumake-gcc-flext.inc
deleted file mode 100644
index cecaa37a..00000000
--- a/externals/grill/flext/buildsys/lnx/pd/gnumake-gcc-flext.inc
+++ /dev/null
@@ -1,6 +0,0 @@
-ifdef SHARED
-EXT=so
-else
-EXT=a
-endif
-
diff --git a/externals/grill/flext/buildsys/lnx/pd/gnumake-gcc.inc b/externals/grill/flext/buildsys/lnx/pd/gnumake-gcc.inc
deleted file mode 100644
index 47930b1d..00000000
--- a/externals/grill/flext/buildsys/lnx/pd/gnumake-gcc.inc
+++ /dev/null
@@ -1,4 +0,0 @@
-DEFS += -DFLEXT_SYS=2 -DPD
-
-INCPATH += -I$(PDPATH)/src
-LIBPATH += -L$(PDPATH)/bin
diff --git a/externals/grill/flext/buildsys/lnx/pd/gnumake-icc-ext.inc b/externals/grill/flext/buildsys/lnx/pd/gnumake-icc-ext.inc
deleted file mode 100644
index 88feb249..00000000
--- a/externals/grill/flext/buildsys/lnx/pd/gnumake-icc-ext.inc
+++ /dev/null
@@ -1 +0,0 @@
-EXT=pd_linux
diff --git a/externals/grill/flext/buildsys/lnx/pd/gnumake-icc-flext.inc b/externals/grill/flext/buildsys/lnx/pd/gnumake-icc-flext.inc
deleted file mode 100644
index cecaa37a..00000000
--- a/externals/grill/flext/buildsys/lnx/pd/gnumake-icc-flext.inc
+++ /dev/null
@@ -1,6 +0,0 @@
-ifdef SHARED
-EXT=so
-else
-EXT=a
-endif
-
diff --git a/externals/grill/flext/buildsys/lnx/pd/gnumake-icc.inc b/externals/grill/flext/buildsys/lnx/pd/gnumake-icc.inc
deleted file mode 100644
index 47930b1d..00000000
--- a/externals/grill/flext/buildsys/lnx/pd/gnumake-icc.inc
+++ /dev/null
@@ -1,4 +0,0 @@
-DEFS += -DFLEXT_SYS=2 -DPD
-
-INCPATH += -I$(PDPATH)/src
-LIBPATH += -L$(PDPATH)/bin
diff --git a/externals/grill/flext/buildsys/mac/gnumake-gcc-ext.inc b/externals/grill/flext/buildsys/mac/gnumake-gcc-ext.inc
deleted file mode 100644
index bbcdf4ad..00000000
--- a/externals/grill/flext/buildsys/mac/gnumake-gcc-ext.inc
+++ /dev/null
@@ -1,37 +0,0 @@
-# build class specific settings
-
-INCPATH += -I$(FLEXTINC)
-LIBPATH += -L$(FLEXTLIB)
-LIBS += -l$(FLEXTNAME)
-
-# common compilation stuff
-include $(BUILDPATH)$(PLATFORM)/gnumake-gcc-targets.inc
-
-##### linking ###################
-
-$(TARGET) :: $(OBJPATH) $(TARGETPATH)
-
-$(TARGET) :: $(PRECOMDST) $(COBJS) $(CPPOBJS)
- $(CXX) $(LDFLAGS) $(LIBPATH) -o $@ $(COBJS) $(CPPOBJS) $(LIBS)
-ifdef DEBUG
-else
-ifdef PROFILE
-else
- strip -x $@
-endif
-endif
- chmod 755 $@
-
-ifdef TARGETPOST
-$(TARGET) :: $(TARGETPOST)
-endif
-
-###################################
-
-# Attention: $@ doesn't work for paths with spaces....
-$(INSTPATH):
- -mkdir -p $(INSTPATH)
-
-_install_:: $(INSTPATH)
-# copy plain file or whole bundle
- cp -R $(INSTTARGET) $(INSTPATH)
diff --git a/externals/grill/flext/buildsys/mac/gnumake-gcc-flext.inc b/externals/grill/flext/buildsys/mac/gnumake-gcc-flext.inc
deleted file mode 100644
index 916e21cc..00000000
--- a/externals/grill/flext/buildsys/mac/gnumake-gcc-flext.inc
+++ /dev/null
@@ -1,77 +0,0 @@
-# build class specific settings
-
-ifdef SHARED
-LDFLAGS += -install_name $(FLEXTLIB)/$(TARGETNAME)
-LDFLAGS += -current_version $(FLEXTMAJOR).$(FLEXTMINOR).$(FLEXTMICRO)
-LDFLAGS += -compatibility_version $(FLEXTMAJOR).$(FLEXTMINOR)
-LDFLAGS += -preload -seg1addr 0xd0000000
-endif
-
-# common compilation stuff
-include $(BUILDPATH)$(PLATFORM)/gnumake-gcc-targets.inc
-
-##### linking ###################
-
-$(TARGET) :: $(OBJPATH) $(TARGETPATH)
-
-$(TARGET) :: $(PRECOMDST) $(COBJS) $(CPPOBJS)
-ifdef SHARED
- $(CXX) $(LDFLAGS) $(LIBPATH) -o $@ $(COBJS) $(CPPOBJS) $(LIBS)
-ifdef DEBUG
-else
-ifdef PROFILE
-else
- strip -x $@
-endif
-endif
- chmod 755 $@
-else
- libtool -static -o $@ $(COBJS) $(CPPOBJS)
-endif
-
-ifdef TARGETPOST
-$(TARGET) :: $(TARGETPOST)
-endif
-
-###################################
-
-$(FLEXTINC):
- -mkdir -p $@
-
-$(FLEXTLIB):
- -mkdir -p $@
-
-_install_: $(FLEXTINC) $(FLEXTLIB)
-ifdef FLEXTFRAMEWORK
-# --- install as framework ---
- mkdir -p $(FLEXTFRAMEWORK)/Versions/$(FLEXTMAJOR).$(FLEXTMINOR)/Headers
- ln -sfh ./$(FLEXTMAJOR).$(FLEXTMINOR) $(FLEXTFRAMEWORK)/Versions/Current
- ln -sfh ./Versions/Current/Headers $(FLEXTFRAMEWORK)/Headers
- install $(TARGET) $(FLEXTFRAMEWORK)/Versions/Current
-ifdef SHARED
- # make link without lib... and extension
- ln -sf ./Versions/Current/$(VERNAME) $(FLEXTFRAMEWORK)/$(patsubst lib%,%,$(basename $(TARGETNAME)))
-else
- ranlib $(FRAMEWORK)/Versions/Current/$(VERNAME)
- ln -sf ./Versions/Current/$(VERNAME) $(FLEXTFRAMEWORK)/$(TARGETNAME)
-endif
- install $(patsubst %,$(SRCDIR)/%,$(HDRS)) $(FLEXTFRAMEWORK)/Headers
-else
-# --- install as dynamic library ---
- install $(TARGET) $(FLEXTLIB)
-ifndef SHARED
-# have to rerun ranlib at install dir ?!
- ranlib $(FLEXTLIB)/$(VERNAME)
-endif
-ifdef VERNAME
- ln -sf $(VERNAME) $(FLEXTLIB)/$(TARGETNAME)
-endif
- install $(patsubst %,$(SRCDIR)/%,$(HDRS)) $(FLEXTINC)
-endif
-# transfer build system
-# cp -rf buildsys $(FLEXTSYS)
-# install build.sh $(FLEXTSYS)
-# chmod -R a+rx $(FLEXTSYS)
-# make convenience script
-# echo bash $(FLEXTSYS)/build.sh $$\* > $(FLEXTBIN)/flext-build.sh
-# chmod a+rx $(FLEXTBIN)/flext-build.sh
diff --git a/externals/grill/flext/buildsys/mac/gnumake-gcc-targets.inc b/externals/grill/flext/buildsys/mac/gnumake-gcc-targets.inc
deleted file mode 100644
index c8804667..00000000
--- a/externals/grill/flext/buildsys/mac/gnumake-gcc-targets.inc
+++ /dev/null
@@ -1,70 +0,0 @@
-##############################################
-
-CSRCS := $(patsubst %.c,$(SRCDIR)/%.c,$(filter %.c,$(SRCS)))
-CPPSRCS := $(patsubst %.cpp,$(SRCDIR)/%.cpp,$(filter %.cpp,$(SRCS)))
-COBJS := $(patsubst %.c,$(OBJPATH)/%.o,$(filter %.c,$(SRCS)))
-CPPOBJS := $(patsubst %.cpp,$(OBJPATH)/%.opp,$(filter %.cpp,$(SRCS)))
-
-##############################################
-
-# default target
-_build_: $(TARGET)
-
-$(CSRCS) $(CPPSRCS): $(patsubst %,$(SRCDIR)/%,$(HDRS))
- touch $@
-
-# Attention: $@ doesn't work for paths with spaces....
-$(OBJPATH):
- -mkdir -p $(OBJPATH)
-
-# Attention: $@ doesn't work for paths with spaces....
-$(TARGETPATH):
- -mkdir -p $(TARGETPATH)
-
-##### precompiled header file ###################
-
-ifdef PRECOMPILE
-PRECOMSRC := $(SRCDIR)/$(PRECOMPILE)
-else
-PRECOMSRC := $(FLEXTINC)/flext.h
-endif
-
-ifdef PRECOMSRC
-PRECOMDST := $(OBJPATH)/$(notdir $(PRECOMSRC)).gch
-PRECOMINC := -I $(OBJPATH)
-endif
-
-$(PRECOMDST) : $(PRECOMSRC) $(patsubst %,$(SRCDIR)/%,$(HDRS))
- -mkdir -p $(dir $@)
- $(CXX) -c $(DEFS) $(INCPATH) $(PRECOMSRC) -o $@
-
-##### architecture-specific compilation ###################
-
-define ARCH_COMPILE
-$(OBJPATH)/%.opp_$(1) : $(SRCDIR)/%.cpp
- -mkdir -p $(dir $$@)
- $(CXX) -c $(CFLAGS) -arch $(1) $$(CFLAGS_$(1)) $(DEFS) $(PRECOMINC) $(INCPATH) $$^ -o $$@
-
-$(OBJPATH)/%.o_$(1) : $(SRCDIR)/%.c
- -mkdir -p $(dir $$@)
- $(CC) -c $(CFLAGS) -arch $(1) $$(CFLAGS_$(1)) $(DEFS) $(INCPATH) $$^ -o $$@
-endef
-
-# implement for all archs in ARCH
-$(foreach arch,$(ARCH),$(eval $(call ARCH_COMPILE,$(arch))))
-
-##### make fat object file ###################
-
-$(OBJPATH)/%.opp : $(foreach arch,$(ARCH),$(OBJPATH)/%.opp_$(arch))
- lipo $^ -create -output $@
-
-$(OBJPATH)/%.o : $(foreach arch,$(ARCH),$(OBJPATH)/%.o_$(arch))
- lipo $^ -create -output $@
-
-##############################################
-
-_clean_:
- -rm -r $(TARGETPATH)
- -rm -r $(OBJPATH)
-
-##############################################
diff --git a/externals/grill/flext/buildsys/mac/gnumake-gcc.inc b/externals/grill/flext/buildsys/mac/gnumake-gcc.inc
deleted file mode 100644
index 41eac3fd..00000000
--- a/externals/grill/flext/buildsys/mac/gnumake-gcc.inc
+++ /dev/null
@@ -1,74 +0,0 @@
-##############################################
-
-ifneq (,$(findstring Frameworks,$(FLEXTPREFIX)))
-FLEXTFRAMEWORK := $(FLEXTPREFIX)/flext.framework
-endif
-
-ifdef FLEXTFRAMEWORK
-ifndef FLEXTLIB
-FLEXTLIB := $(FLEXTFRAMEWORK)
-endif
-ifndef FLEXTINC
-FLEXTINC := $(FLEXTFRAMEWORK)/Headers
-endif
-ifndef FLEXTSYS
-FLEXTSYS := $(FLEXTFRAMEWORK)/Resources
-endif
-else
-ifndef FLEXTLIB
-FLEXTLIB := $(FLEXTPREFIX)/lib
-endif
-ifndef FLEXTINC
-FLEXTINC := $(FLEXTPREFIX)/include/flext
-endif
-ifndef FLEXTSYS
-FLEXTSYS := $(FLEXTPREFIX)/lib/flext
-endif
-endif
-
-FLEXTBIN := $(FLEXTPREFIX)/bin
-
-##############################################
-
-LDFLAGS += -dynamic -framework ApplicationServices -framework vecLib
-
-##############################################
-
-ifdef DEBUG
-CFLAGS += -g
-LDFLAGS += -g
-else
-ifdef PROFILE
-CFLAGS += -g
-LDFLAGS += -g
-else
-LDFLAGS += -Wl,-S
-endif
-endif
-
-##############################################
-
-ifdef STK_INC
-INCPATH += -I$(STK_INC)
-endif
-ifdef STK_LIB
-LIBS += $(STK_LIB)
-endif
-
-##############################################
-
-ifdef SNDOBJ_INC
-INCPATH += -I$(SNDOBJ_INC)
-endif
-ifdef SNDOBJ_LIB
-LIBS += $(SNDOBJ_LIB)
-endif
-
-##############################################
-
-LDFLAGS += $(patsubst %,-arch %,$(ARCH))
-
-ifdef OSXSDK
-CFLAGS += -isysroot $(OSXSDK)
-LDFLAGS += -isysroot $(OSXSDK)
-endif
diff --git a/externals/grill/flext/buildsys/mac/max/config-gcc.def b/externals/grill/flext/buildsys/mac/max/config-gcc.def
deleted file mode 100644
index cec5b624..00000000
--- a/externals/grill/flext/buildsys/mac/max/config-gcc.def
+++ /dev/null
@@ -1,75 +0,0 @@
-# where are the Max/MSP SDK header files?
-# you should have the latest version!
-MAXSDKPATH=/Applications/MaxMSP\ 4.6/MaxMSP-SDK/c74support
-
-###############################################################
-
-# prefix for flext installation
-# headers are in $(FLEXTPREFIX)/include/flext
-# libraries are in $(FLEXTPREFIX)/lib
-# build system is in $(FLEXTPREFIX)/lib/flext
-
-FLEXTPREFIX=/usr/local
-
-###############################################################
-
-# where should the external be built?
-OUTPATH=max-darwin
-
-# where should the external be installed?
-INSTPATH=/Library/Application\ Support/Cycling\ \'74/externals/flext
-
-# where should the initialization files be installed?
-INITPATH=/Library/Application\ Support/Cycling\ \'74/init
-
-# where should the help files be installed?
-HELPPATH=/Applications/MaxMSP\ 4.6/max-help/flext
-
-###############################################################
-
-# STK (synthesis tool kit) support
-# http://ccrma.stanford.edu/software/stk
-
-# where to find the STK header files (e.g. stk.h)
-STK_INC=/usr/local/include/stk
-
-# where to find the STK library (normally libstk.a)
-# (comment out STK_LIB if you don't use STK)
-#STK_LIB=/usr/local/lib/libstk.a
-
-###############################################################
-
-# SndObj support
-# http://music.nuim.ie//musictec/SndObj
-
-# where to find the SndObj header files (e.g. sndobj.h)
-SNDOBJ_INC=/usr/local/include/sndobj
-
-# where to find the SndObj library (normally libsndobj.a)
-# (comment out STK_LIB if you don't use SndObj)
-#SNDOBJ_LIB=/usr/local/lib/libsndobj.a
-
-###############################################################
-
-# user defined compiler flags
-UFLAGS += -ffast-math
-
-# user defined optimization flags
-OFLAGS += -Os -ftree-vectorize
-
-# user defined debugging flags
-DFLAGS +=
-
-# architecture-specific flags (optional)
-UFLAGS_ppc += -maltivec -faltivec
-OFLAGS_ppc += -mtune=G4
-DFLAGS_ppc +=
-
-UFLAGS_i386 += -mmmx -msse -msse2 -msse3
-OFLAGS_i386 += -mtune=prescott
-DFLAGS_i386 +=
-
-# cross-compilation (optional)
-#ARCH=i386 ppc
-#OSXSDK=/Developer/SDKs/MacOSX10.4u.sdk
-
diff --git a/externals/grill/flext/buildsys/mac/max/gnumake-gcc-ext.inc b/externals/grill/flext/buildsys/mac/max/gnumake-gcc-ext.inc
deleted file mode 100644
index 5266a698..00000000
--- a/externals/grill/flext/buildsys/mac/max/gnumake-gcc-ext.inc
+++ /dev/null
@@ -1,23 +0,0 @@
-EXT=mxo
-
-##############################################
-
-LDFLAGS += -bundle
-
-##############################################
-
-OBJPATH=$(OUTPATH)/$(OUTSUB)
-
-# bundle name (build site)
-INSTTARGET=$(OBJPATH)/$(OUTNAME).$(EXT)
-# folder inside bundle (build site)
-TARGETPATH=$(INSTTARGET)/Contents/MacOS
-# file inside bundle (build site)
-TARGET=$(TARGETPATH)/$(OUTNAME)
-
-# post build target
-TARGETPOST=$(INSTTARGET)/Contents/Pkginfo
-
-$(INSTTARGET)/Contents/Pkginfo:
- echo "iLaX????" >> $@
-
diff --git a/externals/grill/flext/buildsys/mac/max/gnumake-gcc-flext.inc b/externals/grill/flext/buildsys/mac/max/gnumake-gcc-flext.inc
deleted file mode 100644
index 3d526804..00000000
--- a/externals/grill/flext/buildsys/mac/max/gnumake-gcc-flext.inc
+++ /dev/null
@@ -1,20 +0,0 @@
-ifdef SHARED
-EXT=dylib
-else
-EXT=a
-endif
-
-##############################################
-
-LDFLAGS += -dynamiclib
-
-##############################################
-
-OBJPATH=$(OUTPATH)/$(OUTSUB)
-TARGETPATH=$(OBJPATH)
-
-TARGETNAME=$(OUTNAME).$(EXT)
-VERNAME=$(OUTNAME).$(FLEXTMAJOR).$(FLEXTMINOR).$(FLEXTMICRO).$(EXT)
-TARGET=$(TARGETPATH)/$(VERNAME)
-
-INSTTARGET=$(TARGET)
diff --git a/externals/grill/flext/buildsys/mac/max/gnumake-gcc.inc b/externals/grill/flext/buildsys/mac/max/gnumake-gcc.inc
deleted file mode 100644
index 44313f62..00000000
--- a/externals/grill/flext/buildsys/mac/max/gnumake-gcc.inc
+++ /dev/null
@@ -1,6 +0,0 @@
-DEFS += -DFLEXT_SYS=1
-
-INCPATH += -I$(MAXSDKPATH)/max-includes -I$(MAXSDKPATH)/jit-includes -I$(MAXSDKPATH)/msp-includes
-
-LDFLAGS += -framework MaxAPI -framework MaxAudioAPI
-
diff --git a/externals/grill/flext/buildsys/mac/pd/config-gcc.def b/externals/grill/flext/buildsys/mac/pd/config-gcc.def
deleted file mode 100644
index a724b2e4..00000000
--- a/externals/grill/flext/buildsys/mac/pd/config-gcc.def
+++ /dev/null
@@ -1,72 +0,0 @@
-# where is the PD installation including source code?
-# (this should point to the main folder, which has a "src" subfolder)
-PDPATH=/Applications/Pd-0.40-2.app/Contents/Resources
-
-# where is the PD executable?
-PDBIN=$(PDPATH)/bin/pd
-
-###############################################################
-
-# prefix for flext installation
-# headers are in $(FLEXTPREFIX)/include/flext
-# libraries are in $(FLEXTPREFIX)/lib
-# build system is in $(FLEXTPREFIX)/lib/flext
-
-FLEXTPREFIX=/usr/local
-
-###############################################################
-
-# where should the external be built?
-OUTPATH=pd-darwin
-
-# where should the external be installed?
-INSTPATH=$(PDPATH)/extra
-
-###############################################################
-
-# STK (synthesis tool kit) support
-# http://ccrma.stanford.edu/software/stk
-
-# where to find the STK header files (e.g. stk.h)
-STK_INC=/usr/local/include/stk
-
-# where to find the STK library (normally libstk.a)
-# (comment out STK_LIB if you don't use STK)
-#STK_LIB=/usr/local/lib/libstk.a
-
-###############################################################
-
-# SndObj support
-# http://music.nuim.ie//musictec/SndObj
-
-# where to find the SndObj header files (e.g. sndobj.h)
-SNDOBJ_INC=/usr/local/include/sndobj
-
-# where to find the SndObj library (normally libsndobj.a)
-# (comment out STK_LIB if you don't use SndObj)
-#SNDOBJ_LIB=/usr/local/lib/libsndobj.a
-
-###############################################################
-
-# user defined compiler flags
-UFLAGS += -ffast-math
-
-# user defined optimization flags
-OFLAGS += -Os -ftree-vectorize
-
-# user defined debugging flags
-DFLAGS +=
-
-# architecture-specific flags (optional)
-UFLAGS_ppc += -maltivec -faltivec
-OFLAGS_ppc += -mtune=G4
-DFLAGS_ppc +=
-
-UFLAGS_i386 += -mmmx -msse -msse2 -msse3
-OFLAGS_i386 += -mtune=prescott
-DFLAGS_i386 +=
-
-# cross-compilation (optional)
-#ARCH=i386 ppc
-#OSXSDK=/Developer/SDKs/MacOSX10.4u.sdk
-
diff --git a/externals/grill/flext/buildsys/mac/pd/gnumake-gcc-ext.inc b/externals/grill/flext/buildsys/mac/pd/gnumake-gcc-ext.inc
deleted file mode 100644
index 5eb0a234..00000000
--- a/externals/grill/flext/buildsys/mac/pd/gnumake-gcc-ext.inc
+++ /dev/null
@@ -1,10 +0,0 @@
-EXT=pd_darwin
-
-LDFLAGS += -bundle -bundle_loader $(PDBIN)
-
-# it seems we are having symbol name clashes with the following "new preferred method"
-# so we rather stick to the above "deprecated method"
-#LDFLAGS += -dynamiclib -undefined dynamic_lookup
-
-TARGET=$(TARGETPATH)/$(TARGETNAME)
-INSTTARGET=$(TARGET)
diff --git a/externals/grill/flext/buildsys/mac/pd/gnumake-gcc-flext.inc b/externals/grill/flext/buildsys/mac/pd/gnumake-gcc-flext.inc
deleted file mode 100644
index 782606fc..00000000
--- a/externals/grill/flext/buildsys/mac/pd/gnumake-gcc-flext.inc
+++ /dev/null
@@ -1,11 +0,0 @@
-ifdef SHARED
-EXT=dylib
-else
-EXT=a
-endif
-
-LDFLAGS += -dynamiclib -flat_namespace -undefined suppress
-
-VERNAME=$(OUTNAME).$(FLEXTMAJOR).$(FLEXTMINOR).$(FLEXTMICRO).$(EXT)
-TARGET=$(TARGETPATH)/$(VERNAME)
-INSTTARGET=$(TARGET)
diff --git a/externals/grill/flext/buildsys/mac/pd/gnumake-gcc.inc b/externals/grill/flext/buildsys/mac/pd/gnumake-gcc.inc
deleted file mode 100644
index 9d2fc3f3..00000000
--- a/externals/grill/flext/buildsys/mac/pd/gnumake-gcc.inc
+++ /dev/null
@@ -1,10 +0,0 @@
-DEFS += -DFLEXT_SYS=2 -DPD
-
-INCPATH += -I$(PDPATH)/src
-LIBPATH += -L$(PDPATH)/bin
-
-##############################################
-
-OBJPATH=$(OUTPATH)/$(OUTSUB)
-TARGETPATH=$(OBJPATH)
-TARGETNAME=$(OUTNAME).$(EXT)
diff --git a/externals/grill/flext/buildsys/nmake-ext.inc b/externals/grill/flext/buildsys/nmake-ext.inc
deleted file mode 100644
index 1455c83e..00000000
--- a/externals/grill/flext/buildsys/nmake-ext.inc
+++ /dev/null
@@ -1 +0,0 @@
-OUTNAME=$(NAME)
diff --git a/externals/grill/flext/buildsys/nmake-flext.inc b/externals/grill/flext/buildsys/nmake-flext.inc
deleted file mode 100644
index 2e7faf0c..00000000
--- a/externals/grill/flext/buildsys/nmake-flext.inc
+++ /dev/null
@@ -1,3 +0,0 @@
-DEFS=$(DEFS) /DFLEXT_EXPORTS
-
-OUTNAME=$(FLEXTNAME)
diff --git a/externals/grill/flext/buildsys/nmake-shlib.inc b/externals/grill/flext/buildsys/nmake-shlib.inc
deleted file mode 100644
index 1455c83e..00000000
--- a/externals/grill/flext/buildsys/nmake-shlib.inc
+++ /dev/null
@@ -1 +0,0 @@
-OUTNAME=$(NAME)
diff --git a/externals/grill/flext/buildsys/nmake-sub.mak b/externals/grill/flext/buildsys/nmake-sub.mak
deleted file mode 100644
index c8b78044..00000000
--- a/externals/grill/flext/buildsys/nmake-sub.mak
+++ /dev/null
@@ -1,44 +0,0 @@
-# include flext version number
-!include $(BUILDPATH)version.inc
-
-# general settings
-!include $(BUILDPATH)config-$(PLATFORM)-$(RTSYS)-$(COMPILER).txt
-
-##############################
-# project-specific definitions
-
-# package info
-!if "$(PKGINFO)" != ""
-!include $(PKGINFO)
-!endif
-
-# special package settings
-!ifdef USRCONFIG
-!include $(USRCONFIG)
-!endif
-
-# package specific make stuff
-!ifdef USRMAKE
-!include $(USRMAKE)
-!endif
-
-##############################
-# flext-specific definitions
-
-!include $(BUILDPATH)nmake.inc
-
-!include $(BUILDPATH)nmake-$(BUILDCLASS).inc
-
-##############################
-# platform-specific make stuff
-
-!include $(BUILDPATH)$(PLATFORM)\$(RTSYS)\nmake-$(COMPILER).inc
-
-!include $(BUILDPATH)$(PLATFORM)\$(RTSYS)\nmake-$(COMPILER)-$(BUILDCLASS).inc
-
-##############################
-# general make stuff
-
-!include $(BUILDPATH)$(PLATFORM)\nmake-$(COMPILER).inc
-
-!include $(BUILDPATH)$(PLATFORM)\nmake-$(COMPILER)-$(BUILDCLASS).inc
diff --git a/externals/grill/flext/buildsys/nmake.inc b/externals/grill/flext/buildsys/nmake.inc
deleted file mode 100644
index fd1bb50d..00000000
--- a/externals/grill/flext/buildsys/nmake.inc
+++ /dev/null
@@ -1,64 +0,0 @@
-##############################################
-# flext defines
-##############################################
-
-CFLAGS=$(CFLAGS) $(UFLAGS)
-
-!ifdef DEBUG
-CFLAGS=$(CFLAGS) /D_DEBUG $(DFLAGS)
-!else
-CFLAGS=$(CFLAGS) /DNDEBUG $(OFLAGS)
-!endif
-
-
-!ifdef SHARED
-# --- shared ---
-DEFS=$(DEFS) /DFLEXT_SHARED
-
-!elseifdef THREADED
-# --- static multi-threaded ---
-DEFS=$(DEFS) /DFLEXT_THREADS
-
-!else
-# --- static single-threaded ---
-
-!endif
-
-##############################################
-# name of flext library
-##############################################
-
-!ifdef SHARED
-TYPEEXT=_
-!else
-!ifdef THREADED
-TYPEEXT=_t
-!else
-TYPEEXT=_s
-!endif
-!endif
-
-!ifdef DEBUG
-MODEEXT=d
-!else
-!ifdef PROFILE
-MODEEXT=p
-!else
-MODEEXT=
-!ifdef SHARED
-TYPEEXT=
-!endif
-!endif
-!endif
-
-FLEXTNAME=flext-$(RTSYS)$(TYPEEXT)$(MODEEXT)
-
-##############################################
-# product name and folder
-##############################################
-
-!ifndef SRCDIR
-SRCDIR=.
-!endif
-
-OUTSUB=$(TARGETMODE)-$(TARGETTYPE)
diff --git a/externals/grill/flext/buildsys/nmake.mak b/externals/grill/flext/buildsys/nmake.mak
deleted file mode 100644
index 3e946de0..00000000
--- a/externals/grill/flext/buildsys/nmake.mak
+++ /dev/null
@@ -1,110 +0,0 @@
-# required settings:
-#
-# PLATFORM - win/mac/lnx
-# RTSYS - pd/max
-# COMPILER - msvc/gcc/mingw/cygwin
-# BUILDPATH including trailing \
-
-###############################################
-# package info
-
-!ifndef PKGINFO
-PKGINFO=package.txt
-!endif
-
-!if "$(PKGINFO)" != ""
-!include $(PKGINFO)
-!endif
-
-!ifndef NAME
-!error NAME variable must be defined (name of target)
-!endif
-
-!ifndef SRCS
-!error SRCS variable must be defined (list of source files)
-!endif
-
-###############################################
-# check variables
-
-!ifndef BUILDCLASS
-BUILDCLASS=ext
-!endif
-
-!ifndef BUILDMODE
-BUILDMODE=release
-!endif
-
-!ifndef BUILDTYPE
-BUILDTYPE=single
-!endif
-
-##############################
-
-#!ifndef TARGETMODE
-#TARGETMODE=$(BUILDMODE)
-#!endif
-
-#!ifndef TARGETTYPE
-#TARGETTYPE=$(BUILDTYPE)
-#!endif
-
-###############################################
-
-SYSCONFIG=$(BUILDPATH)config-$(PLATFORM)-$(RTSYS)-$(COMPILER).txt
-SYSDEFAULT=$(BUILDPATH)$(PLATFORM)\$(RTSYS)\config-$(COMPILER).def
-
-OPTIONS=/NOLOGO /f $(BUILDPATH)nmake-sub.mak \
- PLATFORM=$(PLATFORM) RTSYS=$(RTSYS) COMPILER=$(COMPILER) \
- BUILDPATH=$(BUILDPATH) PKGINFO=$(PKGINFO) BUILDCLASS=$(BUILDCLASS)
-
-###############################################
-
-!ifdef BUILDDIR
-USRCONFIG=config.txt
-USRDEFAULT=$(BUILDDIR)\config-$(PLATFORM).def
-
-USRMAKE=$(BUILDDIR)\nmake-$(PLATFORM)-$(COMPILER).inc
-
-OPTIONS=$(OPTIONS) USRCONFIG=$(USRCONFIG) USRMAKE=$(USRMAKE)
-!endif
-
-###############################################
-# include file describing default target dependencies
-
-!include $(BUILDPATH)targets.inc
-
-!include $(BUILDPATH)targets-$(BUILDCLASS).inc
-
-###############################################
-
-.precious: $(SYSCONFIG) $(USRCONFIG)
-
-$(SYSCONFIG): $(SYSDEFAULT)
- @copy $** $@
- @echo -------------------------------------------------------------------------
- @echo A default system configuration file has been created.
- @echo Please edit $(SYSCONFIG)
- @echo to match your platform and start again.
- @echo -------------------------------------------------------------------------
- @exit 1
-
-!ifdef BUILDDIR
-$(USRCONFIG): $(USRDEFAULT)
- @copy $** $@
- @echo -------------------------------------------------------------------------
- @echo A default package configuration file has been created.
- @echo Please edit $(USRCONFIG) and start again.
- @echo -------------------------------------------------------------------------
- @exit 1
-
-$(USRDEFAULT) $(USRMAKE):
- @echo -------------------------------------------------------------------------
- @echo Your combination of platform, system and compiler is not supported yet.
- @echo Required files:
- @echo $(USRDEFAULT)
- @echo and
- @echo $(USRMAKE)
- @echo -------------------------------------------------------------------------
- @exit 1
-!endif
diff --git a/externals/grill/flext/buildsys/readme.txt b/externals/grill/flext/buildsys/readme.txt
deleted file mode 100644
index 4fa74ad4..00000000
--- a/externals/grill/flext/buildsys/readme.txt
+++ /dev/null
@@ -1,180 +0,0 @@
-flext - C++ layer for Max/MSP and pd (pure data) externals
-
-Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-----------------------------------------------------------------------------
-
-At the moment this is more like a sketchboard, but i'll promise to bring some
-order into it some fine day in the not too distant future.
-
-----------------------------------------------------------------------------
-
-Build scripts
-=============
-
-Depending on platform the build process is run with
-build.sh
-or
-build.bat
-
-
-Arguments: PLATFORM SYSTEM COMPILER {TARGET} {definitions}
-
-PLATFORM: win / lnx / mac
-SYSTEM: pd / max
-COMPILER: msvc / gcc / mingw / cygwin / bcc / icc
-
-TARGET: (default is all)
- all, build - build package in default style
- install - install package
- clean - clean build products
-
- config - test if configuration needs refreshing
-
-or
- build-MODE-TYPE
- install-MODE-TYPE
- clean-MODE-TYPE
-
-with
- MODE: default, all, release, debug, profile
- TYPE: default, all, single, multi, shared
-
-
-Additional definitions can be passed to the make program
-like
- "PKGINFO=info.txt" (defines new filename for package information)
-or
- "PKGINFO=" (package information will be skipped - only for config target)
-
-For more macro names, see below
-
-
-For each of the supported combinations of PLATFORM, SYSTEM and COMPILER
-a MAKE program has been chosen, normally the one that comes with the compiler.
-
-For gcc it is GNU make (gnumake)
-For msvc it is Microsoft make (nmake)
-For bcc it is Borland make (bmake)
-
-
-
-Package info (package.txt)
-==========================
-
-Package information contains vital information for the build process.
-Obligatory are only:
-
-NAME: resulting filename of the build product
-SRCS: list of source files
-
-
-Normally also used are:
-
-HDRS: used header files, which SRCS files are dependent upon
-SRCDIR: source folder (relative to project folder), default is .
-
-
-Other settings:
-
-PRECOMPILE: prefix header file (in SRCDIR) for all source files,
- will be precompiled if supported by the compiler
-
-BUILDCLASS: can currently be flext or ext, default is ext.
- flext will build the flext system
- ext will build a flext-based external
-
-BUILDMODE: release or debug, default is release
- if release, optimization flags will be used
- if debug, debug information will be generated
- if profile, profiling information will be generated (with debug info and optimization)
-
-BUILDTYPE: single, multi or shared, default is single
- if single, it will be linked against the single-threaded static flext library
- if multi, it will be linked against the multi-threaded static flext library
- if shared, it will be linked against the shared flext library
-
-BUILDDIR: relative folder with additional build settings
-
-
-
-Additional build settings (BUILDDIR)
-====================================
-
-If BUILDDIR is defined, all PLATFORM-SYSTEM-COMPILER combinations to support
-must are mirrored by the respective .def and .inc files in the BUILDDIR.
-
-
-config-PLATFORM.def files (e.g. config-lnx.def) :
-
- These files can contain additional macro definitions, that are private
- to the project.
- The definitions should be strictly in the form SETTING=value, without any
- make-specific macros etc.
- The .def files work as templates that get copied to a user-editable
- config.txt file when the build process is first started.
-
-
-MAKE-PLATFORM-COMPILER.inc files
-(e.g. gnumake-lnx-gcc.inc or nmake-win-msvc.inc):
-
- These files (which are no considered to be edited by the user) can contain
- specific modifications to compiler flags, include file paths etc.
-
- For gnumake this would e.g. be
- INCPATH += -I/usr/local/include/python2.3
-
- for nmake or bmake e.g.
- INCPATH = $(INCPATH) -I"c:\program files\Python2.3\include"
-
-
-Structure of build system
-=========================
-
-The build system has several levels of information, which are evaluated in the
-following order (see also buildsys/MAKE-sub.mak)
-
-Project level:
-- PKGINFO file (e.g. package.txt)
-- USRCONFIG file (e.g. config.txt)
-- USRMAKE file (e.g. build/gnumake-lnx-gcc.inc)
-
-General definitions (in buildsys):
-
-- MAKE.inc (e.g. buildsys/gnumake.inc)
- contains evaluation of flext library name, build directory etc.
-- MAKE-BUILDCLASS.inc (e.g. buildsys/gnumake-ext.inc)
- contains some more flag settings
-
-Real-time-system-dependent definitions (in buildsys/PLATFORM/SYSTEM):
-
-- MAKE-COMPILER.inc (e.g. buildsys/lnx/pd/gnumake-gcc.inc)
- contains general real-time-system dependent info (e.g. paths, FLEXT_SYS setting)
-- MAKE-COMPILER-BUILDCLASS.inc (e.g. buildsys/lnx/pd/gnumake-gcc-ext.inc)
- contains specific real-time-system dependent info (e.g. extension of binary)
-
-Platform-dependent definitions (in buildsys/PLATFORM):
-
-- MAKE-COMPILER.inc (e.g. buildsys/lnx/gnumake-gcc.inc)
- contains general platform-specific flags
-- MAKE-COMPILER-BUILDCLASS.inc (e.g. buildsys/lnx/gnumake-gcc-ext.inc)
- contains the actual make targets (_build_,_clean_ and _install_)
-
-
-Macro names
-===============
-
-PKGINFO - filename for package information (must reside in project folder)
-
-UFLAGS - user defined compiler flags
-OFLAGS - user defined optimization flags (not used in debug builds)
-
-CFLAGS - compiler flags
-LDFLAGS - linker flags
-
-INCPATH - include file path (must come with e.g. -I )
-LIBPATH - library path (must come with e.g. -L )
-
-LIBS - libraries to link in (must come with e.g. -l )
diff --git a/externals/grill/flext/buildsys/targets-ext.inc b/externals/grill/flext/buildsys/targets-ext.inc
deleted file mode 100644
index b8031522..00000000
--- a/externals/grill/flext/buildsys/targets-ext.inc
+++ /dev/null
@@ -1,51 +0,0 @@
-build-default-default: build-$(BUILDMODE)-$(BUILDTYPE)
-
-build-all-default: build-all-$(BUILDTYPE)
-
-build-release-default: build-release-$(BUILDTYPE)
-
-build-debug-default: build-debug-$(BUILDTYPE)
-
-build-profile-default: build-profile-$(BUILDTYPE)
-
-build-default-all: build-$(BUILDMODE)-all
-
-build-default-single: build-$(BUILDMODE)-single
-
-build-default-multi: build-$(BUILDMODE)-multi
-
-build-default-shared: build-$(BUILDMODE)-shared
-
-
-install-default-default: install-$(BUILDMODE)-$(BUILDTYPE)
-
-install-all-default: install-all-$(BUILDTYPE)
-
-install-release-default: install-release-$(BUILDTYPE)
-
-install-debug-default: install-debug-$(BUILDTYPE)
-
-install-default-all: install-$(BUILDMODE)-all
-
-install-default-single: install-$(BUILDMODE)-single
-
-install-default-multi: install-$(BUILDMODE)-multi
-
-install-default-shared: install-$(BUILDMODE)-shared
-
-
-clean-default-default: clean-$(BUILDMODE)-$(BUILDTYPE)
-
-clean-all-default: clean-all-$(BUILDTYPE)
-
-clean-release-default: clean-release-$(BUILDTYPE)
-
-clean-debug-default: clean-debug-$(BUILDTYPE)
-
-clean-default-all: clean-$(BUILDMODE)-all
-
-clean-default-single: clean-$(BUILDMODE)-single
-
-clean-default-multi: clean-$(BUILDMODE)-multi
-
-clean-default-shared: clean-$(BUILDMODE)-shared
diff --git a/externals/grill/flext/buildsys/targets-flext.inc b/externals/grill/flext/buildsys/targets-flext.inc
deleted file mode 100644
index e0e984cf..00000000
--- a/externals/grill/flext/buildsys/targets-flext.inc
+++ /dev/null
@@ -1,52 +0,0 @@
-build-default-default: build-all-all
-
-build-all-default: build-all-all
-
-build-release-default: build-release-all
-
-build-debug-default: build-debug-all
-
-build-profile-default: build-profile-all
-
-build-default-all: build-all-all
-
-build-default-single: build-all-single
-
-build-default-multi: build-all-multi
-
-build-default-shared: build-all-shared
-
-
-install-default-default: install-all-all
-
-install-all-default: install-all-all
-
-install-release-default: install-release-all
-
-install-debug-default: install-debug-all
-
-install-default-all: install-all-all
-
-install-default-single: install-all-single
-
-install-default-multi: install-all-multi
-
-install-default-shared: install-all-shared
-
-
-clean-default-default: clean-all-all
-
-clean-all-default: clean-all-all
-
-clean-release-default: clean-release-all
-
-clean-debug-default: clean-debug-all
-
-clean-default-all: clean-all-all
-
-clean-default-single: clean-all-single
-
-clean-default-multi: clean-all-multi
-
-clean-default-shared: clean-all-shared
-
diff --git a/externals/grill/flext/buildsys/targets-shlib.inc b/externals/grill/flext/buildsys/targets-shlib.inc
deleted file mode 100644
index b8031522..00000000
--- a/externals/grill/flext/buildsys/targets-shlib.inc
+++ /dev/null
@@ -1,51 +0,0 @@
-build-default-default: build-$(BUILDMODE)-$(BUILDTYPE)
-
-build-all-default: build-all-$(BUILDTYPE)
-
-build-release-default: build-release-$(BUILDTYPE)
-
-build-debug-default: build-debug-$(BUILDTYPE)
-
-build-profile-default: build-profile-$(BUILDTYPE)
-
-build-default-all: build-$(BUILDMODE)-all
-
-build-default-single: build-$(BUILDMODE)-single
-
-build-default-multi: build-$(BUILDMODE)-multi
-
-build-default-shared: build-$(BUILDMODE)-shared
-
-
-install-default-default: install-$(BUILDMODE)-$(BUILDTYPE)
-
-install-all-default: install-all-$(BUILDTYPE)
-
-install-release-default: install-release-$(BUILDTYPE)
-
-install-debug-default: install-debug-$(BUILDTYPE)
-
-install-default-all: install-$(BUILDMODE)-all
-
-install-default-single: install-$(BUILDMODE)-single
-
-install-default-multi: install-$(BUILDMODE)-multi
-
-install-default-shared: install-$(BUILDMODE)-shared
-
-
-clean-default-default: clean-$(BUILDMODE)-$(BUILDTYPE)
-
-clean-all-default: clean-all-$(BUILDTYPE)
-
-clean-release-default: clean-release-$(BUILDTYPE)
-
-clean-debug-default: clean-debug-$(BUILDTYPE)
-
-clean-default-all: clean-$(BUILDMODE)-all
-
-clean-default-single: clean-$(BUILDMODE)-single
-
-clean-default-multi: clean-$(BUILDMODE)-multi
-
-clean-default-shared: clean-$(BUILDMODE)-shared
diff --git a/externals/grill/flext/buildsys/targets.inc b/externals/grill/flext/buildsys/targets.inc
deleted file mode 100644
index 1c901410..00000000
--- a/externals/grill/flext/buildsys/targets.inc
+++ /dev/null
@@ -1,148 +0,0 @@
-all: build
-
-build: build-default-default
-
-profile: build-profile-default
-
-clean: clean-default-default
-
-install: install-default-default
-
-###########################################################
-
-build-all-all: build-release-all build-debug-all
-
-build-release-all: build-release-single build-release-multi build-release-shared
-
-build-debug-all: build-debug-single build-debug-multi build-debug-shared
-
-build-profile-all: build-profile-single build-profile-multi build-profile-shared
-
-build-all-single: build-release-single build-debug-single
-
-build-all-multi: build-release-multi build-debug-multi
-
-build-all-shared: build-release-shared build-debug-shared
-
-###################################################
-
-install-all-all: install-release-all install-debug-all
-
-install-release-all: install-release-single install-release-multi install-release-shared
-
-install-debug-all: install-debug-single install-debug-multi install-debug-shared
-
-install-profile-all: install-profile-single install-profile-multi install-profile-shared
-
-install-all-single: install-release-single install-debug-single
-
-install-all-multi: install-release-multi install-debug-multi
-
-install-all-shared: install-release-shared install-debug-shared
-
-###################################################
-
-clean-all-all: clean-release-all clean-debug-all
-
-clean-release-all: clean-release-single clean-release-multi clean-release-shared
-
-clean-debug-all: clean-debug-single clean-debug-multi clean-debug-shared
-
-clean-profile-all: clean-profile-single clean-profile-multi clean-profile-shared
-
-clean-all-single: clean-release-single clean-debug-single
-
-clean-all-multi: clean-release-multi clean-debug-multi
-
-clean-all-shared: clean-release-shared clean-debug-shared
-
-###########################################################
-
-build-release-single: config
- $(MAKE) $(OPTIONS) TARGETMODE=release TARGETTYPE=single _build_
-
-build-debug-single: config
- $(MAKE) $(OPTIONS) TARGETMODE=debug TARGETTYPE=single DEBUG=1 _build_
-
-build-profile-single: config
- $(MAKE) $(OPTIONS) TARGETMODE=profile TARGETTYPE=single PROFILE=1 _build_
-
-build-release-multi: config
- $(MAKE) $(OPTIONS) TARGETMODE=release TARGETTYPE=multi THREADED=1 _build_
-
-build-debug-multi: config
- $(MAKE) $(OPTIONS) TARGETMODE=debug TARGETTYPE=multi THREADED=1 DEBUG=1 _build_
-
-build-profile-multi: config
- $(MAKE) $(OPTIONS) TARGETMODE=profile TARGETTYPE=multi THREADED=1 PROFILE=1 _build_
-
-build-release-shared: config
- $(MAKE) $(OPTIONS) TARGETMODE=release TARGETTYPE=shared SHARED=1 _build_
-
-build-debug-shared: config
- $(MAKE) $(OPTIONS) TARGETMODE=debug TARGETTYPE=shared SHARED=1 DEBUG=1 _build_
-
-build-profile-shared: config
- $(MAKE) $(OPTIONS) TARGETMODE=profile TARGETTYPE=shared SHARED=1 PROFILE=1 _build_
-
-###########################################################
-
-install-release-single: config
- $(MAKE) $(OPTIONS) TARGETMODE=release TARGETTYPE=single _install_
-
-install-debug-single: config
- $(MAKE) $(OPTIONS) TARGETMODE=debug TARGETTYPE=single DEBUG=1 _install_
-
-install-profile-single: config
- $(MAKE) $(OPTIONS) TARGETMODE=profile TARGETTYPE=single PROFILE=1 _install_
-
-install-release-multi: config
- $(MAKE) $(OPTIONS) TARGETMODE=release TARGETTYPE=multi THREADED=1 _install_
-
-install-debug-multi: config
- $(MAKE) $(OPTIONS) TARGETMODE=debug TARGETTYPE=multi THREADED=1 DEBUG=1 _install_
-
-install-profile-multi: config
- $(MAKE) $(OPTIONS) TARGETMODE=profile TARGETTYPE=multi THREADED=1 PROFILE=1 _install_
-
-install-release-shared: config
- $(MAKE) $(OPTIONS) TARGETMODE=release TARGETTYPE=shared SHARED=1 _install_
-
-install-debug-shared: config
- $(MAKE) $(OPTIONS) TARGETMODE=debug TARGETTYPE=shared SHARED=1 DEBUG=1 _install_
-
-install-profile-shared: config
- $(MAKE) $(OPTIONS) TARGETMODE=profile TARGETTYPE=shared SHARED=1 PROFILE=1 _install_
-
-###########################################################
-
-clean-release-single: config
- $(MAKE) $(OPTIONS) TARGETMODE=release TARGETTYPE=single _clean_
-
-clean-debug-single: config
- $(MAKE) $(OPTIONS) TARGETMODE=debug TARGETTYPE=single DEBUG=1 _clean_
-
-clean-profile-single: config
- $(MAKE) $(OPTIONS) TARGETMODE=profile TARGETTYPE=single PROFILE=1 _clean_
-
-clean-release-multi: config
- $(MAKE) $(OPTIONS) TARGETMODE=release TARGETTYPE=multi THREADED=1 _clean_
-
-clean-debug-multi: config
- $(MAKE) $(OPTIONS) TARGETMODE=debug TARGETTYPE=multi THREADED=1 DEBUG=1 _clean_
-
-clean-profile-multi: config
- $(MAKE) $(OPTIONS) TARGETMODE=profile TARGETTYPE=multi THREADED=1 PROFILE=1 _clean_
-
-clean-release-shared: config
- $(MAKE) $(OPTIONS) TARGETMODE=release TARGETTYPE=shared SHARED=1 _clean_
-
-clean-debug-shared: config
- $(MAKE) $(OPTIONS) TARGETMODE=debug TARGETTYPE=shared SHARED=1 DEBUG=1 _clean_
-
-clean-profile-shared: config
- $(MAKE) $(OPTIONS) TARGETMODE=profile TARGETTYPE=shared SHARED=1 PROFILE=1 _clean_
-
-###########################################################
-
-config: $(USRMAKE) $(SYSCONFIG) $(USRCONFIG)
diff --git a/externals/grill/flext/buildsys/version.inc b/externals/grill/flext/buildsys/version.inc
deleted file mode 100644
index c91ea283..00000000
--- a/externals/grill/flext/buildsys/version.inc
+++ /dev/null
@@ -1,3 +0,0 @@
-FLEXTMAJOR=0
-FLEXTMINOR=5
-FLEXTMICRO=1
diff --git a/externals/grill/flext/buildsys/win/bmake-bcc-ext.inc b/externals/grill/flext/buildsys/win/bmake-bcc-ext.inc
deleted file mode 100644
index ff26dc12..00000000
--- a/externals/grill/flext/buildsys/win/bmake-bcc-ext.inc
+++ /dev/null
@@ -1,53 +0,0 @@
-# build class specific settings
-
-INCPATH=$(INCPATH) -I$(FLEXTINC)
-LIBPATH=$(LIBPATH) -L$(FLEXTLIB)
-LIBS=$(LIBS) $(FLEXTNAME).lib
-
-##############################################
-
-# default target
-_build_: $(TARGET)
-
-$(OUTPATH):
- if not exist $@ mkdir $@ > nul
-
-$(TARGETPATH): $(OUTPATH)
- if not exist $@ mkdir $@ > nul
-
-SETUPFUNCTION=$(NAME)_setup
-
-$(TARGETPATH)\$(NAME).def: $(TARGETPATH)
- @echo EXPORTS $(SETUPFUNCTION) = _$(SETUPFUNCTION) > $@
-# this next line fixes a strange problem with implib - lacking underscore?!
- @echo IMPORTS _rtext_retext=PD.rtext_retext >> $@
-
-$(TARGET) :: $(TARGETPATH)\$(NAME).def
-
-{$(SRCDIR)}.cpp{}.obj:
- bcc32 -c $(CFLAGS) $(DEFS) $(INCPATH) -n$(TARGETPATH) $<
-
-{$(SRCDIR)}.c{}.obj:
- bcc32 -c $(CFLAGS) $(DEFS) $(INCPATH) -n$(TARGETPATH) $<
-
-$(TARGET) :: $(TARGETPATH)
-
-$(TARGET) :: $(OBJS)
- @cd $(TARGETPATH)
- ilink32 $(LDFLAGS) $(LIBPATH) -L. $(OBJS) ,$(<F),,$(LIBS),$(NAME).def
- @cd ..\..
-
-##############################################
-# remove build
-
-_clean_:
- -del /q $(TARGETPATH)\*.* > nul
- -rmdir /q $(TARGETPATH) > nul
-
-##############################################
-
-$(INSTPATH):
- if not exist $@ mkdir $@ > nul
-
-_install_: $(INSTPATH)
- copy $(TARGET) $(INSTPATH) > nul
diff --git a/externals/grill/flext/buildsys/win/bmake-bcc-flext.inc b/externals/grill/flext/buildsys/win/bmake-bcc-flext.inc
deleted file mode 100644
index 0d82065e..00000000
--- a/externals/grill/flext/buildsys/win/bmake-bcc-flext.inc
+++ /dev/null
@@ -1,70 +0,0 @@
-# build class specific settings
-
-##############################################
-
-# default target
-_build_: $(TARGET)
-
-$(OUTPATH):
- if not exist $@ mkdir $@ > nul
-
-$(TARGETPATH): $(OUTPATH)
- if not exist $@ mkdir $@ > nul
-
-{$(SRCDIR)}.cpp{}.obj:
- bcc32 -c $(CFLAGS) $(DEFS) $(INCPATH) -n$(TARGETPATH) $<
-
-{$(SRCDIR)}.c{}.obj:
- bcc32 -c $(CFLAGS) $(DEFS) $(INCPATH) -n$(TARGETPATH) $<
-
-
-$(TARGETPATH)\pd.lib : $(PDPATH)\bin\pd.dll
- implib -a $< $**
-
-$(TARGETPATH)\pthreadVC.lib : $(PDPATH)\bin\pthreadVC.dll
- implib -a $< $**
-
-PDTARGETS=$(TARGETPATH)\pd.lib $(TARGETPATH)\pthreadVC.lib
-
-
-$(TARGET) :: $(TARGETPATH) $(PDTARGETS)
-
-$(TARGET) :: $(OBJS)
- @cd $(TARGETPATH)
-!ifdef SHARED
- ilink32 $(LDFLAGS) $(LIBPATH) -L. $(OBJS) ,$(<F),,$(LIBS)
- implib -a $(<B).lib $(<F)
-!else
- -del $(<F)
- tlib "$(<F)" +$(OBJS: = +)
-!endif
- @cd ..\..
-
-##############################################
-
-_clean_:
- -del /q $(TARGETPATH)\*.* > nul
- -rmdir /q $(TARGETPATH) > nul
-
-##############################################
-
-!ifdef SHARED
-FLEXTLIBINST=$(FLEXTSHLIB)
-!else
-FLEXTLIBINST=$(FLEXTLIB)
-!endif
-
-_install_:
- @if not exist $(FLEXTINC) mkdir $(FLEXTINC) > nul
- @if not exist $(FLEXTLIB) mkdir $(FLEXTLIB) > nul
- @if not exist $(FLEXTLIBINST) mkdir $(FLEXTLIBINST) > nul
-
- copy $(TARGET) $(FLEXTLIBINST) > nul
-!ifdef SHARED
-# copy import library
- copy $(TARGET:.dll=.lib) $(FLEXTLIB) > nul
-!endif
-# copy headers
- for %%i in ($(HDRS)) do @copy $(SRCDIR)\%%i $(FLEXTINC) > nul
-# copy import libraries
- for %%i in ($(PDTARGETS)) do @copy %%i $(FLEXTLIB) > nul
diff --git a/externals/grill/flext/buildsys/win/bmake-bcc.inc b/externals/grill/flext/buildsys/win/bmake-bcc.inc
deleted file mode 100644
index 67ce16f0..00000000
--- a/externals/grill/flext/buildsys/win/bmake-bcc.inc
+++ /dev/null
@@ -1,36 +0,0 @@
-!ifdef BCCPATH
-INCPATH=$(INCPATH) -I$(BCCPATH)\include
-LIBPATH=$(LIBPATH) -L$(BCCPATH)\lib
-!endif
-
-##############################################
-
-OBJPATH=$(OUTPATH)\$(OUTSUB)
-TARGETPATH=$(OBJPATH)
-TARGET=$(TARGETPATH)\$(OUTNAME).$(EXT)
-
-##############################################
-# use precompiled headers
-
-!ifdef PRECOMPILE
-CFLAGS=$(CFLAGS) -Hh=$(PRECOMPILE) -H=$(OBJPATH)\precompiled.pch
-!endif
-
-##############################################
-
-LIBS=$(LIBS) cw32.lib import32.lib C0D32.OBJ
-CFLAGS=$(CFLAGS) -tWD -tWM -w-8004 -w-8027 -w-8057
-LDFLAGS=$(LDFLAGS) /C /Tpd
-
-##############################################
-
-!ifdef DEBUG
-CFLAGS=$(CFLAGS) -v
-LDFLAGS=$(LDFLAGS) /v
-!endif
-
-##############################################
-# convert both *.c and *.cpp
-
-OBJSTMP= $(SRCS:.c=.obj)
-OBJS= $(OBJSTMP:.objpp=.obj)
diff --git a/externals/grill/flext/buildsys/win/gnumake-cygwin-ext.inc b/externals/grill/flext/buildsys/win/gnumake-cygwin-ext.inc
deleted file mode 100644
index 141d5093..00000000
--- a/externals/grill/flext/buildsys/win/gnumake-cygwin-ext.inc
+++ /dev/null
@@ -1,42 +0,0 @@
-# build class specific settings
-
-INCPATH += -I$(FLEXTINC)
-LIBPATH += -L$(FLEXTLIB) -L$(FLEXTSHLIB)
-LIBS += -l$(FLEXTNAME)
-
-##############################################
-
-# default target
-_build_: $(TARGET)
-
-$(CSRCS) $(CPPSRCS): $(patsubst %,$(SRCDIR)/%,$(HDRS))
- touch $@
-
-$(TARGETPATH):
- -mkdir -p $@
-
-$(TARGETPATH)/%.opp : $(SRCDIR)/%.cpp
- $(CXX) -c $(CFLAGS) $(DEFS) $(INCPATH) $< -o $@
-
-$(TARGETPATH)/%.o : $(SRCDIR)/%.c
- $(CC) -c $(CFLAGS) $(DEFS) $(INCPATH) $< -o $@
-
-$(TARGET) :: $(TARGETPATH)
-
-$(TARGET) :: $(COBJS) $(CPPOBJS)
- $(CXX) $(LDFLAGS) $(LIBPATH) -o $@ $(COBJS) $(CPPOBJS) $(LIBS) $(SYSLIBS)
- strip --strip-unneeded $@
- chmod 755 $@
-
-##############################################
-
-_clean_:
- rm $(COBJS) $(CPPOBJS) $(TARGET)
-
-##############################################
-
-$(INSTPATH):
- -mkdir -p $(INSTPATH)
-
-_install_: $(INSTPATH)
- install $(TARGET) $(INSTPATH)
diff --git a/externals/grill/flext/buildsys/win/gnumake-cygwin-flext.inc b/externals/grill/flext/buildsys/win/gnumake-cygwin-flext.inc
deleted file mode 100644
index e8940a5d..00000000
--- a/externals/grill/flext/buildsys/win/gnumake-cygwin-flext.inc
+++ /dev/null
@@ -1,52 +0,0 @@
-# build class specific settings
-
-##############################################
-
-# default target
-_build_: $(TARGET)
-
-$(CSRCS) $(CPPSRCS): $(patsubst %,$(SRCDIR)/%,$(HDRS))
- touch $@
-
-$(TARGETPATH):
- -mkdir -p $@
-
-$(TARGETPATH)/%.opp : $(SRCDIR)/%.cpp
- $(CXX) -c $(CFLAGS) $(DEFS) $(INCPATH) $< -o $@
-
-$(TARGETPATH)/%.o : $(SRCDIR)/%.c
- $(CC) -c $(CFLAGS) $(DEFS) $(INCPATH) $< -o $@
-
-$(TARGET) :: $(TARGETPATH)
-
-$(TARGET) :: $(COBJS) $(CPPOBJS)
-ifdef SHARED
- $(CXX) $(LDFLAGS) $(LIBPATH) -o $@ $(COBJS) $(CPPOBJS) $(LIBS) $(SYSLIBS)
- chmod 755 $@
- strip --strip-unneeded $@
-else
- $(AR) rc $@ $(COBJS) $(CPPOBJS)
-endif
-
-##############################################
-
-_clean_:
- rm $(COBJS) $(CPPOBJS) $(TARGET)
-
-##############################################
-
-ifdef SHARED
-FLEXTLIBINST=$(FLEXTSHLIB)
-else
-FLEXTLIBINST=$(FLEXTLIB)
-endif
-
-$(FLEXTINC):
- -mkdir -p $(FLEXTINC)
-
-$(FLEXTLIBINST):
- -mkdir -p $(FLEXTLIBINST)
-
-_install_: $(FLEXTINC) $(FLEXTLIBINST)
- install $(TARGET) $(FLEXTLIBINST)
- install $(patsubst %,$(SRCDIR)/%,$(HDRS)) $(FLEXTINC)
diff --git a/externals/grill/flext/buildsys/win/gnumake-cygwin.inc b/externals/grill/flext/buildsys/win/gnumake-cygwin.inc
deleted file mode 100644
index 48155ff1..00000000
--- a/externals/grill/flext/buildsys/win/gnumake-cygwin.inc
+++ /dev/null
@@ -1,30 +0,0 @@
-##############################################
-
-OBJPATH=$(OUTPATH)/$(OUTSUB)
-TARGETPATH=$(OBJPATH)
-TARGET=$(TARGETPATH)/$(OUTNAME).$(EXT)
-
-##############################################
-
-CFLAGS += -mno-cygwin
-LDFLAGS += -shared -mno-cygwin
-
-##############################################
-
-ifdef DEBUG
-CFLAGS += -g
-else
-ifdef PROFILE
-CFLAGS += -g -pg
-LDFLAGS += -pg
-else
-LDFLAGS += -Wl,-S
-endif
-endif
-
-##############################################
-
-CSRCS=$(patsubst %.c,$(SRCDIR)/%.c,$(filter %.c,$(SRCS)))
-CPPSRCS=$(patsubst %.cpp,$(SRCDIR)/%.cpp,$(filter %.cpp,$(SRCS)))
-COBJS=$(patsubst %.c,$(OBJPATH)/%.o,$(filter %.c,$(SRCS)))
-CPPOBJS=$(patsubst %.cpp,$(OBJPATH)/%.opp,$(filter %.cpp,$(SRCS)))
diff --git a/externals/grill/flext/buildsys/win/gnumake-mingw-ext.inc b/externals/grill/flext/buildsys/win/gnumake-mingw-ext.inc
deleted file mode 100644
index 3a998a5d..00000000
--- a/externals/grill/flext/buildsys/win/gnumake-mingw-ext.inc
+++ /dev/null
@@ -1,48 +0,0 @@
-# build class specific settings
-
-INCPATH += -I$(FLEXTINC)
-LIBPATH += -L$(FLEXTLIB) -L$(FLEXTSHLIB)
-
-ifdef SHARED
-LIBS += $(FLEXTSHLIB)/lib$(FLEXTNAME).dll
-else
-LIBS += -l$(FLEXTNAME)
-endif
-
-##############################################
-
-# default target
-_build_: $(TARGET)
-
-#$(CSRCS) $(CPPSRCS): $(patsubst %,$(SRCDIR)/%,$(HDRS))
-# touch $@
-
-$(OUTPATH):
- -mkdir $(subst /,\,$@)
-
-$(TARGETPATH): $(OUTPATH)
- -mkdir $(subst /,\,$@)
-
-$(TARGETPATH)/%.opp : $(SRCDIR)/%.cpp
- $(CXX) -c $(CFLAGS) $(DEFS) $(subst \,/,$(INCPATH)) $< -o $(subst /,\,$@)
-
-$(TARGETPATH)/%.o : $(SRCDIR)/%.c
- $(CC) -c $(CFLAGS) $(DEFS) $(subst \,/,$(INCPATH)) $< -o $(subst /,\,$@)
-
-$(TARGET) :: $(TARGETPATH)
-
-$(TARGET) :: $(COBJS) $(CPPOBJS)
- $(CXX) $(LDFLAGS) $(subst \,/,$(LIBPATH)) -o $(subst /,\,$@) $(subst /,\,$(COBJS) $(CPPOBJS) $(LIBS) $(SYSLIBS))
- -strip --strip-unneeded $@
-
-##############################################
-
-_clean_:
- -del /q $(subst /,\,$(TARGETPATH)/*.*) > nul
- -rmdir /q $(subst /,\,$(TARGETPATH)) > nul
-
-##############################################
-
-_install_:
- @if not exist $(subst /,\,$(INSTPATH)) -mkdir $(subst /,\,$(INSTPATH))
- copy $(subst /,\,$(TARGET) $(INSTPATH))
diff --git a/externals/grill/flext/buildsys/win/gnumake-mingw-flext.inc b/externals/grill/flext/buildsys/win/gnumake-mingw-flext.inc
deleted file mode 100644
index 8cd51720..00000000
--- a/externals/grill/flext/buildsys/win/gnumake-mingw-flext.inc
+++ /dev/null
@@ -1,52 +0,0 @@
-# build class specific settings
-
-##############################################
-
-# default target
-_build_: $(TARGET)
-
-#$(CSRCS) $(CPPSRCS): $(patsubst %,$(SRCDIR)/%,$(HDRS))
-# touch $@
-
-$(OUTPATH):
- -mkdir $(subst /,\,$@)
-
-$(TARGETPATH): $(OUTPATH)
- -mkdir $(subst /,\,$@)
-
-$(TARGETPATH)/%.opp : $(SRCDIR)/%.cpp
- $(CXX) -c $(CFLAGS) $(DEFS) $(subst \,/,$(INCPATH)) $< -o $(subst /,\,$@)
-
-$(TARGETPATH)/%.o : $(SRCDIR)/%.c
- $(CC) -c $(CFLAGS) $(DEFS) $(subst \,/,$(INCPATH)) $< -o $(subst /,\,$@)
-
-$(TARGET) :: $(TARGETPATH)
-
-$(TARGET) :: $(COBJS) $(CPPOBJS)
-ifdef SHARED
- $(CXX) $(LDFLAGS) $(LIBPATH) -o $(subst /,\,$@) $(subst /,\,$(COBJS) $(CPPOBJS) $(LIBS))
- -strip --strip-unneeded $@
-else
- $(AR) rc $@ $(COBJS) $(CPPOBJS)
-endif
-
-##############################################
-
-_clean_:
- -del /q $(subst /,\,$(TARGETPATH)/*.*) > nul
- -rmdir /q $(subst /,\,$(TARGETPATH)) > nul
-
-##############################################
-
-ifdef SHARED
-FLEXTLIBINST=$(FLEXTSHLIB)
-else
-FLEXTLIBINST=$(FLEXTLIB)
-endif
-
-_install_::
- @if not exist $(subst /,\,$(FLEXTINC)) -mkdir $(subst /,\,$(FLEXTINC))
- @if not exist $(subst /,\,$(FLEXTLIBINST)) -mkdir $(subst /,\,$(FLEXTLIBINST))
-
- copy $(subst /,\,$(TARGET) $(FLEXTLIBINST))
- -for %%i in ($(HDRS)) do @copy $(SRCDIR)\%%i $(subst /,\,$(FLEXTINC)) > nul
diff --git a/externals/grill/flext/buildsys/win/gnumake-mingw.inc b/externals/grill/flext/buildsys/win/gnumake-mingw.inc
deleted file mode 100644
index 82ee4381..00000000
--- a/externals/grill/flext/buildsys/win/gnumake-mingw.inc
+++ /dev/null
@@ -1,30 +0,0 @@
-##############################################
-
-OBJPATH=$(OUTPATH)\$(OUTSUB)
-TARGETPATH=$(OBJPATH)
-TARGET=$(TARGETPATH)\$(OUTNAME).$(EXT)
-
-##############################################
-
-CFLAGS += -mms-bitfields -mno-cygwin
-LDFLAGS += -shared -mno-cygwin
-
-##############################################
-
-ifdef DEBUG
-CFLAGS += -g
-else
-ifdef PROFILE
-CFLAGS += -g -pg
-LDFLAGS += -pg
-else
-LDFLAGS += -Wl,-S
-endif
-endif
-
-##############################################
-
-CSRCS=$(patsubst %.c,$(SRCDIR)/%.c,$(filter %.c,$(SRCS)))
-CPPSRCS=$(patsubst %.cpp,$(SRCDIR)/%.cpp,$(filter %.cpp,$(SRCS)))
-COBJS=$(patsubst %.c,$(OBJPATH)/%.o,$(filter %.c,$(SRCS)))
-CPPOBJS=$(patsubst %.cpp,$(OBJPATH)/%.opp,$(filter %.cpp,$(SRCS)))
diff --git a/externals/grill/flext/buildsys/win/max/config-cygwin.def b/externals/grill/flext/buildsys/win/max/config-cygwin.def
deleted file mode 100644
index a4562a73..00000000
--- a/externals/grill/flext/buildsys/win/max/config-cygwin.def
+++ /dev/null
@@ -1,51 +0,0 @@
-# where is the Max/MSP application?
-MAXAPPPATH=/cygdrive/c/program\ files/MaxMSP\ 4.5
-
-# where are the Max/MSP common files?
-MAXCOMPATH=/cygdrive/c/program\ files/common\ files/Cycling\ \'74
-
-
-# where are the Max/MSP SDK header files?
-# you should have the latest version!
-MAXSDKPATH=$(MAXAPPPATH)/maxmspsdk_win/4.5\ headers/c74support
-
-###############################################################
-
-###############################################################
-
-# where do/should the flext headers reside/be built?
-FLEXTINC=$(MAXCOMPATH)/flext
-
-# where do/should the flext static libraries reside/be built?
-FLEXTLIB=$(FLEXTINC)
-
-# where do/should the flext shared libraries reside/be built?
-# (a good place is the MaxMSP program folder)
-FLEXTSHLIB=$(MAXAPPPATH)
-
-###############################################################
-
-# where should the external be built?
-# (path for temporary files)
-OUTPATH=max-cygwin
-
-# where should the external be installed?
-INSTPATH=$(MAXCOMPATH)/externals/flext
-
-# where should the initialization files be installed?
-INITPATH=$(MAXCOMPATH)/init
-
-# where should the help files be installed?
-HELPPATH=$(MAXAPPPATH)/max-help/flext
-
-###############################################################
-
-# user defined compiler flags
-# (check if they match your system!)
-UFLAGS=-msse -mfpmath=sse -ffast-math
-
-# user defined optimization flags
-# (check if they match your system!)
-OFLAGS=-O3
-# optimizations for Pentium 4
-OFLAGS+=-march=pentium4
diff --git a/externals/grill/flext/buildsys/win/max/config-mingw.def b/externals/grill/flext/buildsys/win/max/config-mingw.def
deleted file mode 100644
index 9c9e3d4a..00000000
--- a/externals/grill/flext/buildsys/win/max/config-mingw.def
+++ /dev/null
@@ -1,42 +0,0 @@
-# where are the Max/MSP SDK header files?
-# you should have the latest version!
-MAXSDKPATH="%ProgramFiles%\MaxMSP 4.5/maxmspsdk_win/4.5 headers/c74support"
-
-###############################################################
-
-# where do/should the flext headers reside/be built?
-FLEXTINC="%CommonProgramFiles%/Cycling '74/flext"
-
-# where do/should the flext static libraries reside/be built?
-FLEXTLIB=$(FLEXTINC)
-
-# where do/should the flext shared libraries reside/be built?
-# (a good place is the MaxMSP program folder)
-FLEXTSHLIB="%ProgramFiles%\MaxMSP 4.5"
-
-###############################################################
-
-# where should the external be built?
-# (path for temporary files)
-OUTPATH=max-mingw
-
-# where should the external be installed?
-INSTPATH="%CommonProgramFiles%/Cycling '74/externals/flext"
-
-# where should the initialization files be installed?
-INITPATH="%CommonProgramFiles%/Cycling '74/init"
-
-# where should the help files be installed?
-HELPPATH="%ProgramFiles%/MaxMSP 4.5/max-help/flext"
-
-###############################################################
-
-# user defined compiler flags
-# (check if they match your system!)
-UFLAGS=-msse -ffast-math
-
-# user defined optimization flags
-# (check if they match your system!)
-OFLAGS=-O3
-# optimizations for Pentium 4
-OFLAGS+=-march=pentium4
diff --git a/externals/grill/flext/buildsys/win/max/config-msvc.def b/externals/grill/flext/buildsys/win/max/config-msvc.def
deleted file mode 100644
index f67b6b7f..00000000
--- a/externals/grill/flext/buildsys/win/max/config-msvc.def
+++ /dev/null
@@ -1,46 +0,0 @@
-# where are the Max/MSP SDK header files?
-# you should have the latest version!
-MAXSDKPATH="%ProgramFiles%\MaxMSP 4.5\maxmspsdk_win\4.5 headers\c74support"
-
-# where is MS VC++?
-# (not necessary if the build is run with the compiler environment)
-# MSVCPATH="%ProgramFiles%\Microsoft Visual Studio .NET 2003\Vc7"
-
-###############################################################
-
-# where do/should the flext headers reside/be built?
-FLEXTINC="%CommonProgramFiles%\Cycling '74\flext"
-
-# where do/should the flext static libraries reside/be built?
-FLEXTLIB=$(FLEXTINC)
-
-# where do/should the flext shared libraries reside/be built?
-# (a good place is the MaxMSP program folder)
-FLEXTSHLIB="%ProgramFiles%\MaxMSP 4.5"
-
-###############################################################
-
-# where should the external be built?
-# (path for temporary files)
-OUTPATH=max-msvc
-
-# where should the external be installed?
-INSTPATH="%CommonProgramFiles%\Cycling '74\externals\flext"
-
-# where should the initialization files be installed?
-INITPATH="%CommonProgramFiles%\Cycling '74\init"
-
-# where should the help files be installed?
-HELPPATH="%ProgramFiles%\MaxMSP 4.5\max-help\flext"
-
-###############################################################
-
-# some user-definable flags
-# (check if they match your system!)
-OFLAGS=/Ox
-# optimizations for Pentium 4
-#OFLAGS=$(OFLAGS) /G6 /arch:SSE
-
-# uncomment to link against dynamic C runtime libraries
-# (don't use this if you want to distribute the built product)
-#DYNAMIC=1
diff --git a/externals/grill/flext/buildsys/win/max/gnumake-cygwin-ext.inc b/externals/grill/flext/buildsys/win/max/gnumake-cygwin-ext.inc
deleted file mode 100644
index 5df7e2f2..00000000
--- a/externals/grill/flext/buildsys/win/max/gnumake-cygwin-ext.inc
+++ /dev/null
@@ -1 +0,0 @@
-EXT=mxe
diff --git a/externals/grill/flext/buildsys/win/max/gnumake-cygwin-flext.inc b/externals/grill/flext/buildsys/win/max/gnumake-cygwin-flext.inc
deleted file mode 100644
index 60cd079a..00000000
--- a/externals/grill/flext/buildsys/win/max/gnumake-cygwin-flext.inc
+++ /dev/null
@@ -1,6 +0,0 @@
-ifdef SHARED
-EXT=dll
-else
-EXT=a
-endif
-
diff --git a/externals/grill/flext/buildsys/win/max/gnumake-cygwin.inc b/externals/grill/flext/buildsys/win/max/gnumake-cygwin.inc
deleted file mode 100644
index f0ceced1..00000000
--- a/externals/grill/flext/buildsys/win/max/gnumake-cygwin.inc
+++ /dev/null
@@ -1,10 +0,0 @@
-DEFS += -DFLEXT_SYS=1
-
-# fpack-struct should align to 2 bytes... can't specify that...
-CFLAGS += -DWINVER=0x0501 -D_WIN32_WINNT=0x501
-
-INCPATH += -I$(MAXSDKPATH)/max-includes -I$(MAXSDKPATH)/jit-includes -I$(MAXSDKPATH)/msp-includes
-LIBPATH += -L$(MAXSDKPATH)/max-includes -L$(MAXSDKPATH)/jit-includes -L$(MAXSDKPATH)/msp-includes
-
-# these are both in MAXSDKPATH
-SYSLIBS += -lMaxAPI -lMaxAudio
diff --git a/externals/grill/flext/buildsys/win/max/gnumake-mingw-ext.inc b/externals/grill/flext/buildsys/win/max/gnumake-mingw-ext.inc
deleted file mode 100644
index 04e59462..00000000
--- a/externals/grill/flext/buildsys/win/max/gnumake-mingw-ext.inc
+++ /dev/null
@@ -1 +0,0 @@
-EXT=mxe
diff --git a/externals/grill/flext/buildsys/win/max/gnumake-mingw-flext.inc b/externals/grill/flext/buildsys/win/max/gnumake-mingw-flext.inc
deleted file mode 100644
index 821d6fbc..00000000
--- a/externals/grill/flext/buildsys/win/max/gnumake-mingw-flext.inc
+++ /dev/null
@@ -1,6 +0,0 @@
-ifdef SHARED
-EXT=dll
-else
-EXT=LIB
-endif
-
diff --git a/externals/grill/flext/buildsys/win/max/gnumake-mingw.inc b/externals/grill/flext/buildsys/win/max/gnumake-mingw.inc
deleted file mode 100644
index 1baa82f9..00000000
--- a/externals/grill/flext/buildsys/win/max/gnumake-mingw.inc
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFS += -DFLEXT_SYS=1
-
-# fpack-struct should align to 2 bytes... can't specify that...
-CFLAGS += -DWINVER=0x0501 -D_WIN32_WINNT=0x501
-# suppress multiple symbol errors
-LDFLAGS += -Wl,--allow-multiple-definition
-
-INCPATH += -I$(MAXSDKPATH)/max-includes -I$(MAXSDKPATH)/jit-includes -I$(MAXSDKPATH)/msp-includes
-LIBPATH += -L$(MAXSDKPATH)/max-includes -L$(MAXSDKPATH)/jit-includes -L$(MAXSDKPATH)/msp-includes
-
-# these are both in MAXSDKPATH
-SYSLIBS += -lMaxAPI -lMaxAudio
diff --git a/externals/grill/flext/buildsys/win/max/nmake-msvc-ext.inc b/externals/grill/flext/buildsys/win/max/nmake-msvc-ext.inc
deleted file mode 100644
index 04e59462..00000000
--- a/externals/grill/flext/buildsys/win/max/nmake-msvc-ext.inc
+++ /dev/null
@@ -1 +0,0 @@
-EXT=mxe
diff --git a/externals/grill/flext/buildsys/win/max/nmake-msvc-flext.inc b/externals/grill/flext/buildsys/win/max/nmake-msvc-flext.inc
deleted file mode 100644
index d30a7144..00000000
--- a/externals/grill/flext/buildsys/win/max/nmake-msvc-flext.inc
+++ /dev/null
@@ -1,5 +0,0 @@
-!ifdef SHARED
-EXT=dll
-!else
-EXT=lib
-!endif
diff --git a/externals/grill/flext/buildsys/win/max/nmake-msvc.inc b/externals/grill/flext/buildsys/win/max/nmake-msvc.inc
deleted file mode 100644
index 089e5a57..00000000
--- a/externals/grill/flext/buildsys/win/max/nmake-msvc.inc
+++ /dev/null
@@ -1,8 +0,0 @@
-DEFS=$(DEFS) /DFLEXT_SYS=1
-CFLAGS=$(CFLAGS) /Zp2 /DWINVER=0x0501 /D_WIN32_WINNT=0x501
-
-INCPATH=$(INCPATH) /I$(MAXSDKPATH)\max-includes /I$(MAXSDKPATH)\jit-includes /I$(MAXSDKPATH)\msp-includes
-LIBPATH=$(LIBPATH) /LIBPATH:$(MAXSDKPATH)\max-includes /LIBPATH:$(MAXSDKPATH)\jit-includes /LIBPATH:$(MAXSDKPATH)\msp-includes
-
-# these are both in MAXSDKPATH
-LIBS=$(LIBS) maxapi.lib maxaudio.lib
diff --git a/externals/grill/flext/buildsys/win/nmake-msvc-ext.inc b/externals/grill/flext/buildsys/win/nmake-msvc-ext.inc
deleted file mode 100644
index 2a86155a..00000000
--- a/externals/grill/flext/buildsys/win/nmake-msvc-ext.inc
+++ /dev/null
@@ -1,43 +0,0 @@
-# build class specific settings
-
-INCPATH=$(INCPATH) /I$(FLEXTINC)
-LIBPATH=$(LIBPATH) /LIBPATH:$(FLEXTLIB)
-LIBS=$(LIBS) $(FLEXTNAME).lib
-
-##############################################
-
-# default target
-_build_: $(TARGET)
-
-$(OUTPATH):
- if not exist $@ mkdir $@ > nul
-
-$(TARGETPATH): $(OUTPATH)
- if not exist $@ mkdir $@ > nul
-
-{$(SRCDIR)}.cpp{}.obj:
- cl /c $(CFLAGS) $(DEFS) $(INCPATH) $** /Fo$(TARGETPATH)\$@
-
-{$(SRCDIR)}.c{}.obj:
- cl /c $(CFLAGS) $(DEFS) $(INCPATH) $** /Fo$(TARGETPATH)\$@
-
-$(TARGET):: $(TARGETPATH)
-
-$(TARGET):: $(OBJS)
- @cd $(TARGETPATH)
- link /DLL $(LDFLAGS) $(LIBPATH) $(OBJS) $(LIBS) /out:$(@F)
- @cd ..\..
-
-##############################################
-# remove build
-
-_clean_:
- -del /q $(TARGETPATH)\*.* > nul
- -rmdir /q $(TARGETPATH) > nul
-
-##############################################
-
-_install_:
- @if not exist $(INSTPATH) mkdir $(INSTPATH) > nul
-
- copy $(TARGET) $(INSTPATH) > nul
diff --git a/externals/grill/flext/buildsys/win/nmake-msvc-flext.inc b/externals/grill/flext/buildsys/win/nmake-msvc-flext.inc
deleted file mode 100644
index 36a72f4d..00000000
--- a/externals/grill/flext/buildsys/win/nmake-msvc-flext.inc
+++ /dev/null
@@ -1,59 +0,0 @@
-# build class specific settings
-
-##############################################
-
-# default target
-_build_: $(TARGET)
-
-$(OUTPATH):
- if not exist $@ mkdir $@ > nul
-
-$(TARGETPATH): $(OUTPATH)
- if not exist $@ mkdir $@ > nul
-
-{$(SRCDIR)}.cpp{}.obj:
- cl /c /LD $(CFLAGS) $(DEFS) $(INCPATH) $** /Fo$(TARGETPATH)\$@
-
-{$(SRCDIR)}.c{}.obj:
- cl /c /LD $(CFLAGS) $(DEFS) $(INCPATH) $** /Fo$(TARGETPATH)\$@
-
-
-$(TARGET):: $(TARGETPATH)
-
-$(TARGET):: $(OBJS)
- @cd $(TARGETPATH)
-!ifdef SHARED
- link /DLL $(LDFLAGS) $(LIBPATH) $(OBJS) $(LIBS) /out:$(@F)
-!else
- lib /OUT:$(@F) $(OBJS)
-!endif
- @cd ..\..
-
-##############################################
-
-# remove build
-_clean_:
- -del /q $(TARGETPATH)\*.* > nul
- -rmdir /q $(TARGETPATH) > nul
-
-##############################################
-
-!ifdef SHARED
-FLEXTLIBINST=$(FLEXTSHLIB)
-!else
-FLEXTLIBINST=$(FLEXTLIB)
-!endif
-
-_install_:
-# create folders
- @if not exist $(FLEXTINC) mkdir $(FLEXTINC) > nul
- @if not exist $(FLEXTLIB) mkdir $(FLEXTLIB) > nul
- @if not exist $(FLEXTLIBINST) mkdir $(FLEXTLIBINST) > nul
-
- copy $(TARGET) $(FLEXTLIBINST) > nul
-!ifdef SHARED
-# copy import library
- copy $(TARGET:.dll=.lib) $(FLEXTLIB) > nul
-!endif
-# copy headers
- for %%i in ($(HDRS)) do @copy $(SRCDIR)\%%i $(FLEXTINC) > nul
diff --git a/externals/grill/flext/buildsys/win/nmake-msvc-shlib.inc b/externals/grill/flext/buildsys/win/nmake-msvc-shlib.inc
deleted file mode 100644
index 3b436599..00000000
--- a/externals/grill/flext/buildsys/win/nmake-msvc-shlib.inc
+++ /dev/null
@@ -1,45 +0,0 @@
-# build class specific settings
-
-INCPATH=$(INCPATH) /I$(FLEXTINC)
-LIBPATH=$(LIBPATH) /LIBPATH:$(FLEXTLIB)
-LIBS=$(LIBS) $(FLEXTNAME).lib
-
-##############################################
-
-# default target
-_build_: $(TARGET)
-
-$(OUTPATH):
- if not exist $@ mkdir $@ > nul
-
-$(TARGETPATH): $(OUTPATH)
- if not exist $@ mkdir $@ > nul
-
-{$(SRCDIR)}.cpp{}.obj:
- cl /c $(CFLAGS) $(DEFS) $(INCPATH) $** /Fo$(TARGETPATH)\$@
-
-{$(SRCDIR)}.c{}.obj:
- cl /c $(CFLAGS) $(DEFS) $(INCPATH) $** /Fo$(TARGETPATH)\$@
-
-$(TARGET):: $(TARGETPATH)
-
-$(TARGET):: $(OBJS)
- @cd $(TARGETPATH)
- link /DLL $(LDFLAGS) $(LIBPATH) $(OBJS) $(LIBS) /OUT:$(@F)
- @cd ..\..
-
-##############################################
-# remove build
-
-_clean_:
- -del /q $(TARGETPATH)\*.* > nul
- -rmdir /q $(TARGETPATH) > nul
-
-##############################################
-
-_install_:
- @if not exist $(FLEXTSHLIB) mkdir $(FLEXTSHLIB) > nul
-
- copy $(TARGET) $(FLEXTSHLIB) > nul
-# copy import library
- copy $(TARGET:.dll=.lib) $(FLEXTSHLIB) > nul
diff --git a/externals/grill/flext/buildsys/win/nmake-msvc.inc b/externals/grill/flext/buildsys/win/nmake-msvc.inc
deleted file mode 100644
index d19fd44e..00000000
--- a/externals/grill/flext/buildsys/win/nmake-msvc.inc
+++ /dev/null
@@ -1,59 +0,0 @@
-!ifdef MSVCPATH
-INCPATH=$(INCPATH) /I$(MSVCPATH)\include
-LIBPATH=$(LIBPATH) /LIBPATH:$(MSVCPATH)\lib
-!endif
-
-##############################################
-
-OBJPATH=$(OUTPATH)\$(OUTSUB)
-TARGETPATH=$(OBJPATH)
-TARGET=$(TARGETPATH)\$(OUTNAME).$(EXT)
-
-##############################################
-# use precompiled headers (automatic mode)
-
-!ifdef PRECOMPILE
-CFLAGS=$(CFLAGS) /YX$(PRECOMPILE) /Fp$(OBJPATH)\precompiled.pch
-!endif
-
-##############################################
-
-# create code for DLL
-CFLAGS=$(CFLAGS) /LD
-
-# enable exception handling and RTTI
-CFLAGS=$(CFLAGS) /EHsc /GR
-
-# no banner
-CFLAGS=$(CFLAGS) /nologo
-LDFLAGS=$(LDFLAGS) /nologo
-
-##############################################
-
-!ifdef DEBUG
-
-!ifdef DYNAMIC
-CFLAGS=$(CFLAGS) /MDd
-!else
-CFLAGS=$(CFLAGS) /MTd
-!endif
-
-LDFLAGS=$(LDFLAGS) /DEBUG
-
-!else
-
-!ifdef DYNAMIC
-CFLAGS=$(CFLAGS) /MD
-!else
-CFLAGS=$(CFLAGS) /MT
-!endif
-
-LDFLAGS=$(LDFLAGS) /INCREMENTAL:NO
-
-!endif
-
-##############################################
-# convert both *.c and *.cpp
-
-OBJSTMP= $(SRCS:.c=.obj)
-OBJS= $(OBJSTMP:.objpp=.obj)
diff --git a/externals/grill/flext/buildsys/win/pd/bmake-bcc-ext.inc b/externals/grill/flext/buildsys/win/pd/bmake-bcc-ext.inc
deleted file mode 100644
index 26bcf06e..00000000
--- a/externals/grill/flext/buildsys/win/pd/bmake-bcc-ext.inc
+++ /dev/null
@@ -1 +0,0 @@
-EXT=dll
diff --git a/externals/grill/flext/buildsys/win/pd/bmake-bcc-flext.inc b/externals/grill/flext/buildsys/win/pd/bmake-bcc-flext.inc
deleted file mode 100644
index d30a7144..00000000
--- a/externals/grill/flext/buildsys/win/pd/bmake-bcc-flext.inc
+++ /dev/null
@@ -1,5 +0,0 @@
-!ifdef SHARED
-EXT=dll
-!else
-EXT=lib
-!endif
diff --git a/externals/grill/flext/buildsys/win/pd/bmake-bcc-shlib.inc b/externals/grill/flext/buildsys/win/pd/bmake-bcc-shlib.inc
deleted file mode 100644
index b2234c5b..00000000
--- a/externals/grill/flext/buildsys/win/pd/bmake-bcc-shlib.inc
+++ /dev/null
@@ -1 +0,0 @@
-EXT=dll
diff --git a/externals/grill/flext/buildsys/win/pd/bmake-bcc.inc b/externals/grill/flext/buildsys/win/pd/bmake-bcc.inc
deleted file mode 100644
index a15a75e6..00000000
--- a/externals/grill/flext/buildsys/win/pd/bmake-bcc.inc
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFS=$(DEFS) /DFLEXT_SYS=2 /DPD
-
-!ifdef WINNT
-DEFS=$(DEFS) /D_WIN32_WINNT=0x500
-!endif
-
-##############################################
-
-INCPATH=$(INCPATH) -I$(PDPATH)\src
-
-# these are both in FLEXTPATH
-LIBS=$(LIBS) pd.lib pthreadVC.lib
diff --git a/externals/grill/flext/buildsys/win/pd/config-bcc.def b/externals/grill/flext/buildsys/win/pd/config-bcc.def
deleted file mode 100644
index 54e8397d..00000000
--- a/externals/grill/flext/buildsys/win/pd/config-bcc.def
+++ /dev/null
@@ -1,38 +0,0 @@
-# where is the PD installation?
-# (this should point to the main folder, which has a "src" subfolder)
-PDPATH="c:\program files\pd"
-
-# where is BorlandC++?
-BCCPATH="c:\program files\bcc55"
-
-###############################################################
-
-# where do/should the flext headers reside/be built?
-FLEXTINC=$(PDPATH)\flext
-
-# where do/should the flext static libraries reside/be built?
-FLEXTLIB=$(FLEXTINC)
-
-# where do/should the flext shared libraries reside/be built?
-FLEXTSHLIB=$(PDPATH)\bin
-
-###############################################################
-
-# where should the external be built?
-OUTPATH=pd-bcc
-
-# where should the external be installed?
-INSTPATH=$(PDPATH)\extra
-
-###############################################################
-
-# user defined compiler flags
-# (check if they match your system!)
-UFLAGS=
-
-# user defined optimization flags
-# (check if they match your system!)
-OFLAGS=-6 -O2 -OS -ff -d
-
-# comment if you want to compile for Windows 95/98/ME
-WINNT=1
diff --git a/externals/grill/flext/buildsys/win/pd/config-cygwin.def b/externals/grill/flext/buildsys/win/pd/config-cygwin.def
deleted file mode 100644
index 6c35151a..00000000
--- a/externals/grill/flext/buildsys/win/pd/config-cygwin.def
+++ /dev/null
@@ -1,34 +0,0 @@
-# where is the PD installation?
-# (this should point to the main folder, which has a "src" subfolder)
-PDPATH=/cygdrive/c/program files/pd
-
-###############################################################
-
-# where do/should the flext headers reside/be built?
-FLEXTINC=$(PDPATH)/flext
-
-# where do/should the flext static libraries reside/be built?
-FLEXTLIB=$(FLEXTINC)
-
-# where do/should the flext shared libraries reside/be built?
-FLEXTSHLIB=$(PDPATH)/bin
-
-###############################################################
-
-# where should the external be built?
-OUTPATH=pd-cygwin
-
-# where should the external be installed?
-INSTPATH=$(PDPATH)/extra
-
-###############################################################
-
-# user defined compiler flags
-# (check if they match your system!)
-UFLAGS=-msse -mfpmath=sse -ffast-math
-
-# user defined optimization flags
-# (check if they match your system!)
-OFLAGS=-O3
-# optimizations for Pentium 4
-OFLAGS+=-march=pentium4
diff --git a/externals/grill/flext/buildsys/win/pd/config-mingw.def b/externals/grill/flext/buildsys/win/pd/config-mingw.def
deleted file mode 100644
index bed53e35..00000000
--- a/externals/grill/flext/buildsys/win/pd/config-mingw.def
+++ /dev/null
@@ -1,37 +0,0 @@
-# where is the PD installation?
-# (this should point to the main folder, which has a "src" subfolder)
-PDPATH="%ProgramFiles%\pd"
-
-###############################################################
-
-# where do/should the flext headers reside/be built?
-FLEXTINC=$(PDPATH)\flext
-
-# where do/should the flext static libraries reside/be built?
-FLEXTLIB=$(FLEXTINC)
-
-# where do/should the flext shared libraries reside/be built?
-FLEXTSHLIB=$(PDPATH)\bin
-
-###############################################################
-
-# where should the external be built?
-OUTPATH=pd-mingw
-
-# where should the external be installed?
-INSTPATH=$(PDPATH)\extra
-
-###############################################################
-
-# user defined compiler flags
-# (check if they match your system!)
-UFLAGS=-msse -mfpmath=sse -ffast-math
-
-# user defined optimization flags
-# (check if they match your system!)
-OFLAGS=-O3
-# optimizations for Pentium 4
-OFLAGS+=-march=pentium4
-
-# comment if you want to compile for Windows 95/98/ME
-WINNT=1
diff --git a/externals/grill/flext/buildsys/win/pd/config-msvc.def b/externals/grill/flext/buildsys/win/pd/config-msvc.def
deleted file mode 100644
index 49137ef5..00000000
--- a/externals/grill/flext/buildsys/win/pd/config-msvc.def
+++ /dev/null
@@ -1,46 +0,0 @@
-# where is the PD installation?
-# (this should point to the main folder, which has a "src" subfolder)
-PDPATH="%ProgramFiles%\pd"
-
-# where is MS VC++?
-# (not necessary if the build is run with the compiler environment)
-# MSVCPATH="%ProgramFiles%\Microsoft Visual Studio .NET 2003\Vc7"
-
-###############################################################
-
-# where do/should the flext headers reside/be built?
-FLEXTINC=$(PDPATH)\flext
-
-# where do/should the flext static libraries reside/be built?
-FLEXTLIB=$(FLEXTINC)
-
-# where do/should the flext shared libraries reside/be built?
-FLEXTSHLIB=$(PDPATH)\bin
-
-###############################################################
-
-# where should the external be built?
-# (relative one-level subpath to project folder)
-OUTPATH=pd-msvc
-
-# where should externals be installed?
-INSTPATH=$(PDPATH)\extra
-
-###############################################################
-
-# user defined compiler flags
-# (check if they match your system!)
-UFLAGS=
-
-# user defined optimization flags
-# (check if they match your system!)
-OFLAGS=/Ox
-# optimizations for Pentium 4
-OFLAGS=$(OFLAGS) /G6 /arch:SSE
-
-# comment if you want to compile for Windows 95/98/ME
-WINNT=1
-
-# uncomment to link against dynamic C runtime libraries
-# (don't use this if you want to distribute the built product)
-#DYNAMIC=1
diff --git a/externals/grill/flext/buildsys/win/pd/gnumake-cygwin-ext.inc b/externals/grill/flext/buildsys/win/pd/gnumake-cygwin-ext.inc
deleted file mode 100644
index 26bcf06e..00000000
--- a/externals/grill/flext/buildsys/win/pd/gnumake-cygwin-ext.inc
+++ /dev/null
@@ -1 +0,0 @@
-EXT=dll
diff --git a/externals/grill/flext/buildsys/win/pd/gnumake-cygwin-flext.inc b/externals/grill/flext/buildsys/win/pd/gnumake-cygwin-flext.inc
deleted file mode 100644
index e64eb6c5..00000000
--- a/externals/grill/flext/buildsys/win/pd/gnumake-cygwin-flext.inc
+++ /dev/null
@@ -1,5 +0,0 @@
-ifdef SHARED
-EXT=dll
-else
-EXT=a
-endif
diff --git a/externals/grill/flext/buildsys/win/pd/gnumake-cygwin-shlib.inc b/externals/grill/flext/buildsys/win/pd/gnumake-cygwin-shlib.inc
deleted file mode 100644
index b2234c5b..00000000
--- a/externals/grill/flext/buildsys/win/pd/gnumake-cygwin-shlib.inc
+++ /dev/null
@@ -1 +0,0 @@
-EXT=dll
diff --git a/externals/grill/flext/buildsys/win/pd/gnumake-cygwin.inc b/externals/grill/flext/buildsys/win/pd/gnumake-cygwin.inc
deleted file mode 100644
index dca95023..00000000
--- a/externals/grill/flext/buildsys/win/pd/gnumake-cygwin.inc
+++ /dev/null
@@ -1,6 +0,0 @@
-DEFS += -DFLEXT_SYS=2 -DPD
-
-INCPATH += -I$(PDPATH)/src
-
-LIBS += $(PDPATH)/bin/pthreadVC.dll
-SYSLIBS += $(PDPATH)/bin/pd.dll
diff --git a/externals/grill/flext/buildsys/win/pd/gnumake-mingw-ext.inc b/externals/grill/flext/buildsys/win/pd/gnumake-mingw-ext.inc
deleted file mode 100644
index 26bcf06e..00000000
--- a/externals/grill/flext/buildsys/win/pd/gnumake-mingw-ext.inc
+++ /dev/null
@@ -1 +0,0 @@
-EXT=dll
diff --git a/externals/grill/flext/buildsys/win/pd/gnumake-mingw-flext.inc b/externals/grill/flext/buildsys/win/pd/gnumake-mingw-flext.inc
deleted file mode 100644
index e64eb6c5..00000000
--- a/externals/grill/flext/buildsys/win/pd/gnumake-mingw-flext.inc
+++ /dev/null
@@ -1,5 +0,0 @@
-ifdef SHARED
-EXT=dll
-else
-EXT=a
-endif
diff --git a/externals/grill/flext/buildsys/win/pd/gnumake-mingw-shlib.inc b/externals/grill/flext/buildsys/win/pd/gnumake-mingw-shlib.inc
deleted file mode 100644
index b2234c5b..00000000
--- a/externals/grill/flext/buildsys/win/pd/gnumake-mingw-shlib.inc
+++ /dev/null
@@ -1 +0,0 @@
-EXT=dll
diff --git a/externals/grill/flext/buildsys/win/pd/gnumake-mingw.inc b/externals/grill/flext/buildsys/win/pd/gnumake-mingw.inc
deleted file mode 100644
index d3b6cedb..00000000
--- a/externals/grill/flext/buildsys/win/pd/gnumake-mingw.inc
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFS += -DFLEXT_SYS=2 -DPD
-
-ifdef WINNT
-CFLAGS += -D_WIN32_WINNT=0x500
-endif
-
-##############################################
-
-INCPATH += -I$(PDPATH)/src
-LIBPATH += -L$(PDPATH)/bin
-
-# these are both in PDPATH
-LIBS += -lpd -lpthreadVC
diff --git a/externals/grill/flext/buildsys/win/pd/nmake-msvc-ext.inc b/externals/grill/flext/buildsys/win/pd/nmake-msvc-ext.inc
deleted file mode 100644
index 26bcf06e..00000000
--- a/externals/grill/flext/buildsys/win/pd/nmake-msvc-ext.inc
+++ /dev/null
@@ -1 +0,0 @@
-EXT=dll
diff --git a/externals/grill/flext/buildsys/win/pd/nmake-msvc-flext.inc b/externals/grill/flext/buildsys/win/pd/nmake-msvc-flext.inc
deleted file mode 100644
index d30a7144..00000000
--- a/externals/grill/flext/buildsys/win/pd/nmake-msvc-flext.inc
+++ /dev/null
@@ -1,5 +0,0 @@
-!ifdef SHARED
-EXT=dll
-!else
-EXT=lib
-!endif
diff --git a/externals/grill/flext/buildsys/win/pd/nmake-msvc-shlib.inc b/externals/grill/flext/buildsys/win/pd/nmake-msvc-shlib.inc
deleted file mode 100644
index b2234c5b..00000000
--- a/externals/grill/flext/buildsys/win/pd/nmake-msvc-shlib.inc
+++ /dev/null
@@ -1 +0,0 @@
-EXT=dll
diff --git a/externals/grill/flext/buildsys/win/pd/nmake-msvc.inc b/externals/grill/flext/buildsys/win/pd/nmake-msvc.inc
deleted file mode 100644
index 89fba829..00000000
--- a/externals/grill/flext/buildsys/win/pd/nmake-msvc.inc
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFS=$(DEFS) /DFLEXT_SYS=2 /DPD
-
-!ifdef WINNT
-DEFS=$(DEFS) /D_WIN32_WINNT=0x500
-!endif
-
-##############################################
-
-INCPATH=$(INCPATH) /I$(PDPATH)\src
-LIBPATH=$(LIBPATH) /LIBPATH:$(PDPATH)\bin
-
-# these are both in PDPATH
-LIBS=$(LIBS) pd.lib pthreadVC.lib
diff --git a/externals/grill/flext/changes.txt b/externals/grill/flext/changes.txt
deleted file mode 100644
index fef5d86c..00000000
--- a/externals/grill/flext/changes.txt
+++ /dev/null
@@ -1,355 +0,0 @@
-flext - C++ layer for Max/MSP and pd (pure data) externals
-
-Copyright (c) 2001-2007 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-----------------------------------------------------------------------------
-
-Version history:
-
-0.5.1:
-- optimizations for message handling and memory footprint
-- enhanced build system for cygwin
-- added GetCanvasDir to retrieve folder in which the patcher resides
-- better handling of click callback
-- more compatible handling of attributes in patcher (hiding is now an option - define FLEXT_ATTRHIDE)
-- added header file flfeatures.h for compile-time detection of version-specific features
-- typed flext::NewAligned allocator
-- fixed severe Altivec bug (load unaligned)... thanks to Ian Ollmann
-- restructured initialization and finalization (esp. Max DSP stuff)
-- real class names now also reflect debug mode (like in flext_base_shared_d)
-- cleaned up internals (like Max/MSP typedefs)
-- fixed coexistence of message and signal objects in Max/MSP object libraries
-- fixes for pthreads version 2
-- deprecated FLEXT_NOGLOBALNEW in favor of FLEXT_USE_CMEM (either global new/delete operators or C library memory allocation)
-- fixing uninitialized pointer (first inlet pointer)
-- added message bundle functionality (to send more messages over the thread boundary to arrive at the same logical time)
-- fixed dangerous spot (also memory leak) with message queuing
-- fixed buggy freeing of memory for AtomListStatic
-- optimizations around method registration
-- preprocessor symbol FLEXT_COMPATIBLE - if defined don't implement specialities of either PD or Max/MSP
-- Max: fixed reported bug (#67), where list elements are distributed over inlets
-- added thisParent type, which refers to the class from which the current flext class is derived (as given in FLEXT_HEADER)
-- bang method can also by added with FLEXT_(C)ADDMETHOD (FLEXT_(C)ADDBANG is still an alias)
-- attribute generation is now determined exclusively by each object class setup (not library is before)
-- more robust pack setting for Max/MSP @ Windows
-- should work with Mac/Intel (still untested!)
-- added new FLEXT_HEADER macros to enable class templates
-- more ToOut/Sys* methods
-- fixed help name definition at class setup
-- added gcc branch hinting
-- PD: possibility to create DSP classes without main DSP inlet (use e.g. FLEXT_DSP0_NEW)
-- fixed atom sorting (symbols were sorted by pointer, not by content)
-- updated build system to handle UB on OSX (including architecture-specific compiler flags)
-
-0.5.0:
-- fixes for 64 bit builds (size_t is integer type of pointer size)
-- finally added a autoconf system (many many thanks to Tim Blechmann)
-- more character escapes for attribute editor
-- fixed the attribute editor for 0.38, stopped redundant transfer of script code
-- show saveable attributes on object select
-- fix for long attribute dialogs
-- dropped support for Max UI objects
-- added global system locking
-- added general atom outlet functions To{Sys,Out,Queue}Atom
-- new build system for flext and flext-based externals
-- flags for object construction and destruction phase (Initing() and Exiting())
-- reconsidered flext::buffer::Update
-- enhanced buffer handling
-- support for buffer locking (flext::buffer::Lock() and Unlock()) - it's a must for Max/MSP at least
-- use new PD idle callback for queues messages (currently in devel_0_38)
-- fixed bug with unregistering for bound symbols
-- removed virtual m_assist function (which was only useful for Max)... stick to static assist strings
-- removed virtual flext_dsp::m_enable function (which wasn't present for Max/MSP)
-- added m_click method which gets called on alt-click (PD) resp. double clicks (Max) onto the object box
-- in ToOut check if we are inside dsp (and use ToQueue then...)
-- some restructuring and use symbols (rather than char *) natively for AddMethod* and AddAttrib* functions
-- added some more SIMD functionality
-- fixes to flext::Timer::At method
-- eliminated misleading flext_dsp::ChannelsIn and ChannelsOut
-- added lock-free Lifo and Fifo structures and used it with message queueing and thread management
-- eliminated default "help" (m_help) method... should be implemented in the flext-based object
-- changed virtual callback names m_loadbang, m_method_, m_dsp, m_signal, m_click to CbLoadbang, CbMethodResort, CbDsp, CbSignal, CbClick
-- replaced memory-intensive STL maps by custom-made vector/map-monster (should be fast!)
-- fixed bug for symbol messages into non-left inlets
-- better timers for Windows
-- slimmed down object data structures and changed initialization code accordingly
-- digest one-element float/int/symbol/pointer list messages as single atoms
-- simplified message analysis
-- made flext::Forward thread safe
-
-0.4.7:
-- added flext::GetBool (just because flext::GetInt has been there for a while)
-- added bool to usable types for creation arguments
-- protection for SIMD routines with count=0
-- support exceptions for setup functions, object creation and destruction, method handling
-- small fixes for MSVC6 incompatibilites
-- fixes for Max 4.5 headers
-- removed Mach-O/CFM glue stuff again and added makefiles for Max/MachO
-- in flext::StopThread don't wait for thread to have stopped!
-- support PD tooltips (only in devel branch at the moment)
-- attribute editor: added individual apply buttons
-- attribute editor: added escaping for , and ;
-- attribute editor: zoomed editor accepts , as newline separator
-- attribute editor: close editor window on object destruction
-- fixed $0-arguments in attribute saving
-- introducing ring buffer for message queue (thanks to Tom Schouten)
-- printing of atoms into buffer with better error checking
-
-0.4.6:
-- added a text edit window for list attributes
-- finally use global allocator operators (MFC doesn't like it but who cares)
-- fixed entry of local variables with attribute editor
-- help window for attribute editor
-- appended lacking ~ for tilde object help patches
-- uniform STL container for all kinds of attribute, method, class handling
-- support for MinGW
-- added flext_obj::CanvasArgs
-- fixed small problem with buffer->Valid() on startup
-- fixed buffer overrun problems with flext::post, flext::error... (but still to improve)
-- improved handling of patcher arguments
-- also initialize flext::sym_int as MakeSymbol("int") for PD (since the variable is there anyhow)
-- fixed bug with attribute dumping
-- default arguments for object construction (types float0,int0,t_symtype0 for FLEXT_NEW*)
-- added flext::sym__ for empty symbol ""
-
-0.4.5:
-- added some more SIMD functions
-- PD attributes: added a TCL/TK editor dialog ("properties") and save attributes to patcher
-- fixed wrong returned result of flext::buffer::set function
-- fix for linux static exported function name-clash (individual linker namings for exported flext base classes)
-- made message queue stuff global (static) for all flext objects
-- added flext_base::DumpAttrib to send an attribute value to the attribute outlet
-- added "getmethods" message (for attribute-enabled externals) to list methods for a specified inlet (default = 0)
-- "getattributes" or "getmethods" output lists are now alphabethically sorted
-- flext::StopThread function to terminate running threads (started with LaunchThread)
-- added flext::CmpAtom and AtomList::operator < methods ... useful for using lists as keys for STL
-- make use of new PD thread locking (PD functions sys_lock() and sys_unlock()), queue messages only if necessary
-- better FLEXT_OSAPI resolution
-- ListAttributes (or the getattributes message) now lists attributes in the order they were created (first class, then object scope)
-- enforcing usage of STL
-- explicit boolean attributes (great for attribute editor layout!)
-- flext_dsp reported wrong inlet/outlet count (CntInSig, CntOutSig functions)
-- added support for patcher arguments for attributes (use # instead of $ to save them with a patch)
-- moved memory functions and console output from flext to super-base-class flext_root and derived all helper classes from that
-- changed FLEXT_THREAD_X: wrappers doesn't delete the passed data pointer anymore -> the called method is responsible for that (and it knows the type....)
-- enabled binding of more than one function to a symbol and added flext_base::GetBoundMethod
-- native support for Windows threading model
-
-0.4.4:
-- fixed deadly bug for Max/MSP method-to-symbol-binding proxies
-- some fixes for CodeWarrior Mach-O compilation
-- fixed destruction bug for hashed "item arrays"
-- added flext_base::ToSelf* methods for queued (deferred) self messaging
-- deleted flext::buffer console outputs for undefined arrays/buffer~s: should be done by externals
-- a few changes for the flext shared library
-- tiny update for PD 0.37 header file usage
-- fixed a bug associated to attribute argument lists
-- added functions for version number and string (flext::Version and flext::VerStr, mainly for usage of a shared flext library)
-- flext_base::UnbindMethod returns user data
-- fixed compilation problem with t_symbol-type attributes
-- added methods for sending boolean values (ToOutBool, ToQueueBool, ToSelfBool)
-
-0.4.3:
-- added forgotten flext_base::ToQueueString method
-- added timer functions and flext::Timer class
-- added functions for SIMD support
-- fixed race condition when using LaunchThread in a setup function (now waiting for thread helper to initialize)
-- added flext::Forward function to send messages to bound symbols
-- added "zero" flag to flext::buffer resize operation
-- fixed bug for Max/MSP buffer resize with preservation of contents
-- fixed bug with thread initialization (caused PD@OSX to crash on startup)
-- flext::setup is only run once now
-- fixed creation bug with objects that have attributes but no outlets
-- added FLEXT_BINDMETHOD,FLEXT_UNBINDMETHOD to bind a method to a symbol
-- fixed bug with hard thread termination (of incooperative threads)
-
-0.4.2:
-- started port for jMax
-- moved CLASS_MAINSIGNALIN to class scope (fixed "float method overwritten" warning)
-- unix makefiles: CXX should be commented out if standard (to enable environmental settings)
-- introduced default returns for the different flext::GetA* functions
-- pragma for Metrowerks compilers: enumsalwaysint on, bool on
-- MaxMSP: added assist string for attribute outlets
-- added new POSIX for ThrCond::TimedWait (but still have to find out when to enable it....)
-- added CopySamples and ZeroSamples
-- fixed bug for DSP object with zero signal inlets in PD
-- added validity check for sample buffers
-
-0.4.1:
-- full port for Max@OSX
-- completely redesigned message and attribute handling: now hashed and much more efficient
-- greatly enhanced object creation and destruction (esp. for library objects)
-- class setup functions now take t_classid type arg... this is BACKWARDS-INCOMPATIBLE for Max/MSP
-- added some prerequisites for usage of flext as a shared library
-- completed Max/MSPs inlet/outlet assist description functionality
-- Max/MSP signal objects: fixed bug of reporting wrong number of inlets
-- put overloaded new/delete into flext support class
-- introduced "Finalize" virtual method, called after all "Init" methods
-- fixed crash issue in flext_dsp when there are NO signal inlets or outlets defined
- (this is possibly only a problem for the signal2 tutorial example)
-- added flext::GetType(t_atom &), flext::ZeroMem
-- put the clock_delay for the message queue inside the thread-locked area
- Ok for the actual object, but PD has to be thread-safe here as well
-- BACKWARDS-INCOMPATIBLE CHANGE: flext_base::m_methodmain and flext_base::m_method_ have got
- const modifiers.... these virtual methods are used rarely (except for example in py/pyext)
-- now MUCH cleaner platform identification... FLEXT_SYS,FLEXT_OS,FLEXT_CPU definitions
-- also FLEXT_DEBUG for debug build
-- SndObjs: virtual FreeObject routine is now called at destruction (by parent class), derived class doesn't need to call it!
-- SndObjs: fixed typo (numbers of output slots was wrong) and init bug
-- STK: added support for STK object classes (flstk.{h,cpp})
-- introduced a helper thread for launching flext threads in the background
-- threads are now handled on class (as opposed to object) level
-- threads can now be terminated separately
-- put more flext functions into flext static class
-- replaced ChangePriority by RefPriority
-- fixed setting of priorities... problems were caused by a compiler bug (MSVC 6)
-- made a portable threading interface with support for threading libraries other than pthreads (FLEXT_THREADS defined as FLEXT_THR_*)
-- implemented threading support with the MacOS MP thread library
-- stripped the ThrMutex and ThrCond classes of non-portable (and irrelevant) functionality
-- simplified "ToQueue*" and threaded "ToOut*" message queue mechanism for Max/MSP
-- deprecated FLEXT_ADDMETHOD_V and FLEXT_ADDMETHOD_A definitions which only lead to confusion
-- BACKWARDS-INCOMPATIBLE CHANGE: flext_sndobj::NewObjs must return a boolean!!
-
-0.4.0:
-- the use of the const keyword is enforced (e.g. the preferred type for symbols is now "const t_symbol *")
- - there _might_ be some problems with sensitive compilers
-- introduced Max/Jitter-like attribute functionality ("@value" command line, "getvalue" get and "value" set functions)
-- introduced a flext static class for general flext functions (to clean up the flext_base class)
-- creation argument handling is now done by flext
- no more weird PD re-ordering of arguments
-- no more support for the Apple MPW compiler - MacOS9 is dying anyway...
-- calling SetupInOut() has become obsolete
- - flext creates all inlets/outlets by itself after the constructor has finished
- - this implies that CntIn(),CntOut() and the outlet pointers are not valid in the constructor
- - there is a virtual bool Init() function that may be used for such initialization
-- completely redesigned FLEXT_NEW macros, usage of dynamic classes (in fllib.cpp)
-- added ToQueue* functions - like ToOut* but messages or not directly sent (well suited for deadlock situations)
-- introduced additional per-class methods and attributes (just like it ever was in Max and PD)
-- fixed potentially dangerous typo in flext.cpp - (was: FLEXT_THREAD instead of FLEXT_THREADS)
-- added OSX/darwin support (originally done by Adam T. Lindsay)
-- SndObj interface now also available for cygwin and BCC
-- added prepend and append functions to AtomList class
-- added IsNothing, SetNothing, CanbeBool and GetABool functions
-- eliminated the remaining Get*Flint and Set*Flint functions
-- added/completed Is/Canbe/Get/Set for pointer atoms
-- added print/scan functions for atoms
-- fixed anything outlets for Max/MSP... for some strange reason this severe bug has not had severe consequences....
-
-0.3.3:
-- PD: fixed bug for DSP objects having no signal inlets
- this also enables floats into a non-signal leftmost inlet
-- revisited priority stuff for detached threads
-- Bind/unbind functions for flext classes (in MaxMSP only one object can be bound)
-- made "t_symtype" another synonym for "t_symbol *"
-- added forgotten dsp_free function for MaxMSP
-- fixed forgotten __class__ member for MaxMSP libraries
-- changed basic MaxMSP object to t_pxbox (ok, a bit more memory is used....)
-- MaxMSP library can now be loaded from startup folder (but can't use aliases)
-- if no handler is found for pure anything (just symbol, no args...) try list handler
-- added interface for SndObj (http://www.may.ie/academic/music/musictec/SndObj/ )
-
-0.3.2:
-- Doxygen generated inline documentation / functional reference
-- added some more functionality to the AtomAnything class
-- bugfix for threaded methods with var list or anything arguments
-- added threaded method for arbitrary (void *) data structs
-- ThrMutex: added lock count functions Push() and Pop()
-- eliminated potentially dangerous SetThing,GetThing and introduced DoBind,DoUnbind,GetBound instead
-- fixed severe bug with the current threads list
-- add path specification possibility for help symbols (in FLEXT_NEW*)
-- use pthread_attr and DETACHED flag
-
-0.3.1:
-- added some more functionality to the AtomList class
-- fixed forgotten Sleep implementation in pd@unix
-- reorganized file structure and config/make procedures
-
-0.3.0:
-- added CYGWIN support
-
-- added threaded methods along with a message queue for ToOut* functions (very unstable for MaxMSP!)
- to use threads compile flext with FLEXT_THREADS definition
-- check/update function for buffer change (resize etc.)
-- description text for inlets/outlets (e.g. for MaxMSPs assist function) - not fully implemented
-- added buffer resize functions flext_base::buffer::Frames(int,bool)
-- added some utility functions: Sleep, CopyAtom, CopyList
-- added List manipulation classes: AtomList, AtomAnything
-- Alias object names (simply specify with FLEXT_NEW*, separated by whitespace)
-- float messages - int method is called if there is no float method
-- MaxMSP: int messages - float method is called if there is no int method
-- fixed type warning for class constructors with int arguments in PD
-- fixed severe bug concerning symbol methods
-- MaxMSP: use critical sections for message output (for more safety in overdrive mode)
-- PD: default/manual definition of help file by flext_base::DefineHelp
-- added GetThing/SetThing to access t_symbol's s_thing data member
-
-- introduced FLEXT_NEW_DSP* and FLEXT_LIB_DSP* for FLEXT_NEW_TILDE* and FLEXT_LIB_TILDE* (the latter become deprecated)
-- all variable argument defs (aka gimme) now have a V instead of G (e.g. FLEXT_NEW_V)
-
-0.2.3:
-- restructured files and started usable inline documentation
-- found that there was no method to output a bang?! Ugh! -> corrected
-- finally eliminated awful t_flint type and all other schizophrenic flint functions (float and int exist now equally)
-- now (finally) using type t_sample for sample values (should just be identical to float)
-- added AddInBang/AddOutBang (same as Add*Symbol - unchecked)
-- buffer class: added "bool Ok()" check function
-- switched on error posting for unhandled messages
-- added XletCode and AddInlets/AddOutlets for multiple Inlet/Outlet addition (max. 9 inlets/outlets)
-- if float or int message is not handled explicitly then [list float/int( is tried
-
-0.2.2:
-- added xgimme argument type (supplies method handlers with symbol+gimme)
-- more information on DSP system with flext_dsp object (block size,number of audio inputs and outputs)
-- cleaner gcc makefile
-- made NewAligned/FreeAligned static functions
-- introduced FLEXT(_TILDE)_SETUP for class setup in a library setup function
-- introduced external libraries for MaxMSP, changed library setup behavior (now via FLEXT_LIB_SETUP)
-- included MaxMsp's inofficial buffer.h with consent by David Zicarelli
-- changed dynamic casts in callback functions to static as gcc 3.0.4 has obvious bugs
-
-0.2.1:
-- fixed bug in message parsing code (anything messages were not correctly mapped to inlets)
-- changed t_symtype to t_symptr (= t_symbol *), needed for method argument lists
-- eliminated flint type (t_flint remains)
-
-0.2.0:
-- internal proxy objects for any non-leftmost inlets
-- Max/MSP: all signal inlets can receive messages
-- method/argument parsing is done by flext - float/int are not distinguished, the first handler wins
-- integrated more system functions into flext_base & eliminated superfluous #defines
-- distribute list (into inlet 0) elements over inlets (right to left)
-- added outlets for anythings
-- defines for callback-to-method functions and method setup (FLEXT_CALLBACK*, FLEXT_ADD*)
-- uses PD's or Max's memory allocation functions (for safety in Max's overdrive)
-- no support for default arguments (A_DEFFLOAT and A_DEFSYMBOL).. use GIMME instead!
-- better graphics update behavior for PD
-- improved behavior for invalid/undefined buffers/arrays
-- use MaxMSP internal z_disabled flag with flext_dsp for pausing/resuming dsp processing
-- included CHECK_TILDE, a test whether a tilde object (defined as FLEXT_TILDE_*) has a trailing ~. (debug mode only)
-- changed notation of flext functions from to_out_float like to ToOutFloat like
-- eliminated trivial shortcuts (F,I,V,...) for built-in types
-- MaxMSP is only capable of 3 creation arguments... that should be sufficient - otherwise use GIMME
-- Methods for aligned memory (NewAligned, FreeAligned)
-
-0.1.1:
-- documentation for flext.h
-- more emancipation from GEM code
-- virtually everything renamed
-- abstraction for dsp processing
-- makefile for BCC
-- manual call of extern_setup or main unnecessary for single objects - only in pd libraries
-- delayed buffer init (only name is set beforehand)
-- loadbang also in PD
-- introduced "compatibility mode" which denies platform-specific features
-- fixed severe dsp bug (symptom: "float method overwritten" warning in pd)
-- fixed bug: wrong return code from buffer::Set
-
-0.1.0:
-- max-pd 0.2 becomes flext 0.1.0
-- heavy usage of unchanged GEM code
-
-
-
-
diff --git a/externals/grill/flext/configure.ac b/externals/grill/flext/configure.ac
deleted file mode 100755
index 83c6e309..00000000
--- a/externals/grill/flext/configure.ac
+++ /dev/null
@@ -1,160 +0,0 @@
-dnl
-dnl autoconf template
-dnl added by tim blechmann
-dnl
-
-dnl flext API version (current:release:age)
-API_VERSION=0:0:0
-
-AC_INIT([flext],[0.5.0],[gr@grrrr.org],[flext])
-AM_INIT_AUTOMAKE(1.6)
-
-
-dnl configure options
-AC_ARG_ENABLE(system, [ --enable-system flext system (default: pd)],
- [
- case $enableval in
- max) AC_DEFINE(FLEXT_SYS,1)
- TARGETDIR=maxmsp;;
- *) AC_DEFINE(FLEXT_SYS,2)
- TARGETDIR=pd;;
- esac
- system = $enableval
- ],
- AC_DEFINE(FLEXT_SYS,2)
- TARGETDIR=pd
-)
-
-AC_ARG_WITH(sysdir,
- [ --with-sysdir path to pd or max headers],
- [
- sysdir=$withval
- INCLUDEDIR="-I$withval $INCLUDEDIR"
- ],
- [echo "path to system headers required "$enableval && exit 1])
-
-dnl check for g_canvas.h in pd folder
-AC_CHECK_FILE("$sysdir/g_canvas.h",,[echo "$sysdir/g_canvas.h not found" && exit 1])
-
-AC_ARG_WITH(stkdir,
- [ --with-stkdir path to stk headers],
- [
- AC_CHECK_FILE("$withval/Stk.h",,[echo "$withval/Stk.h not found" && exit 1])
- stkdir=$withval
- INCLUDEDIR="-I$withval $INCLUDEDIR"
- ])
-
-AM_CONDITIONAL([STK],[test "$stkdir"])
-
-AC_ARG_WITH(sndobjdir,
- [ --with-sndobjdir path to SndObj headers],
- [
- AC_CHECK_FILE("$withval/SndObj.h",,[echo "$withval/SndObj.h not found" && exit 1])
- sndobjdir=$withval
- INCLUDEDIR="-I$withval $INCLUDEDIR"
- ])
-
-AM_CONDITIONAL([SNDOBJ],[test "$sndobjdir"])
-
-AC_ARG_ENABLE(optimize, [ --enable-optimize enables optimized builds for: pentium4, pentium3, G4, G5],
- [
- case $enableval in
- pentium3 | pentium3m)
- OPT_FLAGS = "-mtune=$enableval -march=$enableval -mmmx -msse -mfpmath=sse";
- AC_DEFINE(FLEXT_USE_SIMD);;
- pentium2 | athlon | pentium-mmx)
- OPT_FLAGS="-mtune=$enableval -march=$enableval -mmmx";;
- pentium)
- OPT_FLAGS="-mtune=$enableval -march=$enableval";;
- pentium4 | pentium4m | pentium-m | prescott | nocona | athlon-xp | athlon-mp | athlon64 | opteron)
- OPT_FLAGS="-mtune=$enableval -march=$enableval -mmmx -msse -msse2 -mfpmath=sse";
- AC_DEFINE(FLEXT_USE_SIMD);;
- G5 | G4)
- OPT_FLAGS="-mtune=$enableval --maltivec -faltivec -malign-natural";
- AC_DEFINE(FLEXT_USE_SIMD);;
- G3)
- OPT_FLAGS="-mtune=$enableval --malign-natural";;
- *)
- ;;
- esac
- ])
-
-dnl Checks for programs.
-AC_PROG_CC
-AC_PROG_CXX
-AC_PROG_INSTALL
-AC_PROG_MAKE_SET
-AC_PROG_RANLIB
-
-dnl Checks for libraries.
-
-dnl Checks for header files.
-
-dnl Checks for typedefs, structures, and compiler characteristics.
-AC_C_CONST
-AC_C_INLINE
-AC_TYPE_SIZE_T
-AC_STRUCT_TM
-
-dnl Checks for library functions.
-
-dnl system specific
-
-if test `uname -s` == Linux; then
- DYNAMIC_LDFLAGS="-Wl,-Bdynamic -shared"
- EXTENSION=pd_linux
- SOEXT=so
-fi
-
-if test `uname -s` == Darwin; then
-# DYNAMIC_LDFLAGS="-version-info $API_VERSION -release $AC_PACKAGE_VERSION -dynamiclib -dynamic -flat_namespace -undefined suppress"
-
- DYNAMIC_LDFLAGS="-dynamiclib -dynamic -flat_namespace -undefined suppress"
- if test $system == max; then
- EXTENSION=mxo
- else
- EXTENSION=pd_darwin
- fi
-
- SOEXT=dylib
- FRAMEWORKS="ApplicationServices vecLib"
-fi
-
-dnl todo: mingw / cygwin
-
-AC_SUBST(INCLUDEDIR)
-AC_SUBST(OPT_FLAGS)
-AC_SUBST(DYNAMIC_LDFLAGS)
-AC_SUBST(stkdir)
-AC_SUBST(sndobjdir)
-AC_SUBST(EXTENSION)
-AC_SUBST(SOEXT)
-AC_SUBST(TARGETDIR)
-AC_SUBST(FRAMEWORKS) dnl for osx
-AC_OUTPUT([
- Makefile
- tutorial/Makefile
- tutorial/adv1/Makefile
- tutorial/adv2/Makefile
- tutorial/adv3/Makefile
- tutorial/attr1/Makefile
- tutorial/attr2/Makefile
- tutorial/attr3/Makefile
- tutorial/bind1/Makefile
- tutorial/buffer1/Makefile
- tutorial/lib1/Makefile
- tutorial/signal1/Makefile
- tutorial/signal2/Makefile
- tutorial/simple1/Makefile
- tutorial/simple2/Makefile
- tutorial/simple3/Makefile
- tutorial/sndobj1/Makefile
- tutorial/stk1/Makefile
- tutorial/stk2/Makefile
- tutorial/thread1/Makefile
- tutorial/thread2/Makefile
- tutorial/timer1/Makefile
- tutorial/pd/Makefile
- tutorial/maxmsp/Makefile
- source/Makefile])
-
diff --git a/externals/grill/flext/examples/examples.dsw b/externals/grill/flext/examples/examples.dsw
deleted file mode 100644
index 6f52bde2..00000000
--- a/externals/grill/flext/examples/examples.dsw
+++ /dev/null
@@ -1,33 +0,0 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNUNG: DIESE ARBEITSBEREICHSDATEI DARF NICHT BEARBEITET ODER GELÖSCHT WERDEN!
-
-###############################################################################
-
-Project: "henon"=.\source\henon.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
- begin source code control
- max/flext/examples/source
- .\source
- end source code control
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
diff --git a/externals/grill/flext/examples/pd/ex-henon.pd b/externals/grill/flext/examples/pd/ex-henon.pd
deleted file mode 100644
index a70ec540..00000000
--- a/externals/grill/flext/examples/pd/ex-henon.pd
+++ /dev/null
@@ -1,87 +0,0 @@
-#N canvas 412 48 465 467 12;
-#X obj 18 43 bng 25 250 50 0 empty empty reset 0 -10 0 14 -261689 -1
--1;
-#X obj 99 44 bng 25 250 50 0 empty empty trigger 0 -10 0 14 -261689
--1 -1;
-#X obj 206 43 nbx 4 18 0 1 0 1 empty empty pre-alpha 0 -10 0 14 -225271
--1 -1 0.75 256;
-#X obj 322 44 nbx 4 18 0 1 0 1 empty empty pre-beta 0 -10 0 14 -225271
--1 -1 0.41 256;
-#X obj 60 264 nbx 5 18 -1e+037 1e+037 0 0 empty empty result 0 -10
-0 14 -228992 -1 -1 0 256;
-#N canvas 0 0 458 522 henon 0;
-#X text 115 130 x;
-#X text 190 129 y;
-#X obj 157 166 *;
-#X obj 47 158 t f f;
-#X obj 48 189 *;
-#X obj 77 215 *;
-#X obj 130 248 +;
-#X obj 113 281 + 1;
-#X obj 85 131 f 0;
-#X obj 158 130 f 0;
-#X obj 33 23 inlet;
-#X obj 263 27 inlet;
-#X obj 368 28 inlet;
-#X text 264 7 alpha;
-#X text 373 7 beta;
-#X text 28 5 commands;
-#X obj 31 50 route reset bang;
-#X obj 112 445 outlet;
-#X obj 100 86 t b b;
-#X obj 31 76 t 0;
-#X obj 241 55 * 1.5;
-#X obj 241 80 - 2.5;
-#X obj 361 55 - 0.5;
-#X obj 114 342 + 1;
-#X obj 114 369 / 2;
-#X obj 113 394 max 0;
-#X obj 113 418 min 1;
-#X connect 2 0 6 1;
-#X connect 3 0 4 0;
-#X connect 3 1 4 1;
-#X connect 4 0 5 0;
-#X connect 5 0 6 0;
-#X connect 6 0 7 0;
-#X connect 7 0 8 1;
-#X connect 7 0 23 0;
-#X connect 8 0 3 0;
-#X connect 8 0 9 1;
-#X connect 9 0 2 0;
-#X connect 10 0 16 0;
-#X connect 11 0 20 0;
-#X connect 12 0 22 0;
-#X connect 16 0 19 0;
-#X connect 16 1 18 0;
-#X connect 18 0 8 0;
-#X connect 18 1 9 0;
-#X connect 19 0 8 1;
-#X connect 19 0 9 1;
-#X connect 20 0 21 0;
-#X connect 21 0 5 1;
-#X connect 22 0 2 1;
-#X connect 23 0 24 0;
-#X connect 24 0 25 0;
-#X connect 25 0 26 0;
-#X connect 26 0 17 0;
-#X restore 60 208 pd henon;
-#X msg 18 77 reset;
-#X obj 294 201 henon;
-#X obj 292 259 nbx 5 18 -1e+037 1e+037 0 0 empty empty result 0 -10
-0 14 -228992 -1 -1 0 256;
-#X text 17 331 alpha and beta can also be initialized;
-#X text 18 350 at creation time;
-#X obj 45 426 henon @alpha 0.7 @beta 0.2;
-#X text 15 403 or \, using attributes;
-#X obj 45 377 henon 0.7 0.2;
-#X connect 0 0 6 0;
-#X connect 1 0 5 0;
-#X connect 1 0 7 0;
-#X connect 2 0 7 1;
-#X connect 2 0 5 1;
-#X connect 3 0 7 2;
-#X connect 3 0 5 2;
-#X connect 5 0 4 0;
-#X connect 6 0 5 0;
-#X connect 6 0 7 0;
-#X connect 7 0 8 0;
diff --git a/externals/grill/flext/examples/source/henon.cpp b/externals/grill/flext/examples/source/henon.cpp
deleted file mode 100644
index e48b9555..00000000
--- a/externals/grill/flext/examples/source/henon.cpp
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
-flext examples - henon
-
-Copyright (c) 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 a simple external featuring the chaotic Henon attractor.
-
-See also http://improv.sapp.org/doc/examples/synthImprov/henontune/henontune.html
-Thanks to David Casal for the pointer!
-
-*/
-
-// IMPORTANT: enable attribute processing (specify before inclusion of flext headers!)
-// For clarity, this is done here, but you'd better specify it as a compiler definition
-// FLEXT_ATTRIBUTES must be 0 or 1,
-#define FLEXT_ATTRIBUTES 1
-
-
-// include flext header
-#include <flext.h>
-
-// check for appropriate flext version
-#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 401)
-#error You need at least flext version 0.4.1
-#endif
-
-
-class henon:
- public flext_base
-{
- FLEXT_HEADER_S(henon,flext_base,Setup)
-
-public:
- // constructor
- henon(int argc,const t_atom *argv);
-
-protected:
- void m_bang();
- void m_reset() { x = y = 0; }
-
- void m_alpha(float a) { alpha = a; }
- void m_beta(float b) { beta = b; }
-
- float alpha,beta;
- float x,y;
-
-private:
- static void Setup(t_classid c);
-
- // method callbacks
- FLEXT_CALLBACK(m_reset)
- FLEXT_CALLBACK(m_bang)
- FLEXT_CALLBACK_F(m_alpha)
- FLEXT_CALLBACK_F(m_beta)
-
- // define attribute callbacks for variables alpha and beta (with GET and SET properties)
- FLEXT_ATTRVAR_F(alpha)
- FLEXT_ATTRVAR_F(beta)
-};
-
-// instantiate the class
-FLEXT_NEW_V("henon",henon)
-
-
-henon::henon(int argc,const t_atom *argv):
- alpha(0),beta(0),x(0),y(0) // initializations
-{
- // define inlets
- AddInAnything("reset,bang,...");
- AddInFloat("alpha");
- AddInFloat("beta");
-
- // define outlets
- AddOutFloat();
-
- // processing command line
- if(argc == 2 && CanbeFloat(argv[0]) && CanbeFloat(argv[1])) {
- // two float args
- alpha = GetAFloat(argv[0]);
- beta = GetAFloat(argv[1]);
- }
-}
-
-void henon::Setup(t_classid c)
-{
- // register methods
- FLEXT_CADDBANG(c,0,m_bang);
- FLEXT_CADDMETHOD_(c,0,"reset",m_reset);
-
- // methods for non-left inlets
- FLEXT_CADDMETHOD(c,1,m_alpha);
- FLEXT_CADDMETHOD(c,2,m_beta);
-
- // register attributes
- FLEXT_CADDATTR_VAR1(c,"alpha",alpha); // register attribute "alpha"
- FLEXT_CADDATTR_VAR1(c,"beta",beta); // register attribute "beta"
-}
-
-// Trigger output
-void henon::m_bang()
-{
- float _alpha_ = alpha*1.5f-2.5f;
- float _beta_ = beta-0.5f;
-
- float newx = 1 + _alpha_ * x * x + _beta_ * y;
- float newy = x;
- x = newx;
- y = newy;
-
- float output = (x + 1.0f)/2.0f;
- if(output < 0)
- output = 0;
- else if(output > 1)
- output = 1;
-
- // output value to outlet
- ToOutFloat(0,output); // (0 stands for the outlet index 0)
-}
diff --git a/externals/grill/flext/examples/source/henon.cw b/externals/grill/flext/examples/source/henon.cw
deleted file mode 100644
index cf880938..00000000
--- a/externals/grill/flext/examples/source/henon.cw
+++ /dev/null
Binary files differ
diff --git a/externals/grill/flext/examples/source/henon.dsp b/externals/grill/flext/examples/source/henon.dsp
deleted file mode 100644
index 24cbdfcf..00000000
--- a/externals/grill/flext/examples/source/henon.dsp
+++ /dev/null
@@ -1,95 +0,0 @@
-# Microsoft Developer Studio Project File - Name="henon" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** NICHT BEARBEITEN **
-
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-
-CFG=henon - Win32 Debug
-!MESSAGE Dies ist kein gültiges Makefile. Zum Erstellen dieses Projekts mit NMAKE
-!MESSAGE verwenden Sie den Befehl "Makefile exportieren" und führen Sie den Befehl
-!MESSAGE
-!MESSAGE NMAKE /f "henon.mak".
-!MESSAGE
-!MESSAGE Sie können beim Ausführen von NMAKE eine Konfiguration angeben
-!MESSAGE durch Definieren des Makros CFG in der Befehlszeile. Zum Beispiel:
-!MESSAGE
-!MESSAGE NMAKE /f "henon.mak" CFG="henon - Win32 Debug"
-!MESSAGE
-!MESSAGE Für die Konfiguration stehen zur Auswahl:
-!MESSAGE
-!MESSAGE "henon - Win32 Release" (basierend auf "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "henon - Win32 Debug" (basierend auf "Win32 (x86) Dynamic-Link Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName "henon"
-# PROP Scc_LocalPath "."
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "henon - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "msvc"
-# PROP Intermediate_Dir "msvc"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /YX /FD /c
-# ADD CPP /nologo /W3 /O2 /I "..\..\source" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "PD" /YX /FD /c
-# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0xc07 /d "NDEBUG"
-# ADD RSC /l 0xc07 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib /nologo /dll /machine:I386
-# ADD LINK32 kernel32.lib user32.lib pd.lib flext-pdwin.lib /nologo /dll /machine:I386 /out:"../pd-msvc/henon.dll" /libpath:"..\..\pd-msvc"
-
-!ELSEIF "$(CFG)" == "henon - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "msvc-debug"
-# PROP Intermediate_Dir "msvc-debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /ZI /Od /I "..\..\source" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "PD" /FR /YX /FD /GZ /c
-# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0xc07 /d "_DEBUG"
-# ADD RSC /l 0xc07 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib pd.lib flext_d-pdwin.lib /nologo /dll /debug /machine:I386 /pdbtype:sept /libpath:"..\..\pd-msvc"
-
-!ENDIF
-
-# Begin Target
-
-# Name "henon - Win32 Release"
-# Name "henon - Win32 Debug"
-# Begin Source File
-
-SOURCE=.\henon.cpp
-# End Source File
-# End Target
-# End Project
diff --git a/externals/grill/flext/flext.mcp b/externals/grill/flext/flext.mcp
deleted file mode 100644
index 595fe11e..00000000
--- a/externals/grill/flext/flext.mcp
+++ /dev/null
Binary files differ
diff --git a/externals/grill/flext/flext.vcproj b/externals/grill/flext/flext.vcproj
deleted file mode 100644
index 685b2db7..00000000
--- a/externals/grill/flext/flext.vcproj
+++ /dev/null
@@ -1,4333 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="flext"
- ProjectGUID="{B94DB81C-B5FB-4984-99DC-5063C3793BFE}"
- Keyword="Win32Proj">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Threads DLL Debug|Win32"
- OutputDirectory=".\pd-msvc\tdl"
- IntermediateDirectory=".\pd-msvc\tdl"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src,f:\prog\audio\sndobj\include,f:\prog\audio\stk\include"
- PreprocessorDefinitions="WIN32;_DEBUG;_LIB;FLEXT_SYS_PD;FLEXT_THREADS;FLEXT_USE_SIMD"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderThrough="flext.h"
- BrowseInformation="1"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="4"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLibrarianTool"
- OutputFile="pd-msvc/flext_tdl-pdwin.lib"
- SuppressStartupBanner="TRUE"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Threads DLL Release|Win32"
- OutputDirectory=".\pd-msvc\trl"
- IntermediateDirectory=".\pd-msvc\trl"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src,f:\prog\audio\sndobj\include,f:\prog\audio\stk\include"
- PreprocessorDefinitions="WIN32;NDEBUG;_LIB;FLEXT_SYS=2;FLEXT_THREADS;FLEXT_USE_SIMD"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- RuntimeTypeInfo="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderThrough="flext.h"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLibrarianTool"
- OutputFile="pd-msvc/flext_tl-pdwin.lib"
- SuppressStartupBanner="TRUE"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="PD Threads Debug|Win32"
- OutputDirectory=".\pd-msvc\td"
- IntermediateDirectory=".\pd-msvc\td"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="c:\data\prog\packs\pthreads\include;&quot;c:\data\pd\pd-cvs\src&quot;;c:\data\prog\audio\sndobj\include;c:\data\prog\audio\stk\include"
- PreprocessorDefinitions="WIN32;_DEBUG;_LIB;FLEXT_SYS_PD;FLEXT_THREADS;FLEXT_USE_SIMD;FLEXT_EXPORTS;xFLEXT_ATTRHIDE;xFLEXT_NOATTREDIT;_WIN32_WINNT=0x501;xFLEXT_USECMEM"
- BasicRuntimeChecks="3"
- RuntimeLibrary="1"
- RuntimeTypeInfo="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderThrough="flext.h"
- BrowseInformation="1"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="4"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLibrarianTool"
- OutputFile="pd-msvc/flext-pd_td.lib"
- SuppressStartupBanner="TRUE"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="PD Debug|Win32"
- OutputDirectory=".\pd-msvc\sd"
- IntermediateDirectory=".\pd-msvc\sd"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="c:\data\pd\pd-cvs\src;c:\data\prog\audio\sndobj\include;c:\data\prog\audio\stk\include"
- PreprocessorDefinitions="WIN32;_DEBUG;_LIB;FLEXT_SYS=2;FLEXT_USE_SIMD;FLEXT_EXPORTS;FLEXT_DEBUGMEM;_WIN32_WINNT=0x400"
- StringPooling="TRUE"
- BasicRuntimeChecks="3"
- RuntimeLibrary="5"
- RuntimeTypeInfo="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderThrough="flext.h"
- BrowseInformation="1"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLibrarianTool"
- OutputFile="pd-msvc/flext-pd_sd.lib"
- SuppressStartupBanner="TRUE"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="PD Threads Release|Win32"
- OutputDirectory=".\pd-msvc\t"
- IntermediateDirectory=".\pd-msvc\t"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src;c:\data\prog\audio\sndobj\include;c:\data\prog\audio\stk\include"
- PreprocessorDefinitions="WIN32;NDEBUG;_LIB;FLEXT_SYS=2;FLEXT_THREADS;FLEXT_USE_SIMD;FLEXT_EXPORTS;_WIN32_WINNT=0x501"
- StringPooling="TRUE"
- RuntimeLibrary="0"
- EnableFunctionLevelLinking="TRUE"
- RuntimeTypeInfo="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderThrough="flext.h"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLibrarianTool"
- OutputFile="pd-msvc/flext-pd_t.lib"
- SuppressStartupBanner="TRUE"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="PD Release|Win32"
- OutputDirectory=".\pd-msvc\s"
- IntermediateDirectory=".\pd-msvc\s"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src;c:\data\prog\audio\sndobj\include;c:\data\prog\audio\stk\include"
- PreprocessorDefinitions="WIN32;NDEBUG;_LIB;FLEXT_SYS=2;FLEXT_USE_SIMD;FLEXT_EXPORTS;_WIN32_WINNT=0x400"
- StringPooling="TRUE"
- RuntimeLibrary="4"
- EnableFunctionLevelLinking="TRUE"
- RuntimeTypeInfo="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderThrough="flext.h"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLibrarianTool"
- OutputFile="pd-msvc/flext-pd_s.lib"
- SuppressStartupBanner="TRUE"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="PD Shared Debug|Win32"
- OutputDirectory=".\pd-msvc\ddl"
- IntermediateDirectory=".\pd-msvc\ddl"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="&quot;c:\data\prog\pd\pd-cvs\src&quot;;c:\data\prog\packs\pthreads;c:\data\prog\audio\sndobj\include;c:\data\prog\audio\stk\include"
- PreprocessorDefinitions="WIN32;_DEBUG;_LIB;FLEXT_SYS_PD;FLEXT_THREADS;FLEXT_USE_SIMD;FLEXT_SHARED;FLEXT_EXPORTS;FLEXT_PDLOCK"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderThrough="flext.h"
- BrowseInformation="1"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- Detect64BitPortabilityProblems="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib pthreadVC.lib stk_d.lib sndobj.lib"
- OutputFile=".\pd-msvc\flext-pd_d.dll"
- AdditionalLibraryDirectories="&quot;c:\data\prog\pd\pd-cvs\bin&quot;;c:\data\prog\packs\pthreads;c:\data\prog\audio\stk\lib;c:\data\prog\audio\sndobj\lib"
- GenerateDebugInformation="TRUE"
- OptimizeReferences="1"
- ImportLibrary="./pd-msvc/flext-pd_d.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="PD Shared Release|Win32"
- OutputDirectory=".\pd-msvc\dd"
- IntermediateDirectory=".\pd-msvc\dd"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- GlobalOptimizations="FALSE"
- InlineFunctionExpansion="2"
- FavorSizeOrSpeed="0"
- EnableFiberSafeOptimizations="FALSE"
- AdditionalIncludeDirectories="&quot;c:\data\prog\pd\pd-cvs\src&quot;;c:\data\prog\packs\pthreads;c:\data\prog\audio\sndobj\include;c:\data\prog\audio\stk\include"
- PreprocessorDefinitions="WIN32;_LIB;FLEXT_SYS_PD;FLEXT_USE_SIMD;FLEXT_SHARED;FLEXT_EXPORTS;FLEXT_PDLOCK"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableEnhancedInstructionSet="1"
- RuntimeTypeInfo="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderThrough="flext.h"
- BrowseInformation="1"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="0"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib pthreadVC.lib stk.lib sndobj.lib"
- OutputFile=".\pd-msvc\flext-pd.dll"
- AdditionalLibraryDirectories="c:\data\prog\packs\pthreads;&quot;c:\data\prog\pd\pd-cvs\bin&quot;;c:\data\prog\audio\stk\lib;c:\data\prog\audio\sndobj\lib"
- GenerateDebugInformation="FALSE"
- OptimizeReferences="1"
- ImportLibrary="./pd-msvc/flext-pd.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Max Shared Debug|Win32"
- OutputDirectory=".\max-msvc\dd"
- IntermediateDirectory=".\max-msvc\dd"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="F:\prog\audio\MaxWinSDK\c74support\max-includes,F:\prog\audio\MaxWinSDK\c74support\msp-includes,f:\prog\packs\pthreads,f:\prog\audio\sndobj\include,f:\prog\audio\stk\include"
- PreprocessorDefinitions="WIN32;_DEBUG;_LIB;FLEXT_SYS_MAX;FLEXT_USE_SIMD;FLEXT_SHARED;FLEXT_EXPORTS"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- StructMemberAlignment="2"
- RuntimeTypeInfo="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderThrough="flext.h"
- BrowseInformation="1"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="maxapi.lib maxext.lib maxaudio.lib pthreadVC.lib stk_d.lib sndobj.lib"
- OutputFile=".\max-msvc\flext-max_d.dll"
- AdditionalLibraryDirectories="&quot;F:\prog\audio\MaxWinSDK\c74support\max-includes\win-includes\debug&quot;;&quot;F:\prog\audio\MaxWinSDK\c74support\msp-includes\win-includes\debug&quot;;f:\prog\packs\pthreads;F:\prog\audio\stk\lib;F:\prog\audio\sndobj\lib"
- GenerateDebugInformation="TRUE"
- OptimizeReferences="1"
- ImportLibrary="./max-msvc/flext-max_d.lib"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"
- Description="copy flext to maestra"
- CommandLine="copy F:\prog\max\flext\max-msvc\flext_d.max.dll f:\prog\maestra\dev\debug"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Max Shared Release|Win32"
- OutputDirectory=".\max-msvc\dd"
- IntermediateDirectory=".\max-msvc\dd"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- GlobalOptimizations="FALSE"
- InlineFunctionExpansion="2"
- FavorSizeOrSpeed="0"
- EnableFiberSafeOptimizations="FALSE"
- AdditionalIncludeDirectories="F:\prog\audio\MaxWinSDK\c74support\max-includes,F:\prog\audio\MaxWinSDK\c74support\msp-includes,f:\prog\packs\pthreads,f:\prog\audio\sndobj\include,f:\prog\audio\stk\include"
- PreprocessorDefinitions="WIN32;_LIB;FLEXT_SYS_MAX;FLEXT_THREADS;FLEXT_USE_SIMD;FLEXT_SHARED;FLEXT_EXPORTS"
- StringPooling="TRUE"
- ExceptionHandling="TRUE"
- RuntimeLibrary="2"
- StructMemberAlignment="2"
- EnableEnhancedInstructionSet="1"
- RuntimeTypeInfo="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderThrough="flext.h"
- BrowseInformation="1"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="maxapi.lib maxext.lib maxaudio.lib stk.lib sndobj.lib"
- OutputFile=".\max-msvc\flext-max.dll"
- AdditionalLibraryDirectories="&quot;F:\prog\audio\MaxWinSDK\c74support\max-includes\win-includes\debug&quot;;&quot;F:\prog\audio\MaxWinSDK\c74support\msp-includes\win-includes\debug&quot;;f:\prog\packs\pthreads;F:\prog\audio\stk\lib;F:\prog\audio\sndobj\lib"
- IgnoreAllDefaultLibraries="FALSE"
- GenerateDebugInformation="FALSE"
- OptimizeReferences="1"
- ImportLibrary="./max-msvc/flext-max.lib"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"
- Description="copy flext to maestra"
- CommandLine="copy F:\prog\max\flext\source\*.h f:\prog\maestra\dev\api\include
-copy F:\prog\max\flext\max-msvc\flext_l.lib f:\prog\maestra\dev\api\lib
-copy F:\prog\max\flext\max-msvc\flext.max.dll f:\prog\maestra\dev\release
-copy F:\prog\max\flext\max-msvc\flext.max.dll f:\prog\dll
-"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Max Release|Win32"
- OutputDirectory=".\max-msvc\s"
- IntermediateDirectory=".\max-msvc\s"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- GlobalOptimizations="FALSE"
- InlineFunctionExpansion="2"
- FavorSizeOrSpeed="0"
- EnableFiberSafeOptimizations="FALSE"
- AdditionalIncludeDirectories="&quot;C:\data\prog\audio\maxmspsdk_win\4.5 headers\c74support\max-includes&quot;;&quot;C:\data\prog\audio\maxmspsdk_win\4.5 headers\c74support\msp-includes&quot;;f:\prog\packs\pthreads;f:\prog\audio\sndobj\include;f:\prog\audio\stk\include"
- PreprocessorDefinitions="WIN32;_LIB;FLEXT_SYS_MAX;FLEXT_USE_SIMD;FLEXT_EXPORTS"
- StringPooling="TRUE"
- BasicRuntimeChecks="0"
- RuntimeLibrary="0"
- StructMemberAlignment="2"
- BufferSecurityCheck="FALSE"
- EnableEnhancedInstructionSet="1"
- RuntimeTypeInfo="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderThrough="flext.h"
- BrowseInformation="1"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="0"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLibrarianTool"
- OutputFile="max-msvc/flext-max_s.lib"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"
- Description="copy flext to maestra"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Max Debug|Win32"
- OutputDirectory=".\max-msvc\sd"
- IntermediateDirectory=".\max-msvc\sd"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- GlobalOptimizations="FALSE"
- InlineFunctionExpansion="0"
- FavorSizeOrSpeed="0"
- EnableFiberSafeOptimizations="FALSE"
- AdditionalIncludeDirectories="&quot;C:\data\prog\audio\maxmspsdk_win\4.5 headers\c74support\max-includes&quot;;&quot;C:\data\prog\audio\maxmspsdk_win\4.5 headers\c74support\msp-includes&quot;;f:\prog\packs\pthreads;f:\prog\audio\sndobj\include;f:\prog\audio\stk\include"
- PreprocessorDefinitions="WIN32;_DEBUG;_LIB;FLEXT_SYS_MAX;FLEXT_USE_SIMD;FLEXT_EXPORTS"
- StringPooling="TRUE"
- RuntimeLibrary="0"
- StructMemberAlignment="2"
- EnableEnhancedInstructionSet="1"
- RuntimeTypeInfo="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderThrough="flext.h"
- BrowseInformation="1"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLibrarianTool"
- OutputFile="max-msvc/flext-max_sd.lib"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Max Threaded Debug|Win32"
- OutputDirectory="max-msvc/td"
- IntermediateDirectory="max-msvc/td"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- GlobalOptimizations="FALSE"
- InlineFunctionExpansion="0"
- FavorSizeOrSpeed="0"
- EnableFiberSafeOptimizations="FALSE"
- AdditionalIncludeDirectories="&quot;C:\data\prog\audio\maxmspsdk\c74support\max-includes&quot;;&quot;C:\data\prog\audio\maxmspsdk\c74support\msp-includes&quot;;c:\data\prog\audio\sndobj\include;c:\data\prog\audio\stk\include"
- PreprocessorDefinitions="WIN32;_DEBUG;_LIB;FLEXT_SYS=1;FLEXT_THREADS;FLEXT_USE_SIMD;FLEXT_EXPORTS;_WIN32_WINNT=0x501"
- StringPooling="TRUE"
- RuntimeLibrary="1"
- EnableEnhancedInstructionSet="1"
- RuntimeTypeInfo="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderThrough="flext.h"
- BrowseInformation="1"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLibrarianTool"
- OutputFile="max-msvc/flext-max_td.lib"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Max Threaded Release|Win32"
- OutputDirectory="max-msvc/tr"
- IntermediateDirectory="max-msvc/tr"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- GlobalOptimizations="FALSE"
- InlineFunctionExpansion="2"
- FavorSizeOrSpeed="0"
- EnableFiberSafeOptimizations="FALSE"
- AdditionalIncludeDirectories="&quot;C:\data\prog\audio\maxmspsdk\c74support\max-includes&quot;;&quot;C:\data\prog\audio\maxmspsdk\c74support\msp-includes&quot;;c:\data\prog\audio\sndobj\include;c:\data\prog\audio\stk\include"
- PreprocessorDefinitions="WIN32;_LIB;FLEXT_SYS=1;FLEXT_USE_SIMD;FLEXT_EXPORTS;FLEXT_THREADS;_WIN32_WINNT=0x502"
- StringPooling="TRUE"
- RuntimeLibrary="0"
- EnableEnhancedInstructionSet="1"
- RuntimeTypeInfo="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderThrough="flext.h"
- BrowseInformation="1"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="0"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLibrarianTool"
- OutputFile="max-msvc/flext-max_t.lib"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"
- Description="copy flext to maestra"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="doc"
- Filter="">
- <File
- RelativePath=".\build.txt">
- </File>
- <File
- RelativePath="changes.txt">
- </File>
- <File
- RelativePath="source\fldoxygen.h">
- </File>
- <File
- RelativePath=".\notes.txt">
- </File>
- <File
- RelativePath="readme.txt">
- </File>
- </Filter>
- <Filter
- Name="Atom"
- Filter="">
- <File
- RelativePath="source\flatom.cpp">
- <FileConfiguration
- Name="Threads DLL Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Threads DLL Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\flatom_part.cpp">
- <FileConfiguration
- Name="Threads DLL Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Threads DLL Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\flatom_pr.cpp">
- <FileConfiguration
- Name="Threads DLL Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Threads DLL Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- </Filter>
- <Filter
- Name="Base"
- Filter="">
- <File
- RelativePath="source\flbase.cpp">
- <FileConfiguration
- Name="Threads DLL Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Threads DLL Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\flbase.h">
- </File>
- <File
- RelativePath="source\flclass.h">
- </File>
- <File
- RelativePath="source\flext.cpp">
- <FileConfiguration
- Name="Threads DLL Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Threads DLL Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\flext.h">
- </File>
- <File
- RelativePath="source\flinternal.h">
- </File>
- <File
- RelativePath="source\fllib.cpp">
- <FileConfiguration
- Name="Threads DLL Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Threads DLL Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\flprefix.h">
- </File>
- <File
- RelativePath="source\flstdc.h">
- </File>
- <File
- RelativePath="source\flthr.cpp">
- <FileConfiguration
- Name="Threads DLL Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Threads DLL Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- </Filter>
- <Filter
- Name="IO"
- Filter="">
- <File
- RelativePath="source\flattr.cpp">
- <FileConfiguration
- Name="Threads DLL Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Threads DLL Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath=".\source\flattr_ed.cpp">
- </File>
- <File
- RelativePath="source\flbind.cpp">
- <FileConfiguration
- Name="Threads DLL Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Threads DLL Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\flitem.cpp">
- <FileConfiguration
- Name="Threads DLL Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Threads DLL Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\flmeth.cpp">
- <FileConfiguration
- Name="Threads DLL Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Threads DLL Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\flmsg.cpp">
- <FileConfiguration
- Name="Threads DLL Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Threads DLL Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\flout.cpp">
- <FileConfiguration
- Name="Threads DLL Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Threads DLL Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\flproxy.cpp">
- <FileConfiguration
- Name="Threads DLL Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Threads DLL Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\flqueue.cpp">
- <FileConfiguration
- Name="Threads DLL Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Threads DLL Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\flxlet.cpp">
- <FileConfiguration
- Name="Threads DLL Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Threads DLL Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- </Filter>
- <Filter
- Name="Util"
- Filter="">
- <File
- RelativePath="source\flbuf.cpp">
- <FileConfiguration
- Name="Threads DLL Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Threads DLL Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath=".\source\flcontainers.h">
- </File>
- <File
- RelativePath=".\source\flmap.cpp">
- </File>
- <File
- RelativePath=".\source\flmap.h">
- </File>
- <File
- RelativePath="source\flmspbuffer.h">
- </File>
- <File
- RelativePath="source\flsimd.cpp">
- <FileConfiguration
- Name="Threads DLL Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Threads DLL Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\flsupport.cpp">
- <FileConfiguration
- Name="Threads DLL Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Threads DLL Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\flsupport.h">
- </File>
- <File
- RelativePath="source\fltimer.cpp">
- <FileConfiguration
- Name="Threads DLL Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Threads DLL Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\flutil.cpp">
- <FileConfiguration
- Name="Threads DLL Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Threads DLL Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- </Filter>
- <Filter
- Name="Dsp"
- Filter="">
- <File
- RelativePath="source\fldsp.cpp">
- <FileConfiguration
- Name="Threads DLL Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Threads DLL Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\fldsp.h">
- </File>
- </Filter>
- <Filter
- Name="SndObj"
- Filter="">
- <File
- RelativePath="source\flsndobj.cpp">
- <FileConfiguration
- Name="Threads DLL Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Threads DLL Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\flsndobj.h">
- <FileConfiguration
- Name="PD Shared Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCustomBuildTool"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCustomBuildTool"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCustomBuildTool"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCustomBuildTool"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCustomBuildTool"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCustomBuildTool"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCustomBuildTool"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCustomBuildTool"/>
- </FileConfiguration>
- </File>
- </Filter>
- <Filter
- Name="STK"
- Filter="">
- <File
- RelativePath="source\flstk.cpp">
- <FileConfiguration
- Name="Threads DLL Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Threads DLL Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\flstk.h">
- <FileConfiguration
- Name="PD Shared Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCustomBuildTool"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCustomBuildTool"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCustomBuildTool"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCustomBuildTool"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCustomBuildTool"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCustomBuildTool"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Debug|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCustomBuildTool"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Release|Win32"
- ExcludedFromBuild="TRUE">
- <Tool
- Name="VCCustomBuildTool"/>
- </FileConfiguration>
- </File>
- </Filter>
- <Filter
- Name="Defs"
- Filter="">
- <File
- RelativePath="source\fldefs.h">
- </File>
- <File
- RelativePath="source\fldefs_attradd.h">
- </File>
- <File
- RelativePath="source\fldefs_attrcb.h">
- </File>
- <File
- RelativePath="source\fldefs_attrvar.h">
- </File>
- <File
- RelativePath="source\fldefs_hdr.h">
- </File>
- <File
- RelativePath="source\fldefs_methadd.h">
- </File>
- <File
- RelativePath="source\fldefs_methbind.h">
- </File>
- <File
- RelativePath="source\fldefs_methcall.h">
- </File>
- <File
- RelativePath="source\fldefs_methcb.h">
- </File>
- <File
- RelativePath="source\fldefs_meththr.h">
- </File>
- <File
- RelativePath="source\fldefs_setup.h">
- </File>
- </Filter>
- <Filter
- Name="build"
- Filter="">
- <File
- RelativePath=".\build-max-msvc.bat">
- </File>
- <File
- RelativePath=".\build-pd-msvc.bat">
- </File>
- <File
- RelativePath=".\config-max-msvc.txt">
- </File>
- <File
- RelativePath=".\config-pd-msvc.txt">
- </File>
- </Filter>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/externals/grill/flext/flext.xcode/project.pbxproj b/externals/grill/flext/flext.xcode/project.pbxproj
deleted file mode 100755
index d8b23073..00000000
--- a/externals/grill/flext/flext.xcode/project.pbxproj
+++ /dev/null
@@ -1,3066 +0,0 @@
-// !$*UTF8*$!
-{
- archiveVersion = 1;
- classes = {
- };
- objectVersion = 39;
- objects = {
- 034768DDFF38A45A11DB9C8B = {
- children = (
- E99747CD0770545100206F68,
- E997483F0770570800206F68,
- E9974886077058C100206F68,
- E99749BE07705CC400206F68,
- E9974BC407705F1400206F68,
- E9974BFA07705F4F00206F68,
- );
- isa = PBXGroup;
- name = Products;
- refType = 4;
- sourceTree = "<group>";
- };
-//030
-//031
-//032
-//033
-//034
-//080
-//081
-//082
-//083
-//084
- 0867D690FE84028FC02AAC07 = {
- buildSettings = {
- };
- buildStyles = (
- F5128F2503864E5501A80AC9,
- F5128F2603864E5501A80AC9,
- );
- hasScannedForEncodings = 1;
- isa = PBXProject;
- mainGroup = 0867D691FE84028FC02AAC07;
- productRefGroup = 034768DDFF38A45A11DB9C8B;
- projectDirPath = "";
- targets = (
- E99747CC0770545100206F68,
- E997480D0770570800206F68,
- E9974885077058C100206F68,
- E997498C07705CC400206F68,
- E9974B9207705F1400206F68,
- E9974BC507705F4F00206F68,
- );
- };
- 0867D691FE84028FC02AAC07 = {
- children = (
- F55CEDB50383E50D01A80AC9,
- 08FB77ACFE841707C02AAC07,
- 089C1665FE841158C02AAC07,
- 0867D69AFE84028FC02AAC07,
- 034768DDFF38A45A11DB9C8B,
- );
- isa = PBXGroup;
- name = "flext-PB";
- refType = 4;
- sourceTree = "<group>";
- };
- 0867D69AFE84028FC02AAC07 = {
- children = (
- E9974E140770780D00206F68,
- E9974E150770780D00206F68,
- E99748D007705BAF00206F68,
- E9974802077054CD00206F68,
- );
- isa = PBXGroup;
- name = "External Frameworks and Libraries";
- refType = 4;
- sourceTree = "<group>";
- };
- 089C1665FE841158C02AAC07 = {
- children = (
- 089C1666FE841158C02AAC07,
- );
- isa = PBXGroup;
- name = Resources;
- refType = 4;
- sourceTree = "<group>";
- };
- 089C1666FE841158C02AAC07 = {
- children = (
- 089C1667FE841158C02AAC07,
- );
- isa = PBXVariantGroup;
- name = InfoPlist.strings;
- refType = 4;
- sourceTree = "<group>";
- };
- 089C1667FE841158C02AAC07 = {
- fileEncoding = 10;
- isa = PBXFileReference;
- lastKnownFileType = file;
- name = English;
- path = English.lproj/InfoPlist.strings;
- refType = 4;
- sourceTree = "<group>";
- };
- 08FB77ACFE841707C02AAC07 = {
- children = (
- F55CED7B0383E50201A80AC9,
- F55CED7C0383E50201A80AC9,
- F55CED7D0383E50201A80AC9,
- F55CED7E0383E50201A80AC9,
- F55CED800383E50201A80AC9,
- F55CED880383E50201A80AC9,
- F55CED8A0383E50201A80AC9,
- F55CED8D0383E50201A80AC9,
- F55CED8F0383E50201A80AC9,
- F55CED900383E50201A80AC9,
- F55CED930383E50201A80AC9,
- F55CED950383E50201A80AC9,
- F55CED960383E50201A80AC9,
- F55CED970383E50201A80AC9,
- F504A66B03CE39F501A80AC9,
- F504A66C03CE39F501A80AC9,
- F504A66D03CE39F501A80AC9,
- F504A66E03CE39F501A80AC9,
- F504A66F03CE39F501A80AC9,
- F504A67103CE39F501A80AC9,
- F504A67203CE39F501A80AC9,
- F504A67303CE39F501A80AC9,
- F5B1FAC8041191190179CFEF,
- F598D263044CC4A001A80AC9,
- F598D264044CC4A001A80AC9,
- E9BDCC4104F4D7C1008929A0,
- );
- isa = PBXGroup;
- name = Source;
- path = "";
- refType = 2;
- sourceTree = SOURCE_ROOT;
- };
-//080
-//081
-//082
-//083
-//084
-//E90
-//E91
-//E92
-//E93
-//E94
- E99747C90770545100206F68 = {
- buildActionMask = 2147483647;
- files = (
- E99747FA0770548F00206F68,
- E99747E80770548F00206F68,
- E99747E90770548F00206F68,
- E99747F50770548F00206F68,
- E99747F60770548F00206F68,
- E99747F70770548F00206F68,
- E99747F80770548F00206F68,
- E99747F90770548F00206F68,
- E99747FC0770548F00206F68,
- E99747FE0770548F00206F68,
- E99747EA0770548F00206F68,
- E99747EB0770548F00206F68,
- E99747EC0770548F00206F68,
- E99747ED0770548F00206F68,
- E99747EE0770548F00206F68,
- E99747EF0770548F00206F68,
- E99747F00770548F00206F68,
- E99747F10770548F00206F68,
- E99747F20770548F00206F68,
- E99747F30770548F00206F68,
- E99747F40770548F00206F68,
- );
- isa = PBXHeadersBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- E99747CA0770545100206F68 = {
- buildActionMask = 2147483647;
- files = (
- E99747CE0770548700206F68,
- E99747CF0770548700206F68,
- E99747D00770548700206F68,
- E99747D10770548700206F68,
- E99747D20770548700206F68,
- E99747D30770548700206F68,
- E99747D40770548700206F68,
- E99747D50770548700206F68,
- E99747D60770548700206F68,
- E99747D70770548700206F68,
- E99747D80770548700206F68,
- E99747D90770548700206F68,
- E99747DA0770548700206F68,
- E99747DB0770548700206F68,
- E99747DC0770548700206F68,
- E99747DD0770548700206F68,
- E99747DE0770548700206F68,
- E99747DF0770548700206F68,
- E99747E00770548700206F68,
- E99747E30770548700206F68,
- E99747E40770548700206F68,
- E99747E50770548700206F68,
- E99747E60770548700206F68,
- E99747E70770548700206F68,
- );
- isa = PBXSourcesBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- E99747CB0770545100206F68 = {
- buildActionMask = 2147483647;
- files = (
- E9974803077054CD00206F68,
- );
- isa = PBXFrameworksBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- E99747CC0770545100206F68 = {
- buildPhases = (
- E99747C90770545100206F68,
- E99747CA0770545100206F68,
- E99747CB0770545100206F68,
- );
- buildRules = (
- );
- buildSettings = {
- GCC_PREPROCESSOR_DEFINITIONS = "FLEXT_SYS=2";
- HEADER_SEARCH_PATHS = "$(PD)/src";
- INSTALL_PATH = /usr/local/lib;
- LIBRARY_STYLE = STATIC;
- OTHER_CFLAGS = "";
- OTHER_REZFLAGS = "";
- PRODUCT_NAME = flext_s;
- SECTORDER_FLAGS = "";
- WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas";
- };
- dependencies = (
- );
- isa = PBXNativeTarget;
- name = "PD static single";
- productName = "PD static single";
- productReference = E99747CD0770545100206F68;
- productType = "com.apple.product-type.library.static";
- };
- E99747CD0770545100206F68 = {
- explicitFileType = archive.ar;
- includeInIndex = 0;
- isa = PBXFileReference;
- path = libflext_s.a;
- refType = 3;
- sourceTree = BUILT_PRODUCTS_DIR;
- };
- E99747CE0770548700206F68 = {
- fileRef = F55CED7C0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99747CF0770548700206F68 = {
- fileRef = F504A66B03CE39F501A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99747D00770548700206F68 = {
- fileRef = F504A66C03CE39F501A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99747D10770548700206F68 = {
- fileRef = F55CED7B0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99747D20770548700206F68 = {
- fileRef = F55CED7D0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99747D30770548700206F68 = {
- fileRef = E9BDCC4104F4D7C1008929A0;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99747D40770548700206F68 = {
- fileRef = F55CED7E0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99747D50770548700206F68 = {
- fileRef = F598D263044CC4A001A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99747D60770548700206F68 = {
- fileRef = F55CED800383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99747D70770548700206F68 = {
- fileRef = F55CED880383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99747D80770548700206F68 = {
- fileRef = F55CED8A0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99747D90770548700206F68 = {
- fileRef = F504A66D03CE39F501A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99747DA0770548700206F68 = {
- fileRef = F55CED8D0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99747DB0770548700206F68 = {
- fileRef = F504A66E03CE39F501A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99747DC0770548700206F68 = {
- fileRef = F504A66F03CE39F501A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99747DD0770548700206F68 = {
- fileRef = F55CED8F0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99747DE0770548700206F68 = {
- fileRef = F504A67103CE39F501A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99747DF0770548700206F68 = {
- fileRef = F504A67203CE39F501A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99747E00770548700206F68 = {
- fileRef = F598D264044CC4A001A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99747E30770548700206F68 = {
- fileRef = F55CED930383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99747E40770548700206F68 = {
- fileRef = F55CED950383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99747E50770548700206F68 = {
- fileRef = F5B1FAC8041191190179CFEF;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99747E60770548700206F68 = {
- fileRef = F55CED960383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99747E70770548700206F68 = {
- fileRef = F55CED970383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99747E80770548F00206F68 = {
- fileRef = F55CED7F0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99747E90770548F00206F68 = {
- fileRef = F55CED810383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99747EA0770548F00206F68 = {
- fileRef = F55CED860383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99747EB0770548F00206F68 = {
- fileRef = F5CBC5B804757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99747EC0770548F00206F68 = {
- fileRef = F5CBC5B904757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99747ED0770548F00206F68 = {
- fileRef = F5CBC5BA04757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99747EE0770548F00206F68 = {
- fileRef = F5CBC5BB04757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99747EF0770548F00206F68 = {
- fileRef = F5CBC5BC04757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99747F00770548F00206F68 = {
- fileRef = F5CBC5BD04757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99747F10770548F00206F68 = {
- fileRef = F5CBC5BE04757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99747F20770548F00206F68 = {
- fileRef = F5CBC5BF04757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99747F30770548F00206F68 = {
- fileRef = F5CBC5C004757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99747F40770548F00206F68 = {
- fileRef = F5CBC5C104757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99747F50770548F00206F68 = {
- fileRef = F55CED870383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99747F60770548F00206F68 = {
- fileRef = F55CED890383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99747F70770548F00206F68 = {
- fileRef = F55CED8B0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99747F80770548F00206F68 = {
- fileRef = F55CED8C0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99747F90770548F00206F68 = {
- fileRef = F55CED8E0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99747FA0770548F00206F68 = {
- fileRef = F504A67003CE39F501A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99747FC0770548F00206F68 = {
- fileRef = F55CED920383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99747FE0770548F00206F68 = {
- fileRef = F55CED940383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974802077054CD00206F68 = {
- isa = PBXFileReference;
- lastKnownFileType = wrapper.framework;
- name = vecLib.framework;
- path = /System/Library/Frameworks/vecLib.framework;
- refType = 0;
- sourceTree = "<absolute>";
- };
- E9974803077054CD00206F68 = {
- fileRef = E9974802077054CD00206F68;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E997480D0770570800206F68 = {
- buildPhases = (
- E997480E0770570800206F68,
- E99748240770570800206F68,
- E997483D0770570800206F68,
- );
- buildRules = (
- );
- buildSettings = {
- GCC_PREPROCESSOR_DEFINITIONS = "FLEXT_SYS=2 FLEXT_THREADS";
- HEADER_SEARCH_PATHS = "$(PD)/src";
- INSTALL_PATH = /usr/local/lib;
- LIBRARY_STYLE = STATIC;
- OTHER_CFLAGS = "";
- OTHER_REZFLAGS = "";
- PRODUCT_NAME = flext_t;
- SECTORDER_FLAGS = "";
- WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas";
- };
- dependencies = (
- );
- isa = PBXNativeTarget;
- name = "PD static multi";
- productName = "PD static single";
- productReference = E997483F0770570800206F68;
- productType = "com.apple.product-type.library.static";
- };
- E997480E0770570800206F68 = {
- buildActionMask = 2147483647;
- files = (
- E997480F0770570800206F68,
- E99748100770570800206F68,
- E99748110770570800206F68,
- E99748120770570800206F68,
- E99748130770570800206F68,
- E99748140770570800206F68,
- E99748150770570800206F68,
- E99748160770570800206F68,
- E99748170770570800206F68,
- E99748180770570800206F68,
- E99748190770570800206F68,
- E997481A0770570800206F68,
- E997481B0770570800206F68,
- E997481C0770570800206F68,
- E997481D0770570800206F68,
- E997481E0770570800206F68,
- E997481F0770570800206F68,
- E99748200770570800206F68,
- E99748210770570800206F68,
- E99748220770570800206F68,
- E99748230770570800206F68,
- );
- isa = PBXHeadersBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- E997480F0770570800206F68 = {
- fileRef = F504A67003CE39F501A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748100770570800206F68 = {
- fileRef = F55CED7F0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748110770570800206F68 = {
- fileRef = F55CED810383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748120770570800206F68 = {
- fileRef = F55CED870383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748130770570800206F68 = {
- fileRef = F55CED890383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748140770570800206F68 = {
- fileRef = F55CED8B0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748150770570800206F68 = {
- fileRef = F55CED8C0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748160770570800206F68 = {
- fileRef = F55CED8E0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748170770570800206F68 = {
- fileRef = F55CED920383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748180770570800206F68 = {
- fileRef = F55CED940383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748190770570800206F68 = {
- fileRef = F55CED860383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E997481A0770570800206F68 = {
- fileRef = F5CBC5B804757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E997481B0770570800206F68 = {
- fileRef = F5CBC5B904757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E997481C0770570800206F68 = {
- fileRef = F5CBC5BA04757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E997481D0770570800206F68 = {
- fileRef = F5CBC5BB04757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E997481E0770570800206F68 = {
- fileRef = F5CBC5BC04757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E997481F0770570800206F68 = {
- fileRef = F5CBC5BD04757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748200770570800206F68 = {
- fileRef = F5CBC5BE04757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748210770570800206F68 = {
- fileRef = F5CBC5BF04757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748220770570800206F68 = {
- fileRef = F5CBC5C004757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748230770570800206F68 = {
- fileRef = F5CBC5C104757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748240770570800206F68 = {
- buildActionMask = 2147483647;
- files = (
- E99748250770570800206F68,
- E99748260770570800206F68,
- E99748270770570800206F68,
- E99748280770570800206F68,
- E99748290770570800206F68,
- E997482A0770570800206F68,
- E997482B0770570800206F68,
- E997482C0770570800206F68,
- E997482D0770570800206F68,
- E997482E0770570800206F68,
- E997482F0770570800206F68,
- E99748300770570800206F68,
- E99748310770570800206F68,
- E99748320770570800206F68,
- E99748330770570800206F68,
- E99748340770570800206F68,
- E99748350770570800206F68,
- E99748360770570800206F68,
- E99748370770570800206F68,
- E99748380770570800206F68,
- E99748390770570800206F68,
- E997483A0770570800206F68,
- E997483B0770570800206F68,
- E997483C0770570800206F68,
- );
- isa = PBXSourcesBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- E99748250770570800206F68 = {
- fileRef = F55CED7C0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748260770570800206F68 = {
- fileRef = F504A66B03CE39F501A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748270770570800206F68 = {
- fileRef = F504A66C03CE39F501A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748280770570800206F68 = {
- fileRef = F55CED7B0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748290770570800206F68 = {
- fileRef = F55CED7D0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E997482A0770570800206F68 = {
- fileRef = E9BDCC4104F4D7C1008929A0;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E997482B0770570800206F68 = {
- fileRef = F55CED7E0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E997482C0770570800206F68 = {
- fileRef = F598D263044CC4A001A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E997482D0770570800206F68 = {
- fileRef = F55CED800383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E997482E0770570800206F68 = {
- fileRef = F55CED880383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E997482F0770570800206F68 = {
- fileRef = F55CED8A0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748300770570800206F68 = {
- fileRef = F504A66D03CE39F501A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748310770570800206F68 = {
- fileRef = F55CED8D0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748320770570800206F68 = {
- fileRef = F504A66E03CE39F501A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748330770570800206F68 = {
- fileRef = F504A66F03CE39F501A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748340770570800206F68 = {
- fileRef = F55CED8F0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748350770570800206F68 = {
- fileRef = F504A67103CE39F501A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748360770570800206F68 = {
- fileRef = F504A67203CE39F501A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748370770570800206F68 = {
- fileRef = F598D264044CC4A001A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748380770570800206F68 = {
- fileRef = F55CED930383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748390770570800206F68 = {
- fileRef = F55CED950383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E997483A0770570800206F68 = {
- fileRef = F5B1FAC8041191190179CFEF;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E997483B0770570800206F68 = {
- fileRef = F55CED960383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E997483C0770570800206F68 = {
- fileRef = F55CED970383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E997483D0770570800206F68 = {
- buildActionMask = 2147483647;
- files = (
- E997483E0770570800206F68,
- );
- isa = PBXFrameworksBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- E997483E0770570800206F68 = {
- fileRef = E9974802077054CD00206F68;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E997483F0770570800206F68 = {
- explicitFileType = archive.ar;
- includeInIndex = 0;
- isa = PBXFileReference;
- path = libflext_t.a;
- refType = 3;
- sourceTree = BUILT_PRODUCTS_DIR;
- };
- E9974882077058C100206F68 = {
- buildActionMask = 2147483647;
- files = (
- E99748B00770595E00206F68,
- E99748B10770595E00206F68,
- E99748B20770595E00206F68,
- E99748B30770595E00206F68,
- E99748B40770595E00206F68,
- E99748B50770595E00206F68,
- E99748B60770595E00206F68,
- E99748B70770595E00206F68,
- E99748B80770595E00206F68,
- E99748B90770595E00206F68,
- E99748BA0770595E00206F68,
- E99748A40770595500206F68,
- E99748A50770595500206F68,
- E99748A60770595500206F68,
- E99748A70770595500206F68,
- E99748A80770595500206F68,
- E99748A90770595600206F68,
- E99748AA0770595600206F68,
- E99748AB0770595600206F68,
- E99748AC0770595600206F68,
- E99748AD0770595600206F68,
- E99748AE0770595600206F68,
- E99748AF0770595600206F68,
- );
- isa = PBXHeadersBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- E9974883077058C100206F68 = {
- buildActionMask = 2147483647;
- files = (
- E997488C0770593C00206F68,
- E997488D0770593C00206F68,
- E997488E0770593C00206F68,
- E997488F0770593C00206F68,
- E99748900770593C00206F68,
- E99748910770593C00206F68,
- E99748920770593C00206F68,
- E99748930770593C00206F68,
- E99748940770593C00206F68,
- E99748950770593C00206F68,
- E99748960770593C00206F68,
- E99748970770593C00206F68,
- E99748980770593C00206F68,
- E99748990770593C00206F68,
- E997489A0770593C00206F68,
- E997489B0770593C00206F68,
- E997489C0770593C00206F68,
- E997489D0770593C00206F68,
- E997489E0770593C00206F68,
- E997489F0770593C00206F68,
- E99748A00770593C00206F68,
- E99748A10770593C00206F68,
- E99748A20770593C00206F68,
- E99748A30770593C00206F68,
- );
- isa = PBXSourcesBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- E9974884077058C100206F68 = {
- buildActionMask = 2147483647;
- files = (
- E99749BF07705D5200206F68,
- E99748D107705BAF00206F68,
- );
- isa = PBXFrameworksBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- E9974885077058C100206F68 = {
- buildPhases = (
- E9974882077058C100206F68,
- E9974883077058C100206F68,
- E9974884077058C100206F68,
- );
- buildRules = (
- );
- buildSettings = {
- DYLIB_COMPATIBILITY_VERSION = 1;
- DYLIB_CURRENT_VERSION = 1;
- GCC_PREPROCESSOR_DEFINITIONS = "FLEXT_SYS=2 FLEXT_SHARED";
- HEADER_SEARCH_PATHS = "$(PD)/src";
- INSTALL_PATH = /usr/local/lib;
- LIBRARY_STYLE = BUNDLE;
- OTHER_CFLAGS = "";
- OTHER_LDFLAGS = "-bundle_loader $(PD)/bin/pd";
- OTHER_REZFLAGS = "";
- PREBINDING = YES;
- PRODUCT_NAME = flext;
- SECTORDER_FLAGS = "";
- WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas";
- };
- dependencies = (
- );
- isa = PBXNativeTarget;
- name = "PD shared";
- productName = "PD shared";
- productReference = E9974886077058C100206F68;
- productType = "com.apple.product-type.library.dynamic";
- };
- E9974886077058C100206F68 = {
- explicitFileType = "compiled.mach-o.dylib";
- includeInIndex = 0;
- isa = PBXFileReference;
- path = flext.dylib;
- refType = 3;
- sourceTree = BUILT_PRODUCTS_DIR;
- };
- E997488C0770593C00206F68 = {
- fileRef = F55CED7C0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E997488D0770593C00206F68 = {
- fileRef = F504A66B03CE39F501A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E997488E0770593C00206F68 = {
- fileRef = F504A66C03CE39F501A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E997488F0770593C00206F68 = {
- fileRef = F55CED7B0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748900770593C00206F68 = {
- fileRef = F55CED7D0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748910770593C00206F68 = {
- fileRef = E9BDCC4104F4D7C1008929A0;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748920770593C00206F68 = {
- fileRef = F55CED7E0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748930770593C00206F68 = {
- fileRef = F598D263044CC4A001A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748940770593C00206F68 = {
- fileRef = F55CED800383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748950770593C00206F68 = {
- fileRef = F55CED880383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748960770593C00206F68 = {
- fileRef = F55CED8A0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748970770593C00206F68 = {
- fileRef = F504A66D03CE39F501A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748980770593C00206F68 = {
- fileRef = F55CED8D0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748990770593C00206F68 = {
- fileRef = F504A66E03CE39F501A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E997489A0770593C00206F68 = {
- fileRef = F504A66F03CE39F501A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E997489B0770593C00206F68 = {
- fileRef = F55CED8F0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E997489C0770593C00206F68 = {
- fileRef = F504A67103CE39F501A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E997489D0770593C00206F68 = {
- fileRef = F504A67203CE39F501A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E997489E0770593C00206F68 = {
- fileRef = F598D264044CC4A001A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E997489F0770593C00206F68 = {
- fileRef = F55CED930383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748A00770593C00206F68 = {
- fileRef = F55CED950383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748A10770593C00206F68 = {
- fileRef = F5B1FAC8041191190179CFEF;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748A20770593C00206F68 = {
- fileRef = F55CED960383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748A30770593C00206F68 = {
- fileRef = F55CED970383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748A40770595500206F68 = {
- fileRef = F504A67003CE39F501A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748A50770595500206F68 = {
- fileRef = F55CED7F0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748A60770595500206F68 = {
- fileRef = F55CED810383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748A70770595500206F68 = {
- fileRef = F55CED870383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748A80770595500206F68 = {
- fileRef = F55CED890383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748A90770595600206F68 = {
- fileRef = F55CED8B0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748AA0770595600206F68 = {
- fileRef = F55CED8C0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748AB0770595600206F68 = {
- fileRef = F55CED8E0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748AC0770595600206F68 = {
- fileRef = F55CED910383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748AD0770595600206F68 = {
- fileRef = F55CED920383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748AE0770595600206F68 = {
- fileRef = F55CED940383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748AF0770595600206F68 = {
- fileRef = F504A67403CE39F501A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748B00770595E00206F68 = {
- fileRef = F55CED860383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748B10770595E00206F68 = {
- fileRef = F5CBC5B804757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748B20770595E00206F68 = {
- fileRef = F5CBC5B904757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748B30770595E00206F68 = {
- fileRef = F5CBC5BA04757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748B40770595E00206F68 = {
- fileRef = F5CBC5BB04757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748B50770595E00206F68 = {
- fileRef = F5CBC5BC04757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748B60770595E00206F68 = {
- fileRef = F5CBC5BD04757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748B70770595E00206F68 = {
- fileRef = F5CBC5BE04757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748B80770595E00206F68 = {
- fileRef = F5CBC5BF04757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748B90770595E00206F68 = {
- fileRef = F5CBC5C004757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748BA0770595E00206F68 = {
- fileRef = F5CBC5C104757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99748D007705BAF00206F68 = {
- isa = PBXFileReference;
- lastKnownFileType = wrapper.framework;
- name = ApplicationServices.framework;
- path = /System/Library/Frameworks/ApplicationServices.framework;
- refType = 0;
- sourceTree = "<absolute>";
- };
- E99748D107705BAF00206F68 = {
- fileRef = E99748D007705BAF00206F68;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E997498C07705CC400206F68 = {
- buildPhases = (
- E997498D07705CC400206F68,
- E99749A307705CC400206F68,
- E99749BC07705CC400206F68,
- );
- buildRules = (
- );
- buildSettings = {
- GCC_PREPROCESSOR_DEFINITIONS = "FLEXT_SYS=1";
- HEADER_SEARCH_PATHS = "$(Max SDK)/max-includes $(Max SDK)/msp-includes";
- INSTALL_PATH = /usr/local/lib;
- LIBRARY_STYLE = STATIC;
- OTHER_CFLAGS = "";
- OTHER_REZFLAGS = "";
- PRODUCT_NAME = "flext-max_s";
- SECTORDER_FLAGS = "";
- WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas";
- };
- dependencies = (
- );
- isa = PBXNativeTarget;
- name = "Max static single";
- productName = "PD static single";
- productReference = E99749BE07705CC400206F68;
- productType = "com.apple.product-type.library.static";
- };
- E997498D07705CC400206F68 = {
- buildActionMask = 2147483647;
- files = (
- E997498E07705CC400206F68,
- E997498F07705CC400206F68,
- E997499007705CC400206F68,
- E997499107705CC400206F68,
- E997499207705CC400206F68,
- E997499307705CC400206F68,
- E997499407705CC400206F68,
- E997499507705CC400206F68,
- E997499607705CC400206F68,
- E997499707705CC400206F68,
- E997499807705CC400206F68,
- E997499907705CC400206F68,
- E997499A07705CC400206F68,
- E997499B07705CC400206F68,
- E997499C07705CC400206F68,
- E997499D07705CC400206F68,
- E997499E07705CC400206F68,
- E997499F07705CC400206F68,
- E99749A007705CC400206F68,
- E99749A107705CC400206F68,
- E99749A207705CC400206F68,
- );
- isa = PBXHeadersBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- E997498E07705CC400206F68 = {
- fileRef = F504A67003CE39F501A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E997498F07705CC400206F68 = {
- fileRef = F55CED7F0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E997499007705CC400206F68 = {
- fileRef = F55CED810383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E997499107705CC400206F68 = {
- fileRef = F55CED870383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E997499207705CC400206F68 = {
- fileRef = F55CED890383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E997499307705CC400206F68 = {
- fileRef = F55CED8B0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E997499407705CC400206F68 = {
- fileRef = F55CED8C0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E997499507705CC400206F68 = {
- fileRef = F55CED8E0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E997499607705CC400206F68 = {
- fileRef = F55CED920383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E997499707705CC400206F68 = {
- fileRef = F55CED940383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E997499807705CC400206F68 = {
- fileRef = F55CED860383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E997499907705CC400206F68 = {
- fileRef = F5CBC5B804757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E997499A07705CC400206F68 = {
- fileRef = F5CBC5B904757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E997499B07705CC400206F68 = {
- fileRef = F5CBC5BA04757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E997499C07705CC400206F68 = {
- fileRef = F5CBC5BB04757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E997499D07705CC400206F68 = {
- fileRef = F5CBC5BC04757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E997499E07705CC400206F68 = {
- fileRef = F5CBC5BD04757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E997499F07705CC400206F68 = {
- fileRef = F5CBC5BE04757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99749A007705CC400206F68 = {
- fileRef = F5CBC5BF04757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99749A107705CC400206F68 = {
- fileRef = F5CBC5C004757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99749A207705CC400206F68 = {
- fileRef = F5CBC5C104757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99749A307705CC400206F68 = {
- buildActionMask = 2147483647;
- files = (
- E99749A407705CC400206F68,
- E99749A507705CC400206F68,
- E99749A607705CC400206F68,
- E99749A707705CC400206F68,
- E99749A807705CC400206F68,
- E99749A907705CC400206F68,
- E99749AA07705CC400206F68,
- E99749AB07705CC400206F68,
- E99749AC07705CC400206F68,
- E99749AD07705CC400206F68,
- E99749AE07705CC400206F68,
- E99749AF07705CC400206F68,
- E99749B007705CC400206F68,
- E99749B107705CC400206F68,
- E99749B207705CC400206F68,
- E99749B307705CC400206F68,
- E99749B407705CC400206F68,
- E99749B507705CC400206F68,
- E99749B607705CC400206F68,
- E99749B707705CC400206F68,
- E99749B807705CC400206F68,
- E99749B907705CC400206F68,
- E99749BA07705CC400206F68,
- E99749BB07705CC400206F68,
- );
- isa = PBXSourcesBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- E99749A407705CC400206F68 = {
- fileRef = F55CED7C0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99749A507705CC400206F68 = {
- fileRef = F504A66B03CE39F501A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99749A607705CC400206F68 = {
- fileRef = F504A66C03CE39F501A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99749A707705CC400206F68 = {
- fileRef = F55CED7B0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99749A807705CC400206F68 = {
- fileRef = F55CED7D0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99749A907705CC400206F68 = {
- fileRef = E9BDCC4104F4D7C1008929A0;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99749AA07705CC400206F68 = {
- fileRef = F55CED7E0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99749AB07705CC400206F68 = {
- fileRef = F598D263044CC4A001A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99749AC07705CC400206F68 = {
- fileRef = F55CED800383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99749AD07705CC400206F68 = {
- fileRef = F55CED880383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99749AE07705CC400206F68 = {
- fileRef = F55CED8A0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99749AF07705CC400206F68 = {
- fileRef = F504A66D03CE39F501A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99749B007705CC400206F68 = {
- fileRef = F55CED8D0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99749B107705CC400206F68 = {
- fileRef = F504A66E03CE39F501A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99749B207705CC400206F68 = {
- fileRef = F504A66F03CE39F501A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99749B307705CC400206F68 = {
- fileRef = F55CED8F0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99749B407705CC400206F68 = {
- fileRef = F504A67103CE39F501A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99749B507705CC400206F68 = {
- fileRef = F504A67203CE39F501A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99749B607705CC400206F68 = {
- fileRef = F598D264044CC4A001A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99749B707705CC400206F68 = {
- fileRef = F55CED930383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99749B807705CC400206F68 = {
- fileRef = F55CED950383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99749B907705CC400206F68 = {
- fileRef = F5B1FAC8041191190179CFEF;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99749BA07705CC400206F68 = {
- fileRef = F55CED960383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99749BB07705CC400206F68 = {
- fileRef = F55CED970383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99749BC07705CC400206F68 = {
- buildActionMask = 2147483647;
- files = (
- E99749BD07705CC400206F68,
- E9974E160770780D00206F68,
- E9974E170770780D00206F68,
- );
- isa = PBXFrameworksBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- E99749BD07705CC400206F68 = {
- fileRef = E9974802077054CD00206F68;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E99749BE07705CC400206F68 = {
- explicitFileType = archive.ar;
- includeInIndex = 0;
- isa = PBXFileReference;
- path = "libflext-max_s.a";
- refType = 3;
- sourceTree = BUILT_PRODUCTS_DIR;
- };
- E99749BF07705D5200206F68 = {
- fileRef = E9974802077054CD00206F68;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974B9207705F1400206F68 = {
- buildPhases = (
- E9974B9307705F1400206F68,
- E9974BA907705F1400206F68,
- E9974BC207705F1400206F68,
- );
- buildRules = (
- );
- buildSettings = {
- GCC_PREPROCESSOR_DEFINITIONS = "FLEXT_SYS=1 FLEXT_THREADS";
- HEADER_SEARCH_PATHS = "$(Max SDK)/max-includes $(Max SDK)/msp-includes";
- INSTALL_PATH = /usr/local/lib;
- LIBRARY_STYLE = STATIC;
- OTHER_CFLAGS = "";
- OTHER_REZFLAGS = "";
- PRODUCT_NAME = "flext-max_t";
- SECTORDER_FLAGS = "";
- WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas";
- };
- dependencies = (
- );
- isa = PBXNativeTarget;
- name = "Max static multi";
- productName = "PD static single";
- productReference = E9974BC407705F1400206F68;
- productType = "com.apple.product-type.library.static";
- };
- E9974B9307705F1400206F68 = {
- buildActionMask = 2147483647;
- files = (
- E9974B9407705F1400206F68,
- E9974B9507705F1400206F68,
- E9974B9607705F1400206F68,
- E9974B9707705F1400206F68,
- E9974B9807705F1400206F68,
- E9974B9907705F1400206F68,
- E9974B9A07705F1400206F68,
- E9974B9B07705F1400206F68,
- E9974B9C07705F1400206F68,
- E9974B9D07705F1400206F68,
- E9974B9E07705F1400206F68,
- E9974B9F07705F1400206F68,
- E9974BA007705F1400206F68,
- E9974BA107705F1400206F68,
- E9974BA207705F1400206F68,
- E9974BA307705F1400206F68,
- E9974BA407705F1400206F68,
- E9974BA507705F1400206F68,
- E9974BA607705F1400206F68,
- E9974BA707705F1400206F68,
- E9974BA807705F1400206F68,
- );
- isa = PBXHeadersBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- E9974B9407705F1400206F68 = {
- fileRef = F504A67003CE39F501A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974B9507705F1400206F68 = {
- fileRef = F55CED7F0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974B9607705F1400206F68 = {
- fileRef = F55CED810383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974B9707705F1400206F68 = {
- fileRef = F55CED870383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974B9807705F1400206F68 = {
- fileRef = F55CED890383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974B9907705F1400206F68 = {
- fileRef = F55CED8B0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974B9A07705F1400206F68 = {
- fileRef = F55CED8C0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974B9B07705F1400206F68 = {
- fileRef = F55CED8E0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974B9C07705F1400206F68 = {
- fileRef = F55CED920383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974B9D07705F1400206F68 = {
- fileRef = F55CED940383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974B9E07705F1400206F68 = {
- fileRef = F55CED860383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974B9F07705F1400206F68 = {
- fileRef = F5CBC5B804757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BA007705F1400206F68 = {
- fileRef = F5CBC5B904757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BA107705F1400206F68 = {
- fileRef = F5CBC5BA04757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BA207705F1400206F68 = {
- fileRef = F5CBC5BB04757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BA307705F1400206F68 = {
- fileRef = F5CBC5BC04757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BA407705F1400206F68 = {
- fileRef = F5CBC5BD04757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BA507705F1400206F68 = {
- fileRef = F5CBC5BE04757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BA607705F1400206F68 = {
- fileRef = F5CBC5BF04757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BA707705F1400206F68 = {
- fileRef = F5CBC5C004757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BA807705F1400206F68 = {
- fileRef = F5CBC5C104757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BA907705F1400206F68 = {
- buildActionMask = 2147483647;
- files = (
- E9974BAA07705F1400206F68,
- E9974BAB07705F1400206F68,
- E9974BAC07705F1400206F68,
- E9974BAD07705F1400206F68,
- E9974BAE07705F1400206F68,
- E9974BAF07705F1400206F68,
- E9974BB007705F1400206F68,
- E9974BB107705F1400206F68,
- E9974BB207705F1400206F68,
- E9974BB307705F1400206F68,
- E9974BB407705F1400206F68,
- E9974BB507705F1400206F68,
- E9974BB607705F1400206F68,
- E9974BB707705F1400206F68,
- E9974BB807705F1400206F68,
- E9974BB907705F1400206F68,
- E9974BBA07705F1400206F68,
- E9974BBB07705F1400206F68,
- E9974BBC07705F1400206F68,
- E9974BBD07705F1400206F68,
- E9974BBE07705F1400206F68,
- E9974BBF07705F1400206F68,
- E9974BC007705F1400206F68,
- E9974BC107705F1400206F68,
- );
- isa = PBXSourcesBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- E9974BAA07705F1400206F68 = {
- fileRef = F55CED7C0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BAB07705F1400206F68 = {
- fileRef = F504A66B03CE39F501A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BAC07705F1400206F68 = {
- fileRef = F504A66C03CE39F501A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BAD07705F1400206F68 = {
- fileRef = F55CED7B0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BAE07705F1400206F68 = {
- fileRef = F55CED7D0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BAF07705F1400206F68 = {
- fileRef = E9BDCC4104F4D7C1008929A0;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BB007705F1400206F68 = {
- fileRef = F55CED7E0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BB107705F1400206F68 = {
- fileRef = F598D263044CC4A001A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BB207705F1400206F68 = {
- fileRef = F55CED800383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BB307705F1400206F68 = {
- fileRef = F55CED880383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BB407705F1400206F68 = {
- fileRef = F55CED8A0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BB507705F1400206F68 = {
- fileRef = F504A66D03CE39F501A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BB607705F1400206F68 = {
- fileRef = F55CED8D0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BB707705F1400206F68 = {
- fileRef = F504A66E03CE39F501A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BB807705F1400206F68 = {
- fileRef = F504A66F03CE39F501A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BB907705F1400206F68 = {
- fileRef = F55CED8F0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BBA07705F1400206F68 = {
- fileRef = F504A67103CE39F501A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BBB07705F1400206F68 = {
- fileRef = F504A67203CE39F501A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BBC07705F1400206F68 = {
- fileRef = F598D264044CC4A001A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BBD07705F1400206F68 = {
- fileRef = F55CED930383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BBE07705F1400206F68 = {
- fileRef = F55CED950383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BBF07705F1400206F68 = {
- fileRef = F5B1FAC8041191190179CFEF;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BC007705F1400206F68 = {
- fileRef = F55CED960383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BC107705F1400206F68 = {
- fileRef = F55CED970383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BC207705F1400206F68 = {
- buildActionMask = 2147483647;
- files = (
- E9974BC307705F1400206F68,
- E9974E180770780D00206F68,
- E9974E190770780D00206F68,
- );
- isa = PBXFrameworksBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- E9974BC307705F1400206F68 = {
- fileRef = E9974802077054CD00206F68;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BC407705F1400206F68 = {
- explicitFileType = archive.ar;
- includeInIndex = 0;
- isa = PBXFileReference;
- path = "libflext-max_t.a";
- refType = 3;
- sourceTree = BUILT_PRODUCTS_DIR;
- };
- E9974BC507705F4F00206F68 = {
- buildPhases = (
- E9974BC607705F4F00206F68,
- E9974BDE07705F4F00206F68,
- E9974BF707705F4F00206F68,
- );
- buildRules = (
- );
- buildSettings = {
- DYLIB_COMPATIBILITY_VERSION = 1;
- DYLIB_CURRENT_VERSION = 1;
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_PREFIX_HEADER = "$(Max SDK)/max-includes/ext_carbon_prefix.h";
- GCC_PREPROCESSOR_DEFINITIONS = "FLEXT_SYS=1 FLEXT_SHARED";
- HEADER_SEARCH_PATHS = "$(Max SDK)/max-includes $(Max SDK)/msp-includes";
- INSTALL_PATH = /usr/local/lib;
- LIBRARY_SEARCH_PATHS = "$(Max SDK)/msp-includes $(Max SDK)/msp-includes";
- LIBRARY_STYLE = DYNAMIC;
- OTHER_CFLAGS = "";
- OTHER_REZFLAGS = "";
- PREBINDING = YES;
- PRODUCT_NAME = "flext-max";
- SECTORDER_FLAGS = "";
- WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas";
- };
- dependencies = (
- );
- isa = PBXNativeTarget;
- name = "Max shared";
- productName = "PD shared";
- productReference = E9974BFA07705F4F00206F68;
- productType = "com.apple.product-type.library.dynamic";
- };
- E9974BC607705F4F00206F68 = {
- buildActionMask = 2147483647;
- files = (
- E9974BC707705F4F00206F68,
- E9974BC807705F4F00206F68,
- E9974BC907705F4F00206F68,
- E9974BCA07705F4F00206F68,
- E9974BCB07705F4F00206F68,
- E9974BCC07705F4F00206F68,
- E9974BCD07705F4F00206F68,
- E9974BCE07705F4F00206F68,
- E9974BCF07705F4F00206F68,
- E9974BD007705F4F00206F68,
- E9974BD107705F4F00206F68,
- E9974BD207705F4F00206F68,
- E9974BD307705F4F00206F68,
- E9974BD407705F4F00206F68,
- E9974BD507705F4F00206F68,
- E9974BD607705F4F00206F68,
- E9974BD707705F4F00206F68,
- E9974BD807705F4F00206F68,
- E9974BD907705F4F00206F68,
- E9974BDA07705F4F00206F68,
- E9974BDB07705F4F00206F68,
- E9974BDC07705F4F00206F68,
- E9974BDD07705F4F00206F68,
- );
- isa = PBXHeadersBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- E9974BC707705F4F00206F68 = {
- fileRef = F55CED860383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BC807705F4F00206F68 = {
- fileRef = F5CBC5B804757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BC907705F4F00206F68 = {
- fileRef = F5CBC5B904757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BCA07705F4F00206F68 = {
- fileRef = F5CBC5BA04757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BCB07705F4F00206F68 = {
- fileRef = F5CBC5BB04757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BCC07705F4F00206F68 = {
- fileRef = F5CBC5BC04757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BCD07705F4F00206F68 = {
- fileRef = F5CBC5BD04757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BCE07705F4F00206F68 = {
- fileRef = F5CBC5BE04757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BCF07705F4F00206F68 = {
- fileRef = F5CBC5BF04757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BD007705F4F00206F68 = {
- fileRef = F5CBC5C004757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BD107705F4F00206F68 = {
- fileRef = F5CBC5C104757BC801A0C81C;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BD207705F4F00206F68 = {
- fileRef = F504A67003CE39F501A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BD307705F4F00206F68 = {
- fileRef = F55CED7F0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BD407705F4F00206F68 = {
- fileRef = F55CED810383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BD507705F4F00206F68 = {
- fileRef = F55CED870383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BD607705F4F00206F68 = {
- fileRef = F55CED890383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BD707705F4F00206F68 = {
- fileRef = F55CED8B0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BD807705F4F00206F68 = {
- fileRef = F55CED8C0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BD907705F4F00206F68 = {
- fileRef = F55CED8E0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BDA07705F4F00206F68 = {
- fileRef = F55CED910383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BDB07705F4F00206F68 = {
- fileRef = F55CED920383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BDC07705F4F00206F68 = {
- fileRef = F55CED940383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BDD07705F4F00206F68 = {
- fileRef = F504A67403CE39F501A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BDE07705F4F00206F68 = {
- buildActionMask = 2147483647;
- files = (
- E9974BDF07705F4F00206F68,
- E9974BE007705F4F00206F68,
- E9974BE107705F4F00206F68,
- E9974BE207705F4F00206F68,
- E9974BE307705F4F00206F68,
- E9974BE407705F4F00206F68,
- E9974BE507705F4F00206F68,
- E9974BE607705F4F00206F68,
- E9974BE707705F4F00206F68,
- E9974BE807705F4F00206F68,
- E9974BE907705F4F00206F68,
- E9974BEA07705F4F00206F68,
- E9974BEB07705F4F00206F68,
- E9974BEC07705F4F00206F68,
- E9974BED07705F4F00206F68,
- E9974BEE07705F4F00206F68,
- E9974BEF07705F4F00206F68,
- E9974BF007705F4F00206F68,
- E9974BF107705F4F00206F68,
- E9974BF207705F4F00206F68,
- E9974BF307705F4F00206F68,
- E9974BF407705F4F00206F68,
- E9974BF507705F4F00206F68,
- E9974BF607705F4F00206F68,
- );
- isa = PBXSourcesBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- E9974BDF07705F4F00206F68 = {
- fileRef = F55CED7C0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BE007705F4F00206F68 = {
- fileRef = F504A66B03CE39F501A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BE107705F4F00206F68 = {
- fileRef = F504A66C03CE39F501A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BE207705F4F00206F68 = {
- fileRef = F55CED7B0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BE307705F4F00206F68 = {
- fileRef = F55CED7D0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BE407705F4F00206F68 = {
- fileRef = E9BDCC4104F4D7C1008929A0;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BE507705F4F00206F68 = {
- fileRef = F55CED7E0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BE607705F4F00206F68 = {
- fileRef = F598D263044CC4A001A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BE707705F4F00206F68 = {
- fileRef = F55CED800383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BE807705F4F00206F68 = {
- fileRef = F55CED880383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BE907705F4F00206F68 = {
- fileRef = F55CED8A0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BEA07705F4F00206F68 = {
- fileRef = F504A66D03CE39F501A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BEB07705F4F00206F68 = {
- fileRef = F55CED8D0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BEC07705F4F00206F68 = {
- fileRef = F504A66E03CE39F501A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BED07705F4F00206F68 = {
- fileRef = F504A66F03CE39F501A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BEE07705F4F00206F68 = {
- fileRef = F55CED8F0383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BEF07705F4F00206F68 = {
- fileRef = F504A67103CE39F501A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BF007705F4F00206F68 = {
- fileRef = F504A67203CE39F501A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BF107705F4F00206F68 = {
- fileRef = F598D264044CC4A001A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BF207705F4F00206F68 = {
- fileRef = F55CED930383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BF307705F4F00206F68 = {
- fileRef = F55CED950383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BF407705F4F00206F68 = {
- fileRef = F5B1FAC8041191190179CFEF;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BF507705F4F00206F68 = {
- fileRef = F55CED960383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BF607705F4F00206F68 = {
- fileRef = F55CED970383E50201A80AC9;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BF707705F4F00206F68 = {
- buildActionMask = 2147483647;
- files = (
- E9974BF807705F4F00206F68,
- E9974BF907705F4F00206F68,
- E9974E1A0770780D00206F68,
- E9974E1B0770780D00206F68,
- );
- isa = PBXFrameworksBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- E9974BF807705F4F00206F68 = {
- fileRef = E9974802077054CD00206F68;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BF907705F4F00206F68 = {
- fileRef = E99748D007705BAF00206F68;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974BFA07705F4F00206F68 = {
- explicitFileType = "compiled.mach-o.dylib";
- includeInIndex = 0;
- isa = PBXFileReference;
- path = "flext-max.dylib";
- refType = 3;
- sourceTree = BUILT_PRODUCTS_DIR;
- };
- E9974E140770780D00206F68 = {
- isa = PBXFileReference;
- lastKnownFileType = wrapper.framework;
- name = MaxAPI.framework;
- path = /Library/Frameworks/MaxAPI.framework;
- refType = 0;
- sourceTree = "<absolute>";
- };
- E9974E150770780D00206F68 = {
- isa = PBXFileReference;
- lastKnownFileType = wrapper.framework;
- name = MaxAudioAPI.framework;
- path = /Library/Frameworks/MaxAudioAPI.framework;
- refType = 0;
- sourceTree = "<absolute>";
- };
- E9974E160770780D00206F68 = {
- fileRef = E9974E140770780D00206F68;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974E170770780D00206F68 = {
- fileRef = E9974E150770780D00206F68;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974E180770780D00206F68 = {
- fileRef = E9974E140770780D00206F68;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974E190770780D00206F68 = {
- fileRef = E9974E150770780D00206F68;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974E1A0770780D00206F68 = {
- fileRef = E9974E140770780D00206F68;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974E1B0770780D00206F68 = {
- fileRef = E9974E150770780D00206F68;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9BDCC4104F4D7C1008929A0 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = flattr_ed.cpp;
- path = source/flattr_ed.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
-//E90
-//E91
-//E92
-//E93
-//E94
-//F50
-//F51
-//F52
-//F53
-//F54
- F504A66B03CE39F501A80AC9 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = flatom_app.cpp;
- path = source/flatom_app.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- F504A66C03CE39F501A80AC9 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = flatom_part.cpp;
- path = source/flatom_part.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- F504A66D03CE39F501A80AC9 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = flitem.cpp;
- path = source/flitem.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- F504A66E03CE39F501A80AC9 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = flmeth.cpp;
- path = source/flmeth.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- F504A66F03CE39F501A80AC9 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = flmsg.cpp;
- path = source/flmsg.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- F504A67003CE39F501A80AC9 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = flprefix.h;
- path = source/flprefix.h;
- refType = 4;
- sourceTree = "<group>";
- };
- F504A67103CE39F501A80AC9 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = flproxy.cpp;
- path = source/flproxy.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- F504A67203CE39F501A80AC9 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = flqueue.cpp;
- path = source/flqueue.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- F504A67303CE39F501A80AC9 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = flstk.cpp;
- path = source/flstk.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- F504A67403CE39F501A80AC9 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = flstk.h;
- path = source/flstk.h;
- refType = 4;
- sourceTree = "<group>";
- };
- F5128F2503864E5501A80AC9 = {
- buildSettings = {
- COPY_PHASE_STRIP = NO;
- GCC_ALTIVEC_EXTENSIONS = YES;
- GCC_DYNAMIC_NO_PIC = NO;
- GCC_ENABLE_FIX_AND_CONTINUE = YES;
- GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
- GCC_OPTIMIZATION_LEVEL = 0;
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_PREFIX_HEADER = source/flext.h;
- GCC_PREPROCESSOR_DEFINITIONS = "$(GCC_PREPROCESSOR_DEFINITIONS) FLEXT_DEBUG";
- ZERO_LINK = YES;
- };
- isa = PBXBuildStyle;
- name = Development;
- };
- F5128F2603864E5501A80AC9 = {
- buildSettings = {
- COPY_PHASE_STRIP = YES;
- GCC_ALTIVEC_EXTENSIONS = YES;
- GCC_ENABLE_FIX_AND_CONTINUE = NO;
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_PREFIX_HEADER = source/flext.h;
- ZERO_LINK = NO;
- };
- isa = PBXBuildStyle;
- name = Deployment;
- };
- F55CED7B0383E50201A80AC9 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = flatom_pr.cpp;
- path = source/flatom_pr.cpp;
- refType = 2;
- sourceTree = SOURCE_ROOT;
- };
- F55CED7C0383E50201A80AC9 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = flatom.cpp;
- path = source/flatom.cpp;
- refType = 2;
- sourceTree = SOURCE_ROOT;
- };
- F55CED7D0383E50201A80AC9 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = flattr.cpp;
- path = source/flattr.cpp;
- refType = 2;
- sourceTree = SOURCE_ROOT;
- };
- F55CED7E0383E50201A80AC9 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = flbase.cpp;
- path = source/flbase.cpp;
- refType = 2;
- sourceTree = SOURCE_ROOT;
- };
- F55CED7F0383E50201A80AC9 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = flbase.h;
- path = source/flbase.h;
- refType = 2;
- sourceTree = SOURCE_ROOT;
- };
- F55CED800383E50201A80AC9 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = flbuf.cpp;
- path = source/flbuf.cpp;
- refType = 2;
- sourceTree = SOURCE_ROOT;
- };
- F55CED810383E50201A80AC9 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = flclass.h;
- path = source/flclass.h;
- refType = 2;
- sourceTree = SOURCE_ROOT;
- };
- F55CED860383E50201A80AC9 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = fldefs.h;
- path = source/fldefs.h;
- refType = 2;
- sourceTree = SOURCE_ROOT;
- };
- F55CED870383E50201A80AC9 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = fldoxygen.h;
- path = source/fldoxygen.h;
- refType = 2;
- sourceTree = SOURCE_ROOT;
- };
- F55CED880383E50201A80AC9 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = fldsp.cpp;
- path = source/fldsp.cpp;
- refType = 2;
- sourceTree = SOURCE_ROOT;
- };
- F55CED890383E50201A80AC9 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = fldsp.h;
- path = source/fldsp.h;
- refType = 2;
- sourceTree = SOURCE_ROOT;
- };
- F55CED8A0383E50201A80AC9 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = flext.cpp;
- path = source/flext.cpp;
- refType = 2;
- sourceTree = SOURCE_ROOT;
- };
- F55CED8B0383E50201A80AC9 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = flext.h;
- path = source/flext.h;
- refType = 2;
- sourceTree = SOURCE_ROOT;
- };
- F55CED8C0383E50201A80AC9 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = flinternal.h;
- path = source/flinternal.h;
- refType = 2;
- sourceTree = SOURCE_ROOT;
- };
- F55CED8D0383E50201A80AC9 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = fllib.cpp;
- path = source/fllib.cpp;
- refType = 2;
- sourceTree = SOURCE_ROOT;
- };
- F55CED8E0383E50201A80AC9 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = flmspbuffer.h;
- path = source/flmspbuffer.h;
- refType = 2;
- sourceTree = SOURCE_ROOT;
- };
- F55CED8F0383E50201A80AC9 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = flout.cpp;
- path = source/flout.cpp;
- refType = 2;
- sourceTree = SOURCE_ROOT;
- };
- F55CED900383E50201A80AC9 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = flsndobj.cpp;
- path = source/flsndobj.cpp;
- refType = 2;
- sourceTree = SOURCE_ROOT;
- };
- F55CED910383E50201A80AC9 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = flsndobj.h;
- path = source/flsndobj.h;
- refType = 2;
- sourceTree = SOURCE_ROOT;
- };
- F55CED920383E50201A80AC9 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = flstdc.h;
- path = source/flstdc.h;
- refType = 2;
- sourceTree = SOURCE_ROOT;
- };
- F55CED930383E50201A80AC9 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = flsupport.cpp;
- path = source/flsupport.cpp;
- refType = 2;
- sourceTree = SOURCE_ROOT;
- };
- F55CED940383E50201A80AC9 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = flsupport.h;
- path = source/flsupport.h;
- refType = 2;
- sourceTree = SOURCE_ROOT;
- };
- F55CED950383E50201A80AC9 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = flthr.cpp;
- path = source/flthr.cpp;
- refType = 2;
- sourceTree = SOURCE_ROOT;
- };
- F55CED960383E50201A80AC9 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = flutil.cpp;
- path = source/flutil.cpp;
- refType = 2;
- sourceTree = SOURCE_ROOT;
- };
- F55CED970383E50201A80AC9 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = flxlet.cpp;
- path = source/flxlet.cpp;
- refType = 2;
- sourceTree = SOURCE_ROOT;
- };
- F55CEDB50383E50D01A80AC9 = {
- children = (
- F5CBC61C04757BDA01A0C81C,
- F504A67003CE39F501A80AC9,
- F55CED7F0383E50201A80AC9,
- F55CED810383E50201A80AC9,
- F55CED870383E50201A80AC9,
- F55CED890383E50201A80AC9,
- F55CED8B0383E50201A80AC9,
- F55CED8C0383E50201A80AC9,
- F55CED8E0383E50201A80AC9,
- F55CED910383E50201A80AC9,
- F55CED920383E50201A80AC9,
- F55CED940383E50201A80AC9,
- F504A67403CE39F501A80AC9,
- );
- isa = PBXGroup;
- name = Headers;
- path = "";
- refType = 2;
- sourceTree = SOURCE_ROOT;
- };
- F598D263044CC4A001A80AC9 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = flbind.cpp;
- path = source/flbind.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- F598D264044CC4A001A80AC9 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = flsimd.cpp;
- path = source/flsimd.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- F5B1FAC8041191190179CFEF = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = fltimer.cpp;
- path = source/fltimer.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- F5CBC5B804757BC801A0C81C = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = fldefs_attradd.h;
- path = source/fldefs_attradd.h;
- refType = 4;
- sourceTree = "<group>";
- };
- F5CBC5B904757BC801A0C81C = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = fldefs_attrcb.h;
- path = source/fldefs_attrcb.h;
- refType = 4;
- sourceTree = "<group>";
- };
- F5CBC5BA04757BC801A0C81C = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = fldefs_attrvar.h;
- path = source/fldefs_attrvar.h;
- refType = 4;
- sourceTree = "<group>";
- };
- F5CBC5BB04757BC801A0C81C = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = fldefs_hdr.h;
- path = source/fldefs_hdr.h;
- refType = 4;
- sourceTree = "<group>";
- };
- F5CBC5BC04757BC801A0C81C = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = fldefs_methadd.h;
- path = source/fldefs_methadd.h;
- refType = 4;
- sourceTree = "<group>";
- };
- F5CBC5BD04757BC801A0C81C = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = fldefs_methbind.h;
- path = source/fldefs_methbind.h;
- refType = 4;
- sourceTree = "<group>";
- };
- F5CBC5BE04757BC801A0C81C = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = fldefs_methcall.h;
- path = source/fldefs_methcall.h;
- refType = 4;
- sourceTree = "<group>";
- };
- F5CBC5BF04757BC801A0C81C = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = fldefs_methcb.h;
- path = source/fldefs_methcb.h;
- refType = 4;
- sourceTree = "<group>";
- };
- F5CBC5C004757BC801A0C81C = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = fldefs_meththr.h;
- path = source/fldefs_meththr.h;
- refType = 4;
- sourceTree = "<group>";
- };
- F5CBC5C104757BC801A0C81C = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = fldefs_setup.h;
- path = source/fldefs_setup.h;
- refType = 4;
- sourceTree = "<group>";
- };
- F5CBC61C04757BDA01A0C81C = {
- children = (
- F55CED860383E50201A80AC9,
- F5CBC5B804757BC801A0C81C,
- F5CBC5B904757BC801A0C81C,
- F5CBC5BA04757BC801A0C81C,
- F5CBC5BB04757BC801A0C81C,
- F5CBC5BC04757BC801A0C81C,
- F5CBC5BD04757BC801A0C81C,
- F5CBC5BE04757BC801A0C81C,
- F5CBC5BF04757BC801A0C81C,
- F5CBC5C004757BC801A0C81C,
- F5CBC5C104757BC801A0C81C,
- );
- isa = PBXGroup;
- name = Defs;
- refType = 4;
- sourceTree = "<group>";
- };
- };
- rootObject = 0867D690FE84028FC02AAC07;
-}
diff --git a/externals/grill/flext/flext.xcodeproj/project.pbxproj b/externals/grill/flext/flext.xcodeproj/project.pbxproj
deleted file mode 100755
index 977beca5..00000000
--- a/externals/grill/flext/flext.xcodeproj/project.pbxproj
+++ /dev/null
@@ -1,1697 +0,0 @@
-// !$*UTF8*$!
-{
- archiveVersion = 1;
- classes = {
- };
- objectVersion = 42;
- objects = {
-
-/* Begin PBXBuildFile section */
- E99747CE0770548700206F68 /* flatom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED7C0383E50201A80AC9 /* flatom.cpp */; };
- E99747D00770548700206F68 /* flatom_part.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A66C03CE39F501A80AC9 /* flatom_part.cpp */; };
- E99747D10770548700206F68 /* flatom_pr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED7B0383E50201A80AC9 /* flatom_pr.cpp */; };
- E99747D20770548700206F68 /* flattr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED7D0383E50201A80AC9 /* flattr.cpp */; };
- E99747D30770548700206F68 /* flattr_ed.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9BDCC4104F4D7C1008929A0 /* flattr_ed.cpp */; };
- E99747D40770548700206F68 /* flbase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED7E0383E50201A80AC9 /* flbase.cpp */; };
- E99747D50770548700206F68 /* flbind.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F598D263044CC4A001A80AC9 /* flbind.cpp */; };
- E99747D60770548700206F68 /* flbuf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED800383E50201A80AC9 /* flbuf.cpp */; };
- E99747D70770548700206F68 /* fldsp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED880383E50201A80AC9 /* fldsp.cpp */; };
- E99747D80770548700206F68 /* flext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED8A0383E50201A80AC9 /* flext.cpp */; };
- E99747D90770548700206F68 /* flitem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A66D03CE39F501A80AC9 /* flitem.cpp */; };
- E99747DA0770548700206F68 /* fllib.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED8D0383E50201A80AC9 /* fllib.cpp */; };
- E99747DB0770548700206F68 /* flmeth.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A66E03CE39F501A80AC9 /* flmeth.cpp */; };
- E99747DC0770548700206F68 /* flmsg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A66F03CE39F501A80AC9 /* flmsg.cpp */; };
- E99747DD0770548700206F68 /* flout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED8F0383E50201A80AC9 /* flout.cpp */; };
- E99747DE0770548700206F68 /* flproxy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A67103CE39F501A80AC9 /* flproxy.cpp */; };
- E99747DF0770548700206F68 /* flqueue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A67203CE39F501A80AC9 /* flqueue.cpp */; };
- E99747E00770548700206F68 /* flsimd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F598D264044CC4A001A80AC9 /* flsimd.cpp */; };
- E99747E30770548700206F68 /* flsupport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED930383E50201A80AC9 /* flsupport.cpp */; };
- E99747E40770548700206F68 /* flthr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED950383E50201A80AC9 /* flthr.cpp */; };
- E99747E50770548700206F68 /* fltimer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5B1FAC8041191190179CFEF /* fltimer.cpp */; };
- E99747E60770548700206F68 /* flutil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED960383E50201A80AC9 /* flutil.cpp */; };
- E99747E70770548700206F68 /* flxlet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED970383E50201A80AC9 /* flxlet.cpp */; };
- E99747E80770548F00206F68 /* flbase.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED7F0383E50201A80AC9 /* flbase.h */; settings = {ATTRIBUTES = (Public, ); }; };
- E99747E90770548F00206F68 /* flclass.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED810383E50201A80AC9 /* flclass.h */; settings = {ATTRIBUTES = (Public, ); }; };
- E99747EA0770548F00206F68 /* fldefs.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED860383E50201A80AC9 /* fldefs.h */; settings = {ATTRIBUTES = (Public, ); }; };
- E99747EB0770548F00206F68 /* fldefs_attradd.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5B804757BC801A0C81C /* fldefs_attradd.h */; settings = {ATTRIBUTES = (Public, ); }; };
- E99747EC0770548F00206F68 /* fldefs_attrcb.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5B904757BC801A0C81C /* fldefs_attrcb.h */; settings = {ATTRIBUTES = (Public, ); }; };
- E99747ED0770548F00206F68 /* fldefs_attrvar.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BA04757BC801A0C81C /* fldefs_attrvar.h */; settings = {ATTRIBUTES = (Public, ); }; };
- E99747EE0770548F00206F68 /* fldefs_hdr.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BB04757BC801A0C81C /* fldefs_hdr.h */; settings = {ATTRIBUTES = (Public, ); }; };
- E99747EF0770548F00206F68 /* fldefs_methadd.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BC04757BC801A0C81C /* fldefs_methadd.h */; settings = {ATTRIBUTES = (Public, ); }; };
- E99747F00770548F00206F68 /* fldefs_methbind.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BD04757BC801A0C81C /* fldefs_methbind.h */; settings = {ATTRIBUTES = (Public, ); }; };
- E99747F10770548F00206F68 /* fldefs_methcall.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BE04757BC801A0C81C /* fldefs_methcall.h */; settings = {ATTRIBUTES = (Public, ); }; };
- E99747F20770548F00206F68 /* fldefs_methcb.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BF04757BC801A0C81C /* fldefs_methcb.h */; settings = {ATTRIBUTES = (Public, ); }; };
- E99747F30770548F00206F68 /* fldefs_meththr.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5C004757BC801A0C81C /* fldefs_meththr.h */; settings = {ATTRIBUTES = (Public, ); }; };
- E99747F40770548F00206F68 /* fldefs_setup.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5C104757BC801A0C81C /* fldefs_setup.h */; settings = {ATTRIBUTES = (Public, ); }; };
- E99747F50770548F00206F68 /* fldoxygen.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED870383E50201A80AC9 /* fldoxygen.h */; settings = {ATTRIBUTES = (Public, ); }; };
- E99747F60770548F00206F68 /* fldsp.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED890383E50201A80AC9 /* fldsp.h */; settings = {ATTRIBUTES = (Public, ); }; };
- E99747F70770548F00206F68 /* flext.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED8B0383E50201A80AC9 /* flext.h */; settings = {ATTRIBUTES = (Public, ); }; };
- E99747F80770548F00206F68 /* flinternal.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED8C0383E50201A80AC9 /* flinternal.h */; settings = {ATTRIBUTES = (Public, ); }; };
- E99747F90770548F00206F68 /* flmspbuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED8E0383E50201A80AC9 /* flmspbuffer.h */; settings = {ATTRIBUTES = (Public, ); }; };
- E99747FA0770548F00206F68 /* flprefix.h in Headers */ = {isa = PBXBuildFile; fileRef = F504A67003CE39F501A80AC9 /* flprefix.h */; settings = {ATTRIBUTES = (Public, ); }; };
- E99747FC0770548F00206F68 /* flstdc.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED920383E50201A80AC9 /* flstdc.h */; settings = {ATTRIBUTES = (Public, ); }; };
- E99747FE0770548F00206F68 /* flsupport.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED940383E50201A80AC9 /* flsupport.h */; settings = {ATTRIBUTES = (Public, ); }; };
- E9974803077054CD00206F68 /* vecLib.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E9974802077054CD00206F68 /* vecLib.framework */; };
- E997480F0770570800206F68 /* flprefix.h in Headers */ = {isa = PBXBuildFile; fileRef = F504A67003CE39F501A80AC9 /* flprefix.h */; };
- E99748100770570800206F68 /* flbase.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED7F0383E50201A80AC9 /* flbase.h */; };
- E99748110770570800206F68 /* flclass.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED810383E50201A80AC9 /* flclass.h */; };
- E99748120770570800206F68 /* fldoxygen.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED870383E50201A80AC9 /* fldoxygen.h */; };
- E99748130770570800206F68 /* fldsp.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED890383E50201A80AC9 /* fldsp.h */; };
- E99748140770570800206F68 /* flext.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED8B0383E50201A80AC9 /* flext.h */; };
- E99748150770570800206F68 /* flinternal.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED8C0383E50201A80AC9 /* flinternal.h */; };
- E99748160770570800206F68 /* flmspbuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED8E0383E50201A80AC9 /* flmspbuffer.h */; };
- E99748170770570800206F68 /* flstdc.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED920383E50201A80AC9 /* flstdc.h */; };
- E99748180770570800206F68 /* flsupport.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED940383E50201A80AC9 /* flsupport.h */; };
- E99748190770570800206F68 /* fldefs.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED860383E50201A80AC9 /* fldefs.h */; };
- E997481A0770570800206F68 /* fldefs_attradd.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5B804757BC801A0C81C /* fldefs_attradd.h */; };
- E997481B0770570800206F68 /* fldefs_attrcb.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5B904757BC801A0C81C /* fldefs_attrcb.h */; };
- E997481C0770570800206F68 /* fldefs_attrvar.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BA04757BC801A0C81C /* fldefs_attrvar.h */; };
- E997481D0770570800206F68 /* fldefs_hdr.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BB04757BC801A0C81C /* fldefs_hdr.h */; };
- E997481E0770570800206F68 /* fldefs_methadd.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BC04757BC801A0C81C /* fldefs_methadd.h */; };
- E997481F0770570800206F68 /* fldefs_methbind.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BD04757BC801A0C81C /* fldefs_methbind.h */; };
- E99748200770570800206F68 /* fldefs_methcall.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BE04757BC801A0C81C /* fldefs_methcall.h */; };
- E99748210770570800206F68 /* fldefs_methcb.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BF04757BC801A0C81C /* fldefs_methcb.h */; };
- E99748220770570800206F68 /* fldefs_meththr.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5C004757BC801A0C81C /* fldefs_meththr.h */; };
- E99748230770570800206F68 /* fldefs_setup.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5C104757BC801A0C81C /* fldefs_setup.h */; };
- E99748250770570800206F68 /* flatom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED7C0383E50201A80AC9 /* flatom.cpp */; };
- E99748270770570800206F68 /* flatom_part.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A66C03CE39F501A80AC9 /* flatom_part.cpp */; };
- E99748280770570800206F68 /* flatom_pr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED7B0383E50201A80AC9 /* flatom_pr.cpp */; };
- E99748290770570800206F68 /* flattr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED7D0383E50201A80AC9 /* flattr.cpp */; };
- E997482A0770570800206F68 /* flattr_ed.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9BDCC4104F4D7C1008929A0 /* flattr_ed.cpp */; };
- E997482B0770570800206F68 /* flbase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED7E0383E50201A80AC9 /* flbase.cpp */; };
- E997482C0770570800206F68 /* flbind.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F598D263044CC4A001A80AC9 /* flbind.cpp */; };
- E997482D0770570800206F68 /* flbuf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED800383E50201A80AC9 /* flbuf.cpp */; };
- E997482E0770570800206F68 /* fldsp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED880383E50201A80AC9 /* fldsp.cpp */; };
- E997482F0770570800206F68 /* flext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED8A0383E50201A80AC9 /* flext.cpp */; };
- E99748300770570800206F68 /* flitem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A66D03CE39F501A80AC9 /* flitem.cpp */; };
- E99748310770570800206F68 /* fllib.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED8D0383E50201A80AC9 /* fllib.cpp */; };
- E99748320770570800206F68 /* flmeth.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A66E03CE39F501A80AC9 /* flmeth.cpp */; };
- E99748330770570800206F68 /* flmsg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A66F03CE39F501A80AC9 /* flmsg.cpp */; };
- E99748340770570800206F68 /* flout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED8F0383E50201A80AC9 /* flout.cpp */; };
- E99748350770570800206F68 /* flproxy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A67103CE39F501A80AC9 /* flproxy.cpp */; };
- E99748360770570800206F68 /* flqueue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A67203CE39F501A80AC9 /* flqueue.cpp */; };
- E99748370770570800206F68 /* flsimd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F598D264044CC4A001A80AC9 /* flsimd.cpp */; };
- E99748380770570800206F68 /* flsupport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED930383E50201A80AC9 /* flsupport.cpp */; };
- E99748390770570800206F68 /* flthr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED950383E50201A80AC9 /* flthr.cpp */; };
- E997483A0770570800206F68 /* fltimer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5B1FAC8041191190179CFEF /* fltimer.cpp */; };
- E997483B0770570800206F68 /* flutil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED960383E50201A80AC9 /* flutil.cpp */; };
- E997483C0770570800206F68 /* flxlet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED970383E50201A80AC9 /* flxlet.cpp */; };
- E997483E0770570800206F68 /* vecLib.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E9974802077054CD00206F68 /* vecLib.framework */; };
- E997488C0770593C00206F68 /* flatom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED7C0383E50201A80AC9 /* flatom.cpp */; };
- E997488E0770593C00206F68 /* flatom_part.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A66C03CE39F501A80AC9 /* flatom_part.cpp */; };
- E997488F0770593C00206F68 /* flatom_pr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED7B0383E50201A80AC9 /* flatom_pr.cpp */; };
- E99748900770593C00206F68 /* flattr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED7D0383E50201A80AC9 /* flattr.cpp */; };
- E99748910770593C00206F68 /* flattr_ed.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9BDCC4104F4D7C1008929A0 /* flattr_ed.cpp */; };
- E99748920770593C00206F68 /* flbase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED7E0383E50201A80AC9 /* flbase.cpp */; };
- E99748930770593C00206F68 /* flbind.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F598D263044CC4A001A80AC9 /* flbind.cpp */; };
- E99748940770593C00206F68 /* flbuf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED800383E50201A80AC9 /* flbuf.cpp */; };
- E99748950770593C00206F68 /* fldsp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED880383E50201A80AC9 /* fldsp.cpp */; };
- E99748960770593C00206F68 /* flext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED8A0383E50201A80AC9 /* flext.cpp */; };
- E99748970770593C00206F68 /* flitem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A66D03CE39F501A80AC9 /* flitem.cpp */; };
- E99748980770593C00206F68 /* fllib.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED8D0383E50201A80AC9 /* fllib.cpp */; };
- E99748990770593C00206F68 /* flmeth.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A66E03CE39F501A80AC9 /* flmeth.cpp */; };
- E997489A0770593C00206F68 /* flmsg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A66F03CE39F501A80AC9 /* flmsg.cpp */; };
- E997489B0770593C00206F68 /* flout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED8F0383E50201A80AC9 /* flout.cpp */; };
- E997489C0770593C00206F68 /* flproxy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A67103CE39F501A80AC9 /* flproxy.cpp */; };
- E997489D0770593C00206F68 /* flqueue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A67203CE39F501A80AC9 /* flqueue.cpp */; };
- E997489E0770593C00206F68 /* flsimd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F598D264044CC4A001A80AC9 /* flsimd.cpp */; };
- E997489F0770593C00206F68 /* flsupport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED930383E50201A80AC9 /* flsupport.cpp */; };
- E99748A00770593C00206F68 /* flthr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED950383E50201A80AC9 /* flthr.cpp */; };
- E99748A10770593C00206F68 /* fltimer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5B1FAC8041191190179CFEF /* fltimer.cpp */; };
- E99748A20770593C00206F68 /* flutil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED960383E50201A80AC9 /* flutil.cpp */; };
- E99748A30770593C00206F68 /* flxlet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED970383E50201A80AC9 /* flxlet.cpp */; };
- E99748A40770595500206F68 /* flprefix.h in Headers */ = {isa = PBXBuildFile; fileRef = F504A67003CE39F501A80AC9 /* flprefix.h */; };
- E99748A50770595500206F68 /* flbase.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED7F0383E50201A80AC9 /* flbase.h */; };
- E99748A60770595500206F68 /* flclass.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED810383E50201A80AC9 /* flclass.h */; };
- E99748A70770595500206F68 /* fldoxygen.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED870383E50201A80AC9 /* fldoxygen.h */; };
- E99748A80770595500206F68 /* fldsp.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED890383E50201A80AC9 /* fldsp.h */; };
- E99748A90770595600206F68 /* flext.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED8B0383E50201A80AC9 /* flext.h */; };
- E99748AA0770595600206F68 /* flinternal.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED8C0383E50201A80AC9 /* flinternal.h */; };
- E99748AB0770595600206F68 /* flmspbuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED8E0383E50201A80AC9 /* flmspbuffer.h */; };
- E99748AC0770595600206F68 /* flsndobj.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED910383E50201A80AC9 /* flsndobj.h */; settings = {ATTRIBUTES = (Public, ); }; };
- E99748AD0770595600206F68 /* flstdc.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED920383E50201A80AC9 /* flstdc.h */; };
- E99748AE0770595600206F68 /* flsupport.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED940383E50201A80AC9 /* flsupport.h */; };
- E99748AF0770595600206F68 /* flstk.h in Headers */ = {isa = PBXBuildFile; fileRef = F504A67403CE39F501A80AC9 /* flstk.h */; settings = {ATTRIBUTES = (Public, ); }; };
- E99748B00770595E00206F68 /* fldefs.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED860383E50201A80AC9 /* fldefs.h */; };
- E99748B10770595E00206F68 /* fldefs_attradd.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5B804757BC801A0C81C /* fldefs_attradd.h */; };
- E99748B20770595E00206F68 /* fldefs_attrcb.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5B904757BC801A0C81C /* fldefs_attrcb.h */; };
- E99748B30770595E00206F68 /* fldefs_attrvar.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BA04757BC801A0C81C /* fldefs_attrvar.h */; };
- E99748B40770595E00206F68 /* fldefs_hdr.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BB04757BC801A0C81C /* fldefs_hdr.h */; };
- E99748B50770595E00206F68 /* fldefs_methadd.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BC04757BC801A0C81C /* fldefs_methadd.h */; };
- E99748B60770595E00206F68 /* fldefs_methbind.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BD04757BC801A0C81C /* fldefs_methbind.h */; };
- E99748B70770595E00206F68 /* fldefs_methcall.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BE04757BC801A0C81C /* fldefs_methcall.h */; };
- E99748B80770595E00206F68 /* fldefs_methcb.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BF04757BC801A0C81C /* fldefs_methcb.h */; };
- E99748B90770595E00206F68 /* fldefs_meththr.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5C004757BC801A0C81C /* fldefs_meththr.h */; };
- E99748BA0770595E00206F68 /* fldefs_setup.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5C104757BC801A0C81C /* fldefs_setup.h */; };
- E99748D107705BAF00206F68 /* ApplicationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E99748D007705BAF00206F68 /* ApplicationServices.framework */; };
- E997498E07705CC400206F68 /* flprefix.h in Headers */ = {isa = PBXBuildFile; fileRef = F504A67003CE39F501A80AC9 /* flprefix.h */; };
- E997498F07705CC400206F68 /* flbase.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED7F0383E50201A80AC9 /* flbase.h */; };
- E997499007705CC400206F68 /* flclass.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED810383E50201A80AC9 /* flclass.h */; };
- E997499107705CC400206F68 /* fldoxygen.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED870383E50201A80AC9 /* fldoxygen.h */; };
- E997499207705CC400206F68 /* fldsp.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED890383E50201A80AC9 /* fldsp.h */; };
- E997499307705CC400206F68 /* flext.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED8B0383E50201A80AC9 /* flext.h */; };
- E997499407705CC400206F68 /* flinternal.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED8C0383E50201A80AC9 /* flinternal.h */; };
- E997499507705CC400206F68 /* flmspbuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED8E0383E50201A80AC9 /* flmspbuffer.h */; };
- E997499607705CC400206F68 /* flstdc.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED920383E50201A80AC9 /* flstdc.h */; };
- E997499707705CC400206F68 /* flsupport.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED940383E50201A80AC9 /* flsupport.h */; };
- E997499807705CC400206F68 /* fldefs.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED860383E50201A80AC9 /* fldefs.h */; };
- E997499907705CC400206F68 /* fldefs_attradd.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5B804757BC801A0C81C /* fldefs_attradd.h */; };
- E997499A07705CC400206F68 /* fldefs_attrcb.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5B904757BC801A0C81C /* fldefs_attrcb.h */; };
- E997499B07705CC400206F68 /* fldefs_attrvar.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BA04757BC801A0C81C /* fldefs_attrvar.h */; };
- E997499C07705CC400206F68 /* fldefs_hdr.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BB04757BC801A0C81C /* fldefs_hdr.h */; };
- E997499D07705CC400206F68 /* fldefs_methadd.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BC04757BC801A0C81C /* fldefs_methadd.h */; };
- E997499E07705CC400206F68 /* fldefs_methbind.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BD04757BC801A0C81C /* fldefs_methbind.h */; };
- E997499F07705CC400206F68 /* fldefs_methcall.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BE04757BC801A0C81C /* fldefs_methcall.h */; };
- E99749A007705CC400206F68 /* fldefs_methcb.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BF04757BC801A0C81C /* fldefs_methcb.h */; };
- E99749A107705CC400206F68 /* fldefs_meththr.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5C004757BC801A0C81C /* fldefs_meththr.h */; };
- E99749A207705CC400206F68 /* fldefs_setup.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5C104757BC801A0C81C /* fldefs_setup.h */; };
- E99749A407705CC400206F68 /* flatom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED7C0383E50201A80AC9 /* flatom.cpp */; };
- E99749A607705CC400206F68 /* flatom_part.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A66C03CE39F501A80AC9 /* flatom_part.cpp */; };
- E99749A707705CC400206F68 /* flatom_pr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED7B0383E50201A80AC9 /* flatom_pr.cpp */; };
- E99749A807705CC400206F68 /* flattr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED7D0383E50201A80AC9 /* flattr.cpp */; };
- E99749A907705CC400206F68 /* flattr_ed.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9BDCC4104F4D7C1008929A0 /* flattr_ed.cpp */; };
- E99749AA07705CC400206F68 /* flbase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED7E0383E50201A80AC9 /* flbase.cpp */; };
- E99749AB07705CC400206F68 /* flbind.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F598D263044CC4A001A80AC9 /* flbind.cpp */; };
- E99749AC07705CC400206F68 /* flbuf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED800383E50201A80AC9 /* flbuf.cpp */; };
- E99749AD07705CC400206F68 /* fldsp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED880383E50201A80AC9 /* fldsp.cpp */; };
- E99749AE07705CC400206F68 /* flext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED8A0383E50201A80AC9 /* flext.cpp */; };
- E99749AF07705CC400206F68 /* flitem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A66D03CE39F501A80AC9 /* flitem.cpp */; };
- E99749B007705CC400206F68 /* fllib.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED8D0383E50201A80AC9 /* fllib.cpp */; };
- E99749B107705CC400206F68 /* flmeth.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A66E03CE39F501A80AC9 /* flmeth.cpp */; };
- E99749B207705CC400206F68 /* flmsg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A66F03CE39F501A80AC9 /* flmsg.cpp */; };
- E99749B307705CC400206F68 /* flout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED8F0383E50201A80AC9 /* flout.cpp */; };
- E99749B407705CC400206F68 /* flproxy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A67103CE39F501A80AC9 /* flproxy.cpp */; };
- E99749B507705CC400206F68 /* flqueue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A67203CE39F501A80AC9 /* flqueue.cpp */; };
- E99749B607705CC400206F68 /* flsimd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F598D264044CC4A001A80AC9 /* flsimd.cpp */; };
- E99749B707705CC400206F68 /* flsupport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED930383E50201A80AC9 /* flsupport.cpp */; };
- E99749B807705CC400206F68 /* flthr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED950383E50201A80AC9 /* flthr.cpp */; };
- E99749B907705CC400206F68 /* fltimer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5B1FAC8041191190179CFEF /* fltimer.cpp */; };
- E99749BA07705CC400206F68 /* flutil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED960383E50201A80AC9 /* flutil.cpp */; };
- E99749BB07705CC400206F68 /* flxlet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED970383E50201A80AC9 /* flxlet.cpp */; };
- E99749BD07705CC400206F68 /* vecLib.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E9974802077054CD00206F68 /* vecLib.framework */; };
- E99749BF07705D5200206F68 /* vecLib.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E9974802077054CD00206F68 /* vecLib.framework */; };
- E9974B9407705F1400206F68 /* flprefix.h in Headers */ = {isa = PBXBuildFile; fileRef = F504A67003CE39F501A80AC9 /* flprefix.h */; };
- E9974B9507705F1400206F68 /* flbase.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED7F0383E50201A80AC9 /* flbase.h */; };
- E9974B9607705F1400206F68 /* flclass.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED810383E50201A80AC9 /* flclass.h */; };
- E9974B9707705F1400206F68 /* fldoxygen.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED870383E50201A80AC9 /* fldoxygen.h */; };
- E9974B9807705F1400206F68 /* fldsp.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED890383E50201A80AC9 /* fldsp.h */; };
- E9974B9907705F1400206F68 /* flext.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED8B0383E50201A80AC9 /* flext.h */; };
- E9974B9A07705F1400206F68 /* flinternal.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED8C0383E50201A80AC9 /* flinternal.h */; };
- E9974B9B07705F1400206F68 /* flmspbuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED8E0383E50201A80AC9 /* flmspbuffer.h */; };
- E9974B9C07705F1400206F68 /* flstdc.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED920383E50201A80AC9 /* flstdc.h */; };
- E9974B9D07705F1400206F68 /* flsupport.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED940383E50201A80AC9 /* flsupport.h */; };
- E9974B9E07705F1400206F68 /* fldefs.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED860383E50201A80AC9 /* fldefs.h */; };
- E9974B9F07705F1400206F68 /* fldefs_attradd.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5B804757BC801A0C81C /* fldefs_attradd.h */; };
- E9974BA007705F1400206F68 /* fldefs_attrcb.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5B904757BC801A0C81C /* fldefs_attrcb.h */; };
- E9974BA107705F1400206F68 /* fldefs_attrvar.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BA04757BC801A0C81C /* fldefs_attrvar.h */; };
- E9974BA207705F1400206F68 /* fldefs_hdr.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BB04757BC801A0C81C /* fldefs_hdr.h */; };
- E9974BA307705F1400206F68 /* fldefs_methadd.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BC04757BC801A0C81C /* fldefs_methadd.h */; };
- E9974BA407705F1400206F68 /* fldefs_methbind.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BD04757BC801A0C81C /* fldefs_methbind.h */; };
- E9974BA507705F1400206F68 /* fldefs_methcall.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BE04757BC801A0C81C /* fldefs_methcall.h */; };
- E9974BA607705F1400206F68 /* fldefs_methcb.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BF04757BC801A0C81C /* fldefs_methcb.h */; };
- E9974BA707705F1400206F68 /* fldefs_meththr.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5C004757BC801A0C81C /* fldefs_meththr.h */; };
- E9974BA807705F1400206F68 /* fldefs_setup.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5C104757BC801A0C81C /* fldefs_setup.h */; };
- E9974BAA07705F1400206F68 /* flatom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED7C0383E50201A80AC9 /* flatom.cpp */; };
- E9974BAC07705F1400206F68 /* flatom_part.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A66C03CE39F501A80AC9 /* flatom_part.cpp */; };
- E9974BAD07705F1400206F68 /* flatom_pr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED7B0383E50201A80AC9 /* flatom_pr.cpp */; };
- E9974BAE07705F1400206F68 /* flattr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED7D0383E50201A80AC9 /* flattr.cpp */; };
- E9974BAF07705F1400206F68 /* flattr_ed.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9BDCC4104F4D7C1008929A0 /* flattr_ed.cpp */; };
- E9974BB007705F1400206F68 /* flbase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED7E0383E50201A80AC9 /* flbase.cpp */; };
- E9974BB107705F1400206F68 /* flbind.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F598D263044CC4A001A80AC9 /* flbind.cpp */; };
- E9974BB207705F1400206F68 /* flbuf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED800383E50201A80AC9 /* flbuf.cpp */; };
- E9974BB307705F1400206F68 /* fldsp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED880383E50201A80AC9 /* fldsp.cpp */; };
- E9974BB407705F1400206F68 /* flext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED8A0383E50201A80AC9 /* flext.cpp */; };
- E9974BB507705F1400206F68 /* flitem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A66D03CE39F501A80AC9 /* flitem.cpp */; };
- E9974BB607705F1400206F68 /* fllib.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED8D0383E50201A80AC9 /* fllib.cpp */; };
- E9974BB707705F1400206F68 /* flmeth.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A66E03CE39F501A80AC9 /* flmeth.cpp */; };
- E9974BB807705F1400206F68 /* flmsg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A66F03CE39F501A80AC9 /* flmsg.cpp */; };
- E9974BB907705F1400206F68 /* flout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED8F0383E50201A80AC9 /* flout.cpp */; };
- E9974BBA07705F1400206F68 /* flproxy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A67103CE39F501A80AC9 /* flproxy.cpp */; };
- E9974BBB07705F1400206F68 /* flqueue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A67203CE39F501A80AC9 /* flqueue.cpp */; };
- E9974BBC07705F1400206F68 /* flsimd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F598D264044CC4A001A80AC9 /* flsimd.cpp */; };
- E9974BBD07705F1400206F68 /* flsupport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED930383E50201A80AC9 /* flsupport.cpp */; };
- E9974BBE07705F1400206F68 /* flthr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED950383E50201A80AC9 /* flthr.cpp */; };
- E9974BBF07705F1400206F68 /* fltimer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5B1FAC8041191190179CFEF /* fltimer.cpp */; };
- E9974BC007705F1400206F68 /* flutil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED960383E50201A80AC9 /* flutil.cpp */; };
- E9974BC107705F1400206F68 /* flxlet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED970383E50201A80AC9 /* flxlet.cpp */; };
- E9974BC307705F1400206F68 /* vecLib.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E9974802077054CD00206F68 /* vecLib.framework */; };
- E9974BC707705F4F00206F68 /* fldefs.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED860383E50201A80AC9 /* fldefs.h */; };
- E9974BC807705F4F00206F68 /* fldefs_attradd.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5B804757BC801A0C81C /* fldefs_attradd.h */; };
- E9974BC907705F4F00206F68 /* fldefs_attrcb.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5B904757BC801A0C81C /* fldefs_attrcb.h */; };
- E9974BCA07705F4F00206F68 /* fldefs_attrvar.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BA04757BC801A0C81C /* fldefs_attrvar.h */; };
- E9974BCB07705F4F00206F68 /* fldefs_hdr.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BB04757BC801A0C81C /* fldefs_hdr.h */; };
- E9974BCC07705F4F00206F68 /* fldefs_methadd.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BC04757BC801A0C81C /* fldefs_methadd.h */; };
- E9974BCD07705F4F00206F68 /* fldefs_methbind.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BD04757BC801A0C81C /* fldefs_methbind.h */; };
- E9974BCE07705F4F00206F68 /* fldefs_methcall.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BE04757BC801A0C81C /* fldefs_methcall.h */; };
- E9974BCF07705F4F00206F68 /* fldefs_methcb.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BF04757BC801A0C81C /* fldefs_methcb.h */; };
- E9974BD007705F4F00206F68 /* fldefs_meththr.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5C004757BC801A0C81C /* fldefs_meththr.h */; };
- E9974BD107705F4F00206F68 /* fldefs_setup.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5C104757BC801A0C81C /* fldefs_setup.h */; };
- E9974BD207705F4F00206F68 /* flprefix.h in Headers */ = {isa = PBXBuildFile; fileRef = F504A67003CE39F501A80AC9 /* flprefix.h */; };
- E9974BD307705F4F00206F68 /* flbase.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED7F0383E50201A80AC9 /* flbase.h */; };
- E9974BD407705F4F00206F68 /* flclass.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED810383E50201A80AC9 /* flclass.h */; };
- E9974BD507705F4F00206F68 /* fldoxygen.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED870383E50201A80AC9 /* fldoxygen.h */; };
- E9974BD607705F4F00206F68 /* fldsp.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED890383E50201A80AC9 /* fldsp.h */; };
- E9974BD707705F4F00206F68 /* flext.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED8B0383E50201A80AC9 /* flext.h */; };
- E9974BD807705F4F00206F68 /* flinternal.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED8C0383E50201A80AC9 /* flinternal.h */; };
- E9974BD907705F4F00206F68 /* flmspbuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED8E0383E50201A80AC9 /* flmspbuffer.h */; };
- E9974BDA07705F4F00206F68 /* flsndobj.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED910383E50201A80AC9 /* flsndobj.h */; };
- E9974BDB07705F4F00206F68 /* flstdc.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED920383E50201A80AC9 /* flstdc.h */; };
- E9974BDC07705F4F00206F68 /* flsupport.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED940383E50201A80AC9 /* flsupport.h */; };
- E9974BDD07705F4F00206F68 /* flstk.h in Headers */ = {isa = PBXBuildFile; fileRef = F504A67403CE39F501A80AC9 /* flstk.h */; };
- E9974BDF07705F4F00206F68 /* flatom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED7C0383E50201A80AC9 /* flatom.cpp */; };
- E9974BE107705F4F00206F68 /* flatom_part.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A66C03CE39F501A80AC9 /* flatom_part.cpp */; };
- E9974BE207705F4F00206F68 /* flatom_pr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED7B0383E50201A80AC9 /* flatom_pr.cpp */; };
- E9974BE307705F4F00206F68 /* flattr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED7D0383E50201A80AC9 /* flattr.cpp */; };
- E9974BE407705F4F00206F68 /* flattr_ed.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9BDCC4104F4D7C1008929A0 /* flattr_ed.cpp */; };
- E9974BE507705F4F00206F68 /* flbase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED7E0383E50201A80AC9 /* flbase.cpp */; };
- E9974BE607705F4F00206F68 /* flbind.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F598D263044CC4A001A80AC9 /* flbind.cpp */; };
- E9974BE707705F4F00206F68 /* flbuf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED800383E50201A80AC9 /* flbuf.cpp */; };
- E9974BE807705F4F00206F68 /* fldsp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED880383E50201A80AC9 /* fldsp.cpp */; };
- E9974BE907705F4F00206F68 /* flext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED8A0383E50201A80AC9 /* flext.cpp */; };
- E9974BEA07705F4F00206F68 /* flitem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A66D03CE39F501A80AC9 /* flitem.cpp */; };
- E9974BEB07705F4F00206F68 /* fllib.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED8D0383E50201A80AC9 /* fllib.cpp */; };
- E9974BEC07705F4F00206F68 /* flmeth.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A66E03CE39F501A80AC9 /* flmeth.cpp */; };
- E9974BED07705F4F00206F68 /* flmsg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A66F03CE39F501A80AC9 /* flmsg.cpp */; };
- E9974BEE07705F4F00206F68 /* flout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED8F0383E50201A80AC9 /* flout.cpp */; };
- E9974BEF07705F4F00206F68 /* flproxy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A67103CE39F501A80AC9 /* flproxy.cpp */; };
- E9974BF007705F4F00206F68 /* flqueue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A67203CE39F501A80AC9 /* flqueue.cpp */; };
- E9974BF107705F4F00206F68 /* flsimd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F598D264044CC4A001A80AC9 /* flsimd.cpp */; };
- E9974BF207705F4F00206F68 /* flsupport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED930383E50201A80AC9 /* flsupport.cpp */; };
- E9974BF307705F4F00206F68 /* flthr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED950383E50201A80AC9 /* flthr.cpp */; };
- E9974BF407705F4F00206F68 /* fltimer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5B1FAC8041191190179CFEF /* fltimer.cpp */; };
- E9974BF507705F4F00206F68 /* flutil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED960383E50201A80AC9 /* flutil.cpp */; };
- E9974BF607705F4F00206F68 /* flxlet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED970383E50201A80AC9 /* flxlet.cpp */; };
- E9974BF807705F4F00206F68 /* vecLib.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E9974802077054CD00206F68 /* vecLib.framework */; };
- E9974BF907705F4F00206F68 /* ApplicationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E99748D007705BAF00206F68 /* ApplicationServices.framework */; };
- E9974E160770780D00206F68 /* MaxAPI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E9974E140770780D00206F68 /* MaxAPI.framework */; };
- E9974E170770780D00206F68 /* MaxAudioAPI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E9974E150770780D00206F68 /* MaxAudioAPI.framework */; };
- E9974E180770780D00206F68 /* MaxAPI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E9974E140770780D00206F68 /* MaxAPI.framework */; };
- E9974E190770780D00206F68 /* MaxAudioAPI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E9974E150770780D00206F68 /* MaxAudioAPI.framework */; };
- E9974E1A0770780D00206F68 /* MaxAPI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E9974E140770780D00206F68 /* MaxAPI.framework */; };
- E9974E1B0770780D00206F68 /* MaxAudioAPI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E9974E150770780D00206F68 /* MaxAudioAPI.framework */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXFileReference section */
- 089C1667FE841158C02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = file; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
- E99747CD0770545100206F68 /* libflext_s.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libflext_s.a; sourceTree = BUILT_PRODUCTS_DIR; };
- E9974802077054CD00206F68 /* vecLib.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = vecLib.framework; path = /System/Library/Frameworks/vecLib.framework; sourceTree = "<absolute>"; };
- E997483F0770570800206F68 /* libflext_t.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libflext_t.a; sourceTree = BUILT_PRODUCTS_DIR; };
- E9974886077058C100206F68 /* flext.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = flext.dylib; sourceTree = BUILT_PRODUCTS_DIR; };
- E99748D007705BAF00206F68 /* ApplicationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ApplicationServices.framework; path = /System/Library/Frameworks/ApplicationServices.framework; sourceTree = "<absolute>"; };
- E99749BE07705CC400206F68 /* libflext-max_s.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libflext-max_s.a"; sourceTree = BUILT_PRODUCTS_DIR; };
- E9974BC407705F1400206F68 /* libflext-max_t.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libflext-max_t.a"; sourceTree = BUILT_PRODUCTS_DIR; };
- E9974BFA07705F4F00206F68 /* flext-max.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = "flext-max.dylib"; sourceTree = BUILT_PRODUCTS_DIR; };
- E9974E140770780D00206F68 /* MaxAPI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MaxAPI.framework; path = /Library/Frameworks/MaxAPI.framework; sourceTree = "<absolute>"; };
- E9974E150770780D00206F68 /* MaxAudioAPI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MaxAudioAPI.framework; path = /Library/Frameworks/MaxAudioAPI.framework; sourceTree = "<absolute>"; };
- E9BDCC4104F4D7C1008929A0 /* flattr_ed.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = flattr_ed.cpp; path = source/flattr_ed.cpp; sourceTree = "<group>"; };
- F504A66C03CE39F501A80AC9 /* flatom_part.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = flatom_part.cpp; path = source/flatom_part.cpp; sourceTree = "<group>"; };
- F504A66D03CE39F501A80AC9 /* flitem.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = flitem.cpp; path = source/flitem.cpp; sourceTree = "<group>"; };
- F504A66E03CE39F501A80AC9 /* flmeth.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = flmeth.cpp; path = source/flmeth.cpp; sourceTree = "<group>"; };
- F504A66F03CE39F501A80AC9 /* flmsg.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = flmsg.cpp; path = source/flmsg.cpp; sourceTree = "<group>"; };
- F504A67003CE39F501A80AC9 /* flprefix.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = flprefix.h; path = source/flprefix.h; sourceTree = "<group>"; };
- F504A67103CE39F501A80AC9 /* flproxy.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = flproxy.cpp; path = source/flproxy.cpp; sourceTree = "<group>"; };
- F504A67203CE39F501A80AC9 /* flqueue.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = flqueue.cpp; path = source/flqueue.cpp; sourceTree = "<group>"; };
- F504A67303CE39F501A80AC9 /* flstk.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = flstk.cpp; path = source/flstk.cpp; sourceTree = "<group>"; };
- F504A67403CE39F501A80AC9 /* flstk.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = flstk.h; path = source/flstk.h; sourceTree = "<group>"; };
- F55CED7B0383E50201A80AC9 /* flatom_pr.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = flatom_pr.cpp; path = source/flatom_pr.cpp; sourceTree = SOURCE_ROOT; };
- F55CED7C0383E50201A80AC9 /* flatom.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = flatom.cpp; path = source/flatom.cpp; sourceTree = SOURCE_ROOT; };
- F55CED7D0383E50201A80AC9 /* flattr.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = flattr.cpp; path = source/flattr.cpp; sourceTree = SOURCE_ROOT; };
- F55CED7E0383E50201A80AC9 /* flbase.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = flbase.cpp; path = source/flbase.cpp; sourceTree = SOURCE_ROOT; };
- F55CED7F0383E50201A80AC9 /* flbase.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = flbase.h; path = source/flbase.h; sourceTree = SOURCE_ROOT; };
- F55CED800383E50201A80AC9 /* flbuf.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = flbuf.cpp; path = source/flbuf.cpp; sourceTree = SOURCE_ROOT; };
- F55CED810383E50201A80AC9 /* flclass.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = flclass.h; path = source/flclass.h; sourceTree = SOURCE_ROOT; };
- F55CED860383E50201A80AC9 /* fldefs.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = fldefs.h; path = source/fldefs.h; sourceTree = SOURCE_ROOT; };
- F55CED870383E50201A80AC9 /* fldoxygen.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = fldoxygen.h; path = source/fldoxygen.h; sourceTree = SOURCE_ROOT; };
- F55CED880383E50201A80AC9 /* fldsp.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = fldsp.cpp; path = source/fldsp.cpp; sourceTree = SOURCE_ROOT; };
- F55CED890383E50201A80AC9 /* fldsp.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = fldsp.h; path = source/fldsp.h; sourceTree = SOURCE_ROOT; };
- F55CED8A0383E50201A80AC9 /* flext.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = flext.cpp; path = source/flext.cpp; sourceTree = SOURCE_ROOT; };
- F55CED8B0383E50201A80AC9 /* flext.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = flext.h; path = source/flext.h; sourceTree = SOURCE_ROOT; };
- F55CED8C0383E50201A80AC9 /* flinternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = flinternal.h; path = source/flinternal.h; sourceTree = SOURCE_ROOT; };
- F55CED8D0383E50201A80AC9 /* fllib.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = fllib.cpp; path = source/fllib.cpp; sourceTree = SOURCE_ROOT; };
- F55CED8E0383E50201A80AC9 /* flmspbuffer.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = flmspbuffer.h; path = source/flmspbuffer.h; sourceTree = SOURCE_ROOT; };
- F55CED8F0383E50201A80AC9 /* flout.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = flout.cpp; path = source/flout.cpp; sourceTree = SOURCE_ROOT; };
- F55CED900383E50201A80AC9 /* flsndobj.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = flsndobj.cpp; path = source/flsndobj.cpp; sourceTree = SOURCE_ROOT; };
- F55CED910383E50201A80AC9 /* flsndobj.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = flsndobj.h; path = source/flsndobj.h; sourceTree = SOURCE_ROOT; };
- F55CED920383E50201A80AC9 /* flstdc.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = flstdc.h; path = source/flstdc.h; sourceTree = SOURCE_ROOT; };
- F55CED930383E50201A80AC9 /* flsupport.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = flsupport.cpp; path = source/flsupport.cpp; sourceTree = SOURCE_ROOT; };
- F55CED940383E50201A80AC9 /* flsupport.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = flsupport.h; path = source/flsupport.h; sourceTree = SOURCE_ROOT; };
- F55CED950383E50201A80AC9 /* flthr.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = flthr.cpp; path = source/flthr.cpp; sourceTree = SOURCE_ROOT; };
- F55CED960383E50201A80AC9 /* flutil.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = flutil.cpp; path = source/flutil.cpp; sourceTree = SOURCE_ROOT; };
- F55CED970383E50201A80AC9 /* flxlet.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = flxlet.cpp; path = source/flxlet.cpp; sourceTree = SOURCE_ROOT; };
- F598D263044CC4A001A80AC9 /* flbind.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = flbind.cpp; path = source/flbind.cpp; sourceTree = "<group>"; };
- F598D264044CC4A001A80AC9 /* flsimd.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = flsimd.cpp; path = source/flsimd.cpp; sourceTree = "<group>"; };
- F5B1FAC8041191190179CFEF /* fltimer.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = fltimer.cpp; path = source/fltimer.cpp; sourceTree = "<group>"; };
- F5CBC5B804757BC801A0C81C /* fldefs_attradd.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = fldefs_attradd.h; path = source/fldefs_attradd.h; sourceTree = "<group>"; };
- F5CBC5B904757BC801A0C81C /* fldefs_attrcb.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = fldefs_attrcb.h; path = source/fldefs_attrcb.h; sourceTree = "<group>"; };
- F5CBC5BA04757BC801A0C81C /* fldefs_attrvar.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = fldefs_attrvar.h; path = source/fldefs_attrvar.h; sourceTree = "<group>"; };
- F5CBC5BB04757BC801A0C81C /* fldefs_hdr.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = fldefs_hdr.h; path = source/fldefs_hdr.h; sourceTree = "<group>"; };
- F5CBC5BC04757BC801A0C81C /* fldefs_methadd.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = fldefs_methadd.h; path = source/fldefs_methadd.h; sourceTree = "<group>"; };
- F5CBC5BD04757BC801A0C81C /* fldefs_methbind.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = fldefs_methbind.h; path = source/fldefs_methbind.h; sourceTree = "<group>"; };
- F5CBC5BE04757BC801A0C81C /* fldefs_methcall.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = fldefs_methcall.h; path = source/fldefs_methcall.h; sourceTree = "<group>"; };
- F5CBC5BF04757BC801A0C81C /* fldefs_methcb.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = fldefs_methcb.h; path = source/fldefs_methcb.h; sourceTree = "<group>"; };
- F5CBC5C004757BC801A0C81C /* fldefs_meththr.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = fldefs_meththr.h; path = source/fldefs_meththr.h; sourceTree = "<group>"; };
- F5CBC5C104757BC801A0C81C /* fldefs_setup.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = fldefs_setup.h; path = source/fldefs_setup.h; sourceTree = "<group>"; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
- E99747CB0770545100206F68 /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- E9974803077054CD00206F68 /* vecLib.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- E997483D0770570800206F68 /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- E997483E0770570800206F68 /* vecLib.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- E9974884077058C100206F68 /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- E99749BF07705D5200206F68 /* vecLib.framework in Frameworks */,
- E99748D107705BAF00206F68 /* ApplicationServices.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- E99749BC07705CC400206F68 /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- E99749BD07705CC400206F68 /* vecLib.framework in Frameworks */,
- E9974E160770780D00206F68 /* MaxAPI.framework in Frameworks */,
- E9974E170770780D00206F68 /* MaxAudioAPI.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- E9974BC207705F1400206F68 /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- E9974BC307705F1400206F68 /* vecLib.framework in Frameworks */,
- E9974E180770780D00206F68 /* MaxAPI.framework in Frameworks */,
- E9974E190770780D00206F68 /* MaxAudioAPI.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- E9974BF707705F4F00206F68 /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- E9974BF807705F4F00206F68 /* vecLib.framework in Frameworks */,
- E9974BF907705F4F00206F68 /* ApplicationServices.framework in Frameworks */,
- E9974E1A0770780D00206F68 /* MaxAPI.framework in Frameworks */,
- E9974E1B0770780D00206F68 /* MaxAudioAPI.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
- 034768DDFF38A45A11DB9C8B /* Products */ = {
- isa = PBXGroup;
- children = (
- E99747CD0770545100206F68 /* libflext_s.a */,
- E997483F0770570800206F68 /* libflext_t.a */,
- E9974886077058C100206F68 /* flext.dylib */,
- E99749BE07705CC400206F68 /* libflext-max_s.a */,
- E9974BC407705F1400206F68 /* libflext-max_t.a */,
- E9974BFA07705F4F00206F68 /* flext-max.dylib */,
- );
- name = Products;
- sourceTree = "<group>";
- };
- 0867D691FE84028FC02AAC07 /* flext-PB */ = {
- isa = PBXGroup;
- children = (
- F55CEDB50383E50D01A80AC9 /* Headers */,
- 08FB77ACFE841707C02AAC07 /* Source */,
- 089C1665FE841158C02AAC07 /* Resources */,
- 0867D69AFE84028FC02AAC07 /* External Frameworks and Libraries */,
- 034768DDFF38A45A11DB9C8B /* Products */,
- );
- name = "flext-PB";
- sourceTree = "<group>";
- };
- 0867D69AFE84028FC02AAC07 /* External Frameworks and Libraries */ = {
- isa = PBXGroup;
- children = (
- E9974E140770780D00206F68 /* MaxAPI.framework */,
- E9974E150770780D00206F68 /* MaxAudioAPI.framework */,
- E99748D007705BAF00206F68 /* ApplicationServices.framework */,
- E9974802077054CD00206F68 /* vecLib.framework */,
- );
- name = "External Frameworks and Libraries";
- sourceTree = "<group>";
- };
- 089C1665FE841158C02AAC07 /* Resources */ = {
- isa = PBXGroup;
- children = (
- 089C1666FE841158C02AAC07 /* InfoPlist.strings */,
- );
- name = Resources;
- sourceTree = "<group>";
- };
- 08FB77ACFE841707C02AAC07 /* Source */ = {
- isa = PBXGroup;
- children = (
- F55CED7B0383E50201A80AC9 /* flatom_pr.cpp */,
- F55CED7C0383E50201A80AC9 /* flatom.cpp */,
- F55CED7D0383E50201A80AC9 /* flattr.cpp */,
- F55CED7E0383E50201A80AC9 /* flbase.cpp */,
- F55CED800383E50201A80AC9 /* flbuf.cpp */,
- F55CED880383E50201A80AC9 /* fldsp.cpp */,
- F55CED8A0383E50201A80AC9 /* flext.cpp */,
- F55CED8D0383E50201A80AC9 /* fllib.cpp */,
- F55CED8F0383E50201A80AC9 /* flout.cpp */,
- F55CED900383E50201A80AC9 /* flsndobj.cpp */,
- F55CED930383E50201A80AC9 /* flsupport.cpp */,
- F55CED950383E50201A80AC9 /* flthr.cpp */,
- F55CED960383E50201A80AC9 /* flutil.cpp */,
- F55CED970383E50201A80AC9 /* flxlet.cpp */,
- F504A66C03CE39F501A80AC9 /* flatom_part.cpp */,
- F504A66D03CE39F501A80AC9 /* flitem.cpp */,
- F504A66E03CE39F501A80AC9 /* flmeth.cpp */,
- F504A66F03CE39F501A80AC9 /* flmsg.cpp */,
- F504A67103CE39F501A80AC9 /* flproxy.cpp */,
- F504A67203CE39F501A80AC9 /* flqueue.cpp */,
- F504A67303CE39F501A80AC9 /* flstk.cpp */,
- F5B1FAC8041191190179CFEF /* fltimer.cpp */,
- F598D263044CC4A001A80AC9 /* flbind.cpp */,
- F598D264044CC4A001A80AC9 /* flsimd.cpp */,
- E9BDCC4104F4D7C1008929A0 /* flattr_ed.cpp */,
- );
- name = Source;
- sourceTree = SOURCE_ROOT;
- };
- F55CEDB50383E50D01A80AC9 /* Headers */ = {
- isa = PBXGroup;
- children = (
- F5CBC61C04757BDA01A0C81C /* Defs */,
- F504A67003CE39F501A80AC9 /* flprefix.h */,
- F55CED7F0383E50201A80AC9 /* flbase.h */,
- F55CED810383E50201A80AC9 /* flclass.h */,
- F55CED870383E50201A80AC9 /* fldoxygen.h */,
- F55CED890383E50201A80AC9 /* fldsp.h */,
- F55CED8B0383E50201A80AC9 /* flext.h */,
- F55CED8C0383E50201A80AC9 /* flinternal.h */,
- F55CED8E0383E50201A80AC9 /* flmspbuffer.h */,
- F55CED910383E50201A80AC9 /* flsndobj.h */,
- F55CED920383E50201A80AC9 /* flstdc.h */,
- F55CED940383E50201A80AC9 /* flsupport.h */,
- F504A67403CE39F501A80AC9 /* flstk.h */,
- );
- name = Headers;
- sourceTree = SOURCE_ROOT;
- };
- F5CBC61C04757BDA01A0C81C /* Defs */ = {
- isa = PBXGroup;
- children = (
- F55CED860383E50201A80AC9 /* fldefs.h */,
- F5CBC5B804757BC801A0C81C /* fldefs_attradd.h */,
- F5CBC5B904757BC801A0C81C /* fldefs_attrcb.h */,
- F5CBC5BA04757BC801A0C81C /* fldefs_attrvar.h */,
- F5CBC5BB04757BC801A0C81C /* fldefs_hdr.h */,
- F5CBC5BC04757BC801A0C81C /* fldefs_methadd.h */,
- F5CBC5BD04757BC801A0C81C /* fldefs_methbind.h */,
- F5CBC5BE04757BC801A0C81C /* fldefs_methcall.h */,
- F5CBC5BF04757BC801A0C81C /* fldefs_methcb.h */,
- F5CBC5C004757BC801A0C81C /* fldefs_meththr.h */,
- F5CBC5C104757BC801A0C81C /* fldefs_setup.h */,
- );
- name = Defs;
- sourceTree = "<group>";
- };
-/* End PBXGroup section */
-
-/* Begin PBXHeadersBuildPhase section */
- E99747C90770545100206F68 /* Headers */ = {
- isa = PBXHeadersBuildPhase;
- buildActionMask = 2147483647;
- files = (
- E99747FA0770548F00206F68 /* flprefix.h in Headers */,
- E99747E80770548F00206F68 /* flbase.h in Headers */,
- E99747E90770548F00206F68 /* flclass.h in Headers */,
- E99747F50770548F00206F68 /* fldoxygen.h in Headers */,
- E99747F60770548F00206F68 /* fldsp.h in Headers */,
- E99747F70770548F00206F68 /* flext.h in Headers */,
- E99747F80770548F00206F68 /* flinternal.h in Headers */,
- E99747F90770548F00206F68 /* flmspbuffer.h in Headers */,
- E99747FC0770548F00206F68 /* flstdc.h in Headers */,
- E99747FE0770548F00206F68 /* flsupport.h in Headers */,
- E99747EA0770548F00206F68 /* fldefs.h in Headers */,
- E99747EB0770548F00206F68 /* fldefs_attradd.h in Headers */,
- E99747EC0770548F00206F68 /* fldefs_attrcb.h in Headers */,
- E99747ED0770548F00206F68 /* fldefs_attrvar.h in Headers */,
- E99747EE0770548F00206F68 /* fldefs_hdr.h in Headers */,
- E99747EF0770548F00206F68 /* fldefs_methadd.h in Headers */,
- E99747F00770548F00206F68 /* fldefs_methbind.h in Headers */,
- E99747F10770548F00206F68 /* fldefs_methcall.h in Headers */,
- E99747F20770548F00206F68 /* fldefs_methcb.h in Headers */,
- E99747F30770548F00206F68 /* fldefs_meththr.h in Headers */,
- E99747F40770548F00206F68 /* fldefs_setup.h in Headers */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- E997480E0770570800206F68 /* Headers */ = {
- isa = PBXHeadersBuildPhase;
- buildActionMask = 2147483647;
- files = (
- E997480F0770570800206F68 /* flprefix.h in Headers */,
- E99748100770570800206F68 /* flbase.h in Headers */,
- E99748110770570800206F68 /* flclass.h in Headers */,
- E99748120770570800206F68 /* fldoxygen.h in Headers */,
- E99748130770570800206F68 /* fldsp.h in Headers */,
- E99748140770570800206F68 /* flext.h in Headers */,
- E99748150770570800206F68 /* flinternal.h in Headers */,
- E99748160770570800206F68 /* flmspbuffer.h in Headers */,
- E99748170770570800206F68 /* flstdc.h in Headers */,
- E99748180770570800206F68 /* flsupport.h in Headers */,
- E99748190770570800206F68 /* fldefs.h in Headers */,
- E997481A0770570800206F68 /* fldefs_attradd.h in Headers */,
- E997481B0770570800206F68 /* fldefs_attrcb.h in Headers */,
- E997481C0770570800206F68 /* fldefs_attrvar.h in Headers */,
- E997481D0770570800206F68 /* fldefs_hdr.h in Headers */,
- E997481E0770570800206F68 /* fldefs_methadd.h in Headers */,
- E997481F0770570800206F68 /* fldefs_methbind.h in Headers */,
- E99748200770570800206F68 /* fldefs_methcall.h in Headers */,
- E99748210770570800206F68 /* fldefs_methcb.h in Headers */,
- E99748220770570800206F68 /* fldefs_meththr.h in Headers */,
- E99748230770570800206F68 /* fldefs_setup.h in Headers */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- E9974882077058C100206F68 /* Headers */ = {
- isa = PBXHeadersBuildPhase;
- buildActionMask = 2147483647;
- files = (
- E99748B00770595E00206F68 /* fldefs.h in Headers */,
- E99748B10770595E00206F68 /* fldefs_attradd.h in Headers */,
- E99748B20770595E00206F68 /* fldefs_attrcb.h in Headers */,
- E99748B30770595E00206F68 /* fldefs_attrvar.h in Headers */,
- E99748B40770595E00206F68 /* fldefs_hdr.h in Headers */,
- E99748B50770595E00206F68 /* fldefs_methadd.h in Headers */,
- E99748B60770595E00206F68 /* fldefs_methbind.h in Headers */,
- E99748B70770595E00206F68 /* fldefs_methcall.h in Headers */,
- E99748B80770595E00206F68 /* fldefs_methcb.h in Headers */,
- E99748B90770595E00206F68 /* fldefs_meththr.h in Headers */,
- E99748BA0770595E00206F68 /* fldefs_setup.h in Headers */,
- E99748A40770595500206F68 /* flprefix.h in Headers */,
- E99748A50770595500206F68 /* flbase.h in Headers */,
- E99748A60770595500206F68 /* flclass.h in Headers */,
- E99748A70770595500206F68 /* fldoxygen.h in Headers */,
- E99748A80770595500206F68 /* fldsp.h in Headers */,
- E99748A90770595600206F68 /* flext.h in Headers */,
- E99748AA0770595600206F68 /* flinternal.h in Headers */,
- E99748AB0770595600206F68 /* flmspbuffer.h in Headers */,
- E99748AC0770595600206F68 /* flsndobj.h in Headers */,
- E99748AD0770595600206F68 /* flstdc.h in Headers */,
- E99748AE0770595600206F68 /* flsupport.h in Headers */,
- E99748AF0770595600206F68 /* flstk.h in Headers */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- E997498D07705CC400206F68 /* Headers */ = {
- isa = PBXHeadersBuildPhase;
- buildActionMask = 2147483647;
- files = (
- E997498E07705CC400206F68 /* flprefix.h in Headers */,
- E997498F07705CC400206F68 /* flbase.h in Headers */,
- E997499007705CC400206F68 /* flclass.h in Headers */,
- E997499107705CC400206F68 /* fldoxygen.h in Headers */,
- E997499207705CC400206F68 /* fldsp.h in Headers */,
- E997499307705CC400206F68 /* flext.h in Headers */,
- E997499407705CC400206F68 /* flinternal.h in Headers */,
- E997499507705CC400206F68 /* flmspbuffer.h in Headers */,
- E997499607705CC400206F68 /* flstdc.h in Headers */,
- E997499707705CC400206F68 /* flsupport.h in Headers */,
- E997499807705CC400206F68 /* fldefs.h in Headers */,
- E997499907705CC400206F68 /* fldefs_attradd.h in Headers */,
- E997499A07705CC400206F68 /* fldefs_attrcb.h in Headers */,
- E997499B07705CC400206F68 /* fldefs_attrvar.h in Headers */,
- E997499C07705CC400206F68 /* fldefs_hdr.h in Headers */,
- E997499D07705CC400206F68 /* fldefs_methadd.h in Headers */,
- E997499E07705CC400206F68 /* fldefs_methbind.h in Headers */,
- E997499F07705CC400206F68 /* fldefs_methcall.h in Headers */,
- E99749A007705CC400206F68 /* fldefs_methcb.h in Headers */,
- E99749A107705CC400206F68 /* fldefs_meththr.h in Headers */,
- E99749A207705CC400206F68 /* fldefs_setup.h in Headers */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- E9974B9307705F1400206F68 /* Headers */ = {
- isa = PBXHeadersBuildPhase;
- buildActionMask = 2147483647;
- files = (
- E9974B9407705F1400206F68 /* flprefix.h in Headers */,
- E9974B9507705F1400206F68 /* flbase.h in Headers */,
- E9974B9607705F1400206F68 /* flclass.h in Headers */,
- E9974B9707705F1400206F68 /* fldoxygen.h in Headers */,
- E9974B9807705F1400206F68 /* fldsp.h in Headers */,
- E9974B9907705F1400206F68 /* flext.h in Headers */,
- E9974B9A07705F1400206F68 /* flinternal.h in Headers */,
- E9974B9B07705F1400206F68 /* flmspbuffer.h in Headers */,
- E9974B9C07705F1400206F68 /* flstdc.h in Headers */,
- E9974B9D07705F1400206F68 /* flsupport.h in Headers */,
- E9974B9E07705F1400206F68 /* fldefs.h in Headers */,
- E9974B9F07705F1400206F68 /* fldefs_attradd.h in Headers */,
- E9974BA007705F1400206F68 /* fldefs_attrcb.h in Headers */,
- E9974BA107705F1400206F68 /* fldefs_attrvar.h in Headers */,
- E9974BA207705F1400206F68 /* fldefs_hdr.h in Headers */,
- E9974BA307705F1400206F68 /* fldefs_methadd.h in Headers */,
- E9974BA407705F1400206F68 /* fldefs_methbind.h in Headers */,
- E9974BA507705F1400206F68 /* fldefs_methcall.h in Headers */,
- E9974BA607705F1400206F68 /* fldefs_methcb.h in Headers */,
- E9974BA707705F1400206F68 /* fldefs_meththr.h in Headers */,
- E9974BA807705F1400206F68 /* fldefs_setup.h in Headers */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- E9974BC607705F4F00206F68 /* Headers */ = {
- isa = PBXHeadersBuildPhase;
- buildActionMask = 2147483647;
- files = (
- E9974BC707705F4F00206F68 /* fldefs.h in Headers */,
- E9974BC807705F4F00206F68 /* fldefs_attradd.h in Headers */,
- E9974BC907705F4F00206F68 /* fldefs_attrcb.h in Headers */,
- E9974BCA07705F4F00206F68 /* fldefs_attrvar.h in Headers */,
- E9974BCB07705F4F00206F68 /* fldefs_hdr.h in Headers */,
- E9974BCC07705F4F00206F68 /* fldefs_methadd.h in Headers */,
- E9974BCD07705F4F00206F68 /* fldefs_methbind.h in Headers */,
- E9974BCE07705F4F00206F68 /* fldefs_methcall.h in Headers */,
- E9974BCF07705F4F00206F68 /* fldefs_methcb.h in Headers */,
- E9974BD007705F4F00206F68 /* fldefs_meththr.h in Headers */,
- E9974BD107705F4F00206F68 /* fldefs_setup.h in Headers */,
- E9974BD207705F4F00206F68 /* flprefix.h in Headers */,
- E9974BD307705F4F00206F68 /* flbase.h in Headers */,
- E9974BD407705F4F00206F68 /* flclass.h in Headers */,
- E9974BD507705F4F00206F68 /* fldoxygen.h in Headers */,
- E9974BD607705F4F00206F68 /* fldsp.h in Headers */,
- E9974BD707705F4F00206F68 /* flext.h in Headers */,
- E9974BD807705F4F00206F68 /* flinternal.h in Headers */,
- E9974BD907705F4F00206F68 /* flmspbuffer.h in Headers */,
- E9974BDA07705F4F00206F68 /* flsndobj.h in Headers */,
- E9974BDB07705F4F00206F68 /* flstdc.h in Headers */,
- E9974BDC07705F4F00206F68 /* flsupport.h in Headers */,
- E9974BDD07705F4F00206F68 /* flstk.h in Headers */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXHeadersBuildPhase section */
-
-/* Begin PBXNativeTarget section */
- E99747CC0770545100206F68 /* PD static single */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = E9A5BCA10A3381C400AD9F03 /* Build configuration list for PBXNativeTarget "PD static single" */;
- buildPhases = (
- E99747C90770545100206F68 /* Headers */,
- E99747CA0770545100206F68 /* Sources */,
- E99747CB0770545100206F68 /* Frameworks */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = "PD static single";
- productName = "PD static single";
- productReference = E99747CD0770545100206F68 /* libflext_s.a */;
- productType = "com.apple.product-type.library.static";
- };
- E997480D0770570800206F68 /* PD static multi */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = E9A5BCA50A3381C400AD9F03 /* Build configuration list for PBXNativeTarget "PD static multi" */;
- buildPhases = (
- E997480E0770570800206F68 /* Headers */,
- E99748240770570800206F68 /* Sources */,
- E997483D0770570800206F68 /* Frameworks */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = "PD static multi";
- productName = "PD static single";
- productReference = E997483F0770570800206F68 /* libflext_t.a */;
- productType = "com.apple.product-type.library.static";
- };
- E9974885077058C100206F68 /* PD shared */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = E9A5BCA90A3381C400AD9F03 /* Build configuration list for PBXNativeTarget "PD shared" */;
- buildPhases = (
- E9974882077058C100206F68 /* Headers */,
- E9974883077058C100206F68 /* Sources */,
- E9974884077058C100206F68 /* Frameworks */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = "PD shared";
- productName = "PD shared";
- productReference = E9974886077058C100206F68 /* flext.dylib */;
- productType = "com.apple.product-type.library.dynamic";
- };
- E997498C07705CC400206F68 /* Max static single */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = E9A5BCAD0A3381C400AD9F03 /* Build configuration list for PBXNativeTarget "Max static single" */;
- buildPhases = (
- E997498D07705CC400206F68 /* Headers */,
- E99749A307705CC400206F68 /* Sources */,
- E99749BC07705CC400206F68 /* Frameworks */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = "Max static single";
- productName = "PD static single";
- productReference = E99749BE07705CC400206F68 /* libflext-max_s.a */;
- productType = "com.apple.product-type.library.static";
- };
- E9974B9207705F1400206F68 /* Max static multi */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = E9A5BCB10A3381C400AD9F03 /* Build configuration list for PBXNativeTarget "Max static multi" */;
- buildPhases = (
- E9974B9307705F1400206F68 /* Headers */,
- E9974BA907705F1400206F68 /* Sources */,
- E9974BC207705F1400206F68 /* Frameworks */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = "Max static multi";
- productName = "PD static single";
- productReference = E9974BC407705F1400206F68 /* libflext-max_t.a */;
- productType = "com.apple.product-type.library.static";
- };
- E9974BC507705F4F00206F68 /* Max shared */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = E9A5BCB50A3381C400AD9F03 /* Build configuration list for PBXNativeTarget "Max shared" */;
- buildPhases = (
- E9974BC607705F4F00206F68 /* Headers */,
- E9974BDE07705F4F00206F68 /* Sources */,
- E9974BF707705F4F00206F68 /* Frameworks */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = "Max shared";
- productName = "PD shared";
- productReference = E9974BFA07705F4F00206F68 /* flext-max.dylib */;
- productType = "com.apple.product-type.library.dynamic";
- };
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
- 0867D690FE84028FC02AAC07 /* Project object */ = {
- isa = PBXProject;
- buildConfigurationList = E9A5BCB90A3381C400AD9F03 /* Build configuration list for PBXProject "flext" */;
- hasScannedForEncodings = 1;
- mainGroup = 0867D691FE84028FC02AAC07 /* flext-PB */;
- productRefGroup = 034768DDFF38A45A11DB9C8B /* Products */;
- projectDirPath = "";
- targets = (
- E99747CC0770545100206F68 /* PD static single */,
- E997480D0770570800206F68 /* PD static multi */,
- E9974885077058C100206F68 /* PD shared */,
- E997498C07705CC400206F68 /* Max static single */,
- E9974B9207705F1400206F68 /* Max static multi */,
- E9974BC507705F4F00206F68 /* Max shared */,
- );
- };
-/* End PBXProject section */
-
-/* Begin PBXSourcesBuildPhase section */
- E99747CA0770545100206F68 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- E99747CE0770548700206F68 /* flatom.cpp in Sources */,
- E99747D00770548700206F68 /* flatom_part.cpp in Sources */,
- E99747D10770548700206F68 /* flatom_pr.cpp in Sources */,
- E99747D20770548700206F68 /* flattr.cpp in Sources */,
- E99747D30770548700206F68 /* flattr_ed.cpp in Sources */,
- E99747D40770548700206F68 /* flbase.cpp in Sources */,
- E99747D50770548700206F68 /* flbind.cpp in Sources */,
- E99747D60770548700206F68 /* flbuf.cpp in Sources */,
- E99747D70770548700206F68 /* fldsp.cpp in Sources */,
- E99747D80770548700206F68 /* flext.cpp in Sources */,
- E99747D90770548700206F68 /* flitem.cpp in Sources */,
- E99747DA0770548700206F68 /* fllib.cpp in Sources */,
- E99747DB0770548700206F68 /* flmeth.cpp in Sources */,
- E99747DC0770548700206F68 /* flmsg.cpp in Sources */,
- E99747DD0770548700206F68 /* flout.cpp in Sources */,
- E99747DE0770548700206F68 /* flproxy.cpp in Sources */,
- E99747DF0770548700206F68 /* flqueue.cpp in Sources */,
- E99747E00770548700206F68 /* flsimd.cpp in Sources */,
- E99747E30770548700206F68 /* flsupport.cpp in Sources */,
- E99747E40770548700206F68 /* flthr.cpp in Sources */,
- E99747E50770548700206F68 /* fltimer.cpp in Sources */,
- E99747E60770548700206F68 /* flutil.cpp in Sources */,
- E99747E70770548700206F68 /* flxlet.cpp in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- E99748240770570800206F68 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- E99748250770570800206F68 /* flatom.cpp in Sources */,
- E99748270770570800206F68 /* flatom_part.cpp in Sources */,
- E99748280770570800206F68 /* flatom_pr.cpp in Sources */,
- E99748290770570800206F68 /* flattr.cpp in Sources */,
- E997482A0770570800206F68 /* flattr_ed.cpp in Sources */,
- E997482B0770570800206F68 /* flbase.cpp in Sources */,
- E997482C0770570800206F68 /* flbind.cpp in Sources */,
- E997482D0770570800206F68 /* flbuf.cpp in Sources */,
- E997482E0770570800206F68 /* fldsp.cpp in Sources */,
- E997482F0770570800206F68 /* flext.cpp in Sources */,
- E99748300770570800206F68 /* flitem.cpp in Sources */,
- E99748310770570800206F68 /* fllib.cpp in Sources */,
- E99748320770570800206F68 /* flmeth.cpp in Sources */,
- E99748330770570800206F68 /* flmsg.cpp in Sources */,
- E99748340770570800206F68 /* flout.cpp in Sources */,
- E99748350770570800206F68 /* flproxy.cpp in Sources */,
- E99748360770570800206F68 /* flqueue.cpp in Sources */,
- E99748370770570800206F68 /* flsimd.cpp in Sources */,
- E99748380770570800206F68 /* flsupport.cpp in Sources */,
- E99748390770570800206F68 /* flthr.cpp in Sources */,
- E997483A0770570800206F68 /* fltimer.cpp in Sources */,
- E997483B0770570800206F68 /* flutil.cpp in Sources */,
- E997483C0770570800206F68 /* flxlet.cpp in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- E9974883077058C100206F68 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- E997488C0770593C00206F68 /* flatom.cpp in Sources */,
- E997488E0770593C00206F68 /* flatom_part.cpp in Sources */,
- E997488F0770593C00206F68 /* flatom_pr.cpp in Sources */,
- E99748900770593C00206F68 /* flattr.cpp in Sources */,
- E99748910770593C00206F68 /* flattr_ed.cpp in Sources */,
- E99748920770593C00206F68 /* flbase.cpp in Sources */,
- E99748930770593C00206F68 /* flbind.cpp in Sources */,
- E99748940770593C00206F68 /* flbuf.cpp in Sources */,
- E99748950770593C00206F68 /* fldsp.cpp in Sources */,
- E99748960770593C00206F68 /* flext.cpp in Sources */,
- E99748970770593C00206F68 /* flitem.cpp in Sources */,
- E99748980770593C00206F68 /* fllib.cpp in Sources */,
- E99748990770593C00206F68 /* flmeth.cpp in Sources */,
- E997489A0770593C00206F68 /* flmsg.cpp in Sources */,
- E997489B0770593C00206F68 /* flout.cpp in Sources */,
- E997489C0770593C00206F68 /* flproxy.cpp in Sources */,
- E997489D0770593C00206F68 /* flqueue.cpp in Sources */,
- E997489E0770593C00206F68 /* flsimd.cpp in Sources */,
- E997489F0770593C00206F68 /* flsupport.cpp in Sources */,
- E99748A00770593C00206F68 /* flthr.cpp in Sources */,
- E99748A10770593C00206F68 /* fltimer.cpp in Sources */,
- E99748A20770593C00206F68 /* flutil.cpp in Sources */,
- E99748A30770593C00206F68 /* flxlet.cpp in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- E99749A307705CC400206F68 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- E99749A407705CC400206F68 /* flatom.cpp in Sources */,
- E99749A607705CC400206F68 /* flatom_part.cpp in Sources */,
- E99749A707705CC400206F68 /* flatom_pr.cpp in Sources */,
- E99749A807705CC400206F68 /* flattr.cpp in Sources */,
- E99749A907705CC400206F68 /* flattr_ed.cpp in Sources */,
- E99749AA07705CC400206F68 /* flbase.cpp in Sources */,
- E99749AB07705CC400206F68 /* flbind.cpp in Sources */,
- E99749AC07705CC400206F68 /* flbuf.cpp in Sources */,
- E99749AD07705CC400206F68 /* fldsp.cpp in Sources */,
- E99749AE07705CC400206F68 /* flext.cpp in Sources */,
- E99749AF07705CC400206F68 /* flitem.cpp in Sources */,
- E99749B007705CC400206F68 /* fllib.cpp in Sources */,
- E99749B107705CC400206F68 /* flmeth.cpp in Sources */,
- E99749B207705CC400206F68 /* flmsg.cpp in Sources */,
- E99749B307705CC400206F68 /* flout.cpp in Sources */,
- E99749B407705CC400206F68 /* flproxy.cpp in Sources */,
- E99749B507705CC400206F68 /* flqueue.cpp in Sources */,
- E99749B607705CC400206F68 /* flsimd.cpp in Sources */,
- E99749B707705CC400206F68 /* flsupport.cpp in Sources */,
- E99749B807705CC400206F68 /* flthr.cpp in Sources */,
- E99749B907705CC400206F68 /* fltimer.cpp in Sources */,
- E99749BA07705CC400206F68 /* flutil.cpp in Sources */,
- E99749BB07705CC400206F68 /* flxlet.cpp in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- E9974BA907705F1400206F68 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- E9974BAA07705F1400206F68 /* flatom.cpp in Sources */,
- E9974BAC07705F1400206F68 /* flatom_part.cpp in Sources */,
- E9974BAD07705F1400206F68 /* flatom_pr.cpp in Sources */,
- E9974BAE07705F1400206F68 /* flattr.cpp in Sources */,
- E9974BAF07705F1400206F68 /* flattr_ed.cpp in Sources */,
- E9974BB007705F1400206F68 /* flbase.cpp in Sources */,
- E9974BB107705F1400206F68 /* flbind.cpp in Sources */,
- E9974BB207705F1400206F68 /* flbuf.cpp in Sources */,
- E9974BB307705F1400206F68 /* fldsp.cpp in Sources */,
- E9974BB407705F1400206F68 /* flext.cpp in Sources */,
- E9974BB507705F1400206F68 /* flitem.cpp in Sources */,
- E9974BB607705F1400206F68 /* fllib.cpp in Sources */,
- E9974BB707705F1400206F68 /* flmeth.cpp in Sources */,
- E9974BB807705F1400206F68 /* flmsg.cpp in Sources */,
- E9974BB907705F1400206F68 /* flout.cpp in Sources */,
- E9974BBA07705F1400206F68 /* flproxy.cpp in Sources */,
- E9974BBB07705F1400206F68 /* flqueue.cpp in Sources */,
- E9974BBC07705F1400206F68 /* flsimd.cpp in Sources */,
- E9974BBD07705F1400206F68 /* flsupport.cpp in Sources */,
- E9974BBE07705F1400206F68 /* flthr.cpp in Sources */,
- E9974BBF07705F1400206F68 /* fltimer.cpp in Sources */,
- E9974BC007705F1400206F68 /* flutil.cpp in Sources */,
- E9974BC107705F1400206F68 /* flxlet.cpp in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- E9974BDE07705F4F00206F68 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- E9974BDF07705F4F00206F68 /* flatom.cpp in Sources */,
- E9974BE107705F4F00206F68 /* flatom_part.cpp in Sources */,
- E9974BE207705F4F00206F68 /* flatom_pr.cpp in Sources */,
- E9974BE307705F4F00206F68 /* flattr.cpp in Sources */,
- E9974BE407705F4F00206F68 /* flattr_ed.cpp in Sources */,
- E9974BE507705F4F00206F68 /* flbase.cpp in Sources */,
- E9974BE607705F4F00206F68 /* flbind.cpp in Sources */,
- E9974BE707705F4F00206F68 /* flbuf.cpp in Sources */,
- E9974BE807705F4F00206F68 /* fldsp.cpp in Sources */,
- E9974BE907705F4F00206F68 /* flext.cpp in Sources */,
- E9974BEA07705F4F00206F68 /* flitem.cpp in Sources */,
- E9974BEB07705F4F00206F68 /* fllib.cpp in Sources */,
- E9974BEC07705F4F00206F68 /* flmeth.cpp in Sources */,
- E9974BED07705F4F00206F68 /* flmsg.cpp in Sources */,
- E9974BEE07705F4F00206F68 /* flout.cpp in Sources */,
- E9974BEF07705F4F00206F68 /* flproxy.cpp in Sources */,
- E9974BF007705F4F00206F68 /* flqueue.cpp in Sources */,
- E9974BF107705F4F00206F68 /* flsimd.cpp in Sources */,
- E9974BF207705F4F00206F68 /* flsupport.cpp in Sources */,
- E9974BF307705F4F00206F68 /* flthr.cpp in Sources */,
- E9974BF407705F4F00206F68 /* fltimer.cpp in Sources */,
- E9974BF507705F4F00206F68 /* flutil.cpp in Sources */,
- E9974BF607705F4F00206F68 /* flxlet.cpp in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXSourcesBuildPhase section */
-
-/* Begin PBXVariantGroup section */
- 089C1666FE841158C02AAC07 /* InfoPlist.strings */ = {
- isa = PBXVariantGroup;
- children = (
- 089C1667FE841158C02AAC07 /* English */,
- );
- name = InfoPlist.strings;
- sourceTree = "<group>";
- };
-/* End PBXVariantGroup section */
-
-/* Begin XCBuildConfiguration section */
- E9A5BCA20A3381C400AD9F03 /* Development */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- COPY_PHASE_STRIP = NO;
- GCC_ALTIVEC_EXTENSIONS = YES;
- GCC_DYNAMIC_NO_PIC = NO;
- GCC_ENABLE_FIX_AND_CONTINUE = YES;
- GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
- GCC_OPTIMIZATION_LEVEL = 0;
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_PREFIX_HEADER = source/flext.h;
- GCC_PREPROCESSOR_DEFINITIONS = (
- "FLEXT_SYS=2",
- FLEXT_DEBUG,
- );
- HEADER_SEARCH_PATHS = "$(PD)/src";
- INSTALL_PATH = /usr/local/lib;
- LIBRARY_STYLE = STATIC;
- OTHER_CFLAGS = "";
- OTHER_REZFLAGS = "";
- PRODUCT_NAME = flext_s;
- SECTORDER_FLAGS = "";
- WARNING_CFLAGS = (
- "-Wmost",
- "-Wno-four-char-constants",
- "-Wno-unknown-pragmas",
- );
- ZERO_LINK = YES;
- };
- name = Development;
- };
- E9A5BCA30A3381C400AD9F03 /* Deployment */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- COPY_PHASE_STRIP = YES;
- GCC_ALTIVEC_EXTENSIONS = YES;
- GCC_ENABLE_FIX_AND_CONTINUE = NO;
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_PREFIX_HEADER = source/flext.h;
- GCC_PREPROCESSOR_DEFINITIONS = "FLEXT_SYS=2";
- HEADER_SEARCH_PATHS = "$(PD)/src";
- INSTALL_PATH = /usr/local/lib;
- LIBRARY_STYLE = STATIC;
- OTHER_CFLAGS = "";
- OTHER_REZFLAGS = "";
- PRODUCT_NAME = flext_s;
- SECTORDER_FLAGS = "";
- WARNING_CFLAGS = (
- "-Wmost",
- "-Wno-four-char-constants",
- "-Wno-unknown-pragmas",
- );
- ZERO_LINK = NO;
- };
- name = Deployment;
- };
- E9A5BCA40A3381C400AD9F03 /* Default */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- GCC_PREPROCESSOR_DEFINITIONS = "FLEXT_SYS=2";
- HEADER_SEARCH_PATHS = "$(PD)/src";
- INSTALL_PATH = /usr/local/lib;
- LIBRARY_STYLE = STATIC;
- OTHER_CFLAGS = "";
- OTHER_REZFLAGS = "";
- PRODUCT_NAME = flext_s;
- SECTORDER_FLAGS = "";
- WARNING_CFLAGS = (
- "-Wmost",
- "-Wno-four-char-constants",
- "-Wno-unknown-pragmas",
- );
- };
- name = Default;
- };
- E9A5BCA60A3381C400AD9F03 /* Development */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- COPY_PHASE_STRIP = NO;
- GCC_ALTIVEC_EXTENSIONS = YES;
- GCC_DYNAMIC_NO_PIC = NO;
- GCC_ENABLE_FIX_AND_CONTINUE = YES;
- GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
- GCC_OPTIMIZATION_LEVEL = 0;
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_PREFIX_HEADER = source/flext.h;
- GCC_PREPROCESSOR_DEFINITIONS = (
- "FLEXT_SYS=2",
- FLEXT_THREADS,
- FLEXT_DEBUG,
- );
- HEADER_SEARCH_PATHS = "$(PD)/src";
- INSTALL_PATH = /usr/local/lib;
- LIBRARY_STYLE = STATIC;
- OTHER_CFLAGS = "";
- OTHER_REZFLAGS = "";
- PRODUCT_NAME = flext_t;
- SECTORDER_FLAGS = "";
- WARNING_CFLAGS = (
- "-Wmost",
- "-Wno-four-char-constants",
- "-Wno-unknown-pragmas",
- );
- ZERO_LINK = YES;
- };
- name = Development;
- };
- E9A5BCA70A3381C400AD9F03 /* Deployment */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- COPY_PHASE_STRIP = YES;
- GCC_ALTIVEC_EXTENSIONS = YES;
- GCC_ENABLE_FIX_AND_CONTINUE = NO;
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_PREFIX_HEADER = source/flext.h;
- GCC_PREPROCESSOR_DEFINITIONS = (
- "FLEXT_SYS=2",
- FLEXT_THREADS,
- );
- HEADER_SEARCH_PATHS = "$(PD)/src";
- INSTALL_PATH = /usr/local/lib;
- LIBRARY_STYLE = STATIC;
- OTHER_CFLAGS = "";
- OTHER_REZFLAGS = "";
- PRODUCT_NAME = flext_t;
- SECTORDER_FLAGS = "";
- WARNING_CFLAGS = (
- "-Wmost",
- "-Wno-four-char-constants",
- "-Wno-unknown-pragmas",
- );
- ZERO_LINK = NO;
- };
- name = Deployment;
- };
- E9A5BCA80A3381C400AD9F03 /* Default */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- GCC_PREPROCESSOR_DEFINITIONS = (
- "FLEXT_SYS=2",
- FLEXT_THREADS,
- );
- HEADER_SEARCH_PATHS = "$(PD)/src";
- INSTALL_PATH = /usr/local/lib;
- LIBRARY_STYLE = STATIC;
- OTHER_CFLAGS = "";
- OTHER_REZFLAGS = "";
- PRODUCT_NAME = flext_t;
- SECTORDER_FLAGS = "";
- WARNING_CFLAGS = (
- "-Wmost",
- "-Wno-four-char-constants",
- "-Wno-unknown-pragmas",
- );
- };
- name = Default;
- };
- E9A5BCAA0A3381C400AD9F03 /* Development */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- COPY_PHASE_STRIP = NO;
- DYLIB_COMPATIBILITY_VERSION = 1;
- DYLIB_CURRENT_VERSION = 1;
- GCC_ALTIVEC_EXTENSIONS = YES;
- GCC_DYNAMIC_NO_PIC = NO;
- GCC_ENABLE_FIX_AND_CONTINUE = YES;
- GCC_FAST_MATH = YES;
- GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
- GCC_OPTIMIZATION_LEVEL = 0;
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_PREFIX_HEADER = source/flext.h;
- GCC_PREPROCESSOR_DEFINITIONS = (
- "FLEXT_SYS=2",
- FLEXT_SHARED,
- FLEXT_DEBUG,
- );
- HEADER_SEARCH_PATHS = "$(PD)/src";
- INSTALL_PATH = /usr/local/lib;
- LIBRARY_STYLE = BUNDLE;
- MACH_O_TYPE = mh_dylib;
- MACOSX_DEPLOYMENT_TARGET = 10.3;
- OTHER_CFLAGS = "";
- OTHER_REZFLAGS = "";
- PREBINDING = YES;
- PRODUCT_NAME = flext;
- SECTORDER_FLAGS = "";
- WARNING_CFLAGS = (
- "-Wmost",
- "-Wno-four-char-constants",
- "-Wno-unknown-pragmas",
- );
- ZERO_LINK = YES;
- };
- name = Development;
- };
- E9A5BCAB0A3381C400AD9F03 /* Deployment */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- COPY_PHASE_STRIP = YES;
- DYLIB_COMPATIBILITY_VERSION = 1;
- DYLIB_CURRENT_VERSION = 1;
- GCC_ALTIVEC_EXTENSIONS = YES;
- GCC_ENABLE_FIX_AND_CONTINUE = NO;
- GCC_FAST_MATH = YES;
- GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_PREFIX_HEADER = source/flext.h;
- GCC_PREPROCESSOR_DEFINITIONS = (
- "FLEXT_SYS=2",
- FLEXT_SHARED,
- );
- HEADER_SEARCH_PATHS = "$(PD)/src";
- INSTALL_PATH = /usr/local/lib;
- LIBRARY_STYLE = BUNDLE;
- MACH_O_TYPE = mh_dylib;
- MACOSX_DEPLOYMENT_TARGET = 10.3;
- OTHER_CFLAGS = "";
- OTHER_REZFLAGS = "";
- PREBINDING = YES;
- PRODUCT_NAME = flext;
- SECTORDER_FLAGS = "";
- WARNING_CFLAGS = (
- "-Wmost",
- "-Wno-four-char-constants",
- "-Wno-unknown-pragmas",
- );
- ZERO_LINK = NO;
- };
- name = Deployment;
- };
- E9A5BCAC0A3381C400AD9F03 /* Default */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- DYLIB_COMPATIBILITY_VERSION = 1;
- DYLIB_CURRENT_VERSION = 1;
- GCC_PREPROCESSOR_DEFINITIONS = (
- "FLEXT_SYS=2",
- FLEXT_SHARED,
- );
- HEADER_SEARCH_PATHS = "$(PD)/src";
- INSTALL_PATH = /usr/local/lib;
- LIBRARY_STYLE = BUNDLE;
- MACH_O_TYPE = mh_bundle;
- OTHER_CFLAGS = "";
- OTHER_LDFLAGS = (
- "-bundle_loader",
- "$(PD)/bin/pd",
- );
- OTHER_REZFLAGS = "";
- PREBINDING = YES;
- PRODUCT_NAME = flext;
- SECTORDER_FLAGS = "";
- WARNING_CFLAGS = (
- "-Wmost",
- "-Wno-four-char-constants",
- "-Wno-unknown-pragmas",
- );
- };
- name = Default;
- };
- E9A5BCAE0A3381C400AD9F03 /* Development */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- COPY_PHASE_STRIP = NO;
- GCC_ALTIVEC_EXTENSIONS = YES;
- GCC_DYNAMIC_NO_PIC = NO;
- GCC_ENABLE_FIX_AND_CONTINUE = YES;
- GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
- GCC_OPTIMIZATION_LEVEL = 0;
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_PREFIX_HEADER = source/flext.h;
- GCC_PREPROCESSOR_DEFINITIONS = (
- "FLEXT_SYS=1",
- FLEXT_DEBUG,
- );
- HEADER_SEARCH_PATHS = (
- "$(Max",
- "SDK)/max-includes",
- "$(Max",
- "SDK)/msp-includes",
- );
- INSTALL_PATH = /usr/local/lib;
- LIBRARY_STYLE = STATIC;
- OTHER_CFLAGS = "";
- OTHER_REZFLAGS = "";
- PRODUCT_NAME = "flext-max_s";
- SECTORDER_FLAGS = "";
- WARNING_CFLAGS = (
- "-Wmost",
- "-Wno-four-char-constants",
- "-Wno-unknown-pragmas",
- );
- ZERO_LINK = YES;
- };
- name = Development;
- };
- E9A5BCAF0A3381C400AD9F03 /* Deployment */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- COPY_PHASE_STRIP = YES;
- GCC_ALTIVEC_EXTENSIONS = YES;
- GCC_ENABLE_FIX_AND_CONTINUE = NO;
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_PREFIX_HEADER = source/flext.h;
- GCC_PREPROCESSOR_DEFINITIONS = "FLEXT_SYS=1";
- HEADER_SEARCH_PATHS = (
- "$(Max",
- "SDK)/max-includes",
- "$(Max",
- "SDK)/msp-includes",
- );
- INSTALL_PATH = /usr/local/lib;
- LIBRARY_STYLE = STATIC;
- OTHER_CFLAGS = "";
- OTHER_REZFLAGS = "";
- PRODUCT_NAME = "flext-max_s";
- SECTORDER_FLAGS = "";
- WARNING_CFLAGS = (
- "-Wmost",
- "-Wno-four-char-constants",
- "-Wno-unknown-pragmas",
- );
- ZERO_LINK = NO;
- };
- name = Deployment;
- };
- E9A5BCB00A3381C400AD9F03 /* Default */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- GCC_PREPROCESSOR_DEFINITIONS = "FLEXT_SYS=1";
- HEADER_SEARCH_PATHS = (
- "$(Max",
- "SDK)/max-includes",
- "$(Max",
- "SDK)/msp-includes",
- );
- INSTALL_PATH = /usr/local/lib;
- LIBRARY_STYLE = STATIC;
- OTHER_CFLAGS = "";
- OTHER_REZFLAGS = "";
- PRODUCT_NAME = "flext-max_s";
- SECTORDER_FLAGS = "";
- WARNING_CFLAGS = (
- "-Wmost",
- "-Wno-four-char-constants",
- "-Wno-unknown-pragmas",
- );
- };
- name = Default;
- };
- E9A5BCB20A3381C400AD9F03 /* Development */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- COPY_PHASE_STRIP = NO;
- GCC_ALTIVEC_EXTENSIONS = YES;
- GCC_DYNAMIC_NO_PIC = NO;
- GCC_ENABLE_FIX_AND_CONTINUE = YES;
- GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
- GCC_OPTIMIZATION_LEVEL = 0;
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_PREFIX_HEADER = source/flext.h;
- GCC_PREPROCESSOR_DEFINITIONS = (
- "FLEXT_SYS=1",
- FLEXT_THREADS,
- FLEXT_DEBUG,
- );
- HEADER_SEARCH_PATHS = (
- "$(Max",
- "SDK)/max-includes",
- "$(Max",
- "SDK)/msp-includes",
- );
- INSTALL_PATH = /usr/local/lib;
- LIBRARY_STYLE = STATIC;
- OTHER_CFLAGS = "";
- OTHER_REZFLAGS = "";
- PRODUCT_NAME = "flext-max_t";
- SECTORDER_FLAGS = "";
- WARNING_CFLAGS = (
- "-Wmost",
- "-Wno-four-char-constants",
- "-Wno-unknown-pragmas",
- );
- ZERO_LINK = YES;
- };
- name = Development;
- };
- E9A5BCB30A3381C400AD9F03 /* Deployment */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- COPY_PHASE_STRIP = YES;
- GCC_ALTIVEC_EXTENSIONS = YES;
- GCC_ENABLE_FIX_AND_CONTINUE = NO;
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_PREFIX_HEADER = source/flext.h;
- GCC_PREPROCESSOR_DEFINITIONS = (
- "FLEXT_SYS=1",
- FLEXT_THREADS,
- );
- HEADER_SEARCH_PATHS = (
- "$(Max",
- "SDK)/max-includes",
- "$(Max",
- "SDK)/msp-includes",
- );
- INSTALL_PATH = /usr/local/lib;
- LIBRARY_STYLE = STATIC;
- OTHER_CFLAGS = "";
- OTHER_REZFLAGS = "";
- PRODUCT_NAME = "flext-max_t";
- SECTORDER_FLAGS = "";
- WARNING_CFLAGS = (
- "-Wmost",
- "-Wno-four-char-constants",
- "-Wno-unknown-pragmas",
- );
- ZERO_LINK = NO;
- };
- name = Deployment;
- };
- E9A5BCB40A3381C400AD9F03 /* Default */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- GCC_PREPROCESSOR_DEFINITIONS = (
- "FLEXT_SYS=1",
- FLEXT_THREADS,
- );
- HEADER_SEARCH_PATHS = (
- "$(Max",
- "SDK)/max-includes",
- "$(Max",
- "SDK)/msp-includes",
- );
- INSTALL_PATH = /usr/local/lib;
- LIBRARY_STYLE = STATIC;
- OTHER_CFLAGS = "";
- OTHER_REZFLAGS = "";
- PRODUCT_NAME = "flext-max_t";
- SECTORDER_FLAGS = "";
- WARNING_CFLAGS = (
- "-Wmost",
- "-Wno-four-char-constants",
- "-Wno-unknown-pragmas",
- );
- };
- name = Default;
- };
- E9A5BCB60A3381C400AD9F03 /* Development */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- COPY_PHASE_STRIP = NO;
- DYLIB_COMPATIBILITY_VERSION = 1;
- DYLIB_CURRENT_VERSION = 1;
- GCC_ALTIVEC_EXTENSIONS = YES;
- GCC_DYNAMIC_NO_PIC = NO;
- GCC_ENABLE_FIX_AND_CONTINUE = YES;
- GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
- GCC_OPTIMIZATION_LEVEL = 0;
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_PREFIX_HEADER = source/flext.h;
- GCC_PREPROCESSOR_DEFINITIONS = (
- "FLEXT_SYS=1",
- FLEXT_SHARED,
- FLEXT_DEBUG,
- );
- HEADER_SEARCH_PATHS = (
- "$(Max",
- "SDK)/max-includes",
- "$(Max",
- "SDK)/msp-includes",
- );
- INSTALL_PATH = /usr/local/lib;
- LIBRARY_SEARCH_PATHS = (
- "$(Max",
- "SDK)/msp-includes",
- "$(Max",
- "SDK)/msp-includes",
- );
- LIBRARY_STYLE = DYNAMIC;
- MACH_O_TYPE = mh_dylib;
- OTHER_CFLAGS = "";
- OTHER_REZFLAGS = "";
- PREBINDING = YES;
- PRODUCT_NAME = "flext-max";
- SECTORDER_FLAGS = "";
- WARNING_CFLAGS = (
- "-Wmost",
- "-Wno-four-char-constants",
- "-Wno-unknown-pragmas",
- );
- ZERO_LINK = YES;
- };
- name = Development;
- };
- E9A5BCB70A3381C400AD9F03 /* Deployment */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- COPY_PHASE_STRIP = YES;
- DYLIB_COMPATIBILITY_VERSION = 1;
- DYLIB_CURRENT_VERSION = 1;
- GCC_ALTIVEC_EXTENSIONS = YES;
- GCC_ENABLE_FIX_AND_CONTINUE = NO;
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_PREFIX_HEADER = source/flext.h;
- GCC_PREPROCESSOR_DEFINITIONS = (
- "FLEXT_SYS=1",
- FLEXT_SHARED,
- );
- HEADER_SEARCH_PATHS = (
- "$(Max",
- "SDK)/max-includes",
- "$(Max",
- "SDK)/msp-includes",
- );
- INSTALL_PATH = /usr/local/lib;
- LIBRARY_SEARCH_PATHS = (
- "$(Max",
- "SDK)/msp-includes",
- "$(Max",
- "SDK)/msp-includes",
- );
- LIBRARY_STYLE = DYNAMIC;
- MACH_O_TYPE = mh_dylib;
- OTHER_CFLAGS = "";
- OTHER_REZFLAGS = "";
- PREBINDING = YES;
- PRODUCT_NAME = "flext-max";
- SECTORDER_FLAGS = "";
- WARNING_CFLAGS = (
- "-Wmost",
- "-Wno-four-char-constants",
- "-Wno-unknown-pragmas",
- );
- ZERO_LINK = NO;
- };
- name = Deployment;
- };
- E9A5BCB80A3381C400AD9F03 /* Default */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- DYLIB_COMPATIBILITY_VERSION = 1;
- DYLIB_CURRENT_VERSION = 1;
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_PREFIX_HEADER = "$(Max SDK)/max-includes/ext_carbon_prefix.h";
- GCC_PREPROCESSOR_DEFINITIONS = (
- "FLEXT_SYS=1",
- FLEXT_SHARED,
- );
- HEADER_SEARCH_PATHS = (
- "$(Max",
- "SDK)/max-includes",
- "$(Max",
- "SDK)/msp-includes",
- );
- INSTALL_PATH = /usr/local/lib;
- LIBRARY_SEARCH_PATHS = (
- "$(Max",
- "SDK)/msp-includes",
- "$(Max",
- "SDK)/msp-includes",
- );
- LIBRARY_STYLE = DYNAMIC;
- MACH_O_TYPE = mh_dylib;
- OTHER_CFLAGS = "";
- OTHER_REZFLAGS = "";
- PREBINDING = YES;
- PRODUCT_NAME = "flext-max";
- SECTORDER_FLAGS = "";
- WARNING_CFLAGS = (
- "-Wmost",
- "-Wno-four-char-constants",
- "-Wno-unknown-pragmas",
- );
- };
- name = Default;
- };
- E9A5BCBA0A3381C400AD9F03 /* Development */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ALWAYS_SEARCH_USER_PATHS = YES;
- };
- name = Development;
- };
- E9A5BCBB0A3381C400AD9F03 /* Deployment */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- };
- name = Deployment;
- };
- E9A5BCBC0A3381C400AD9F03 /* Default */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- };
- name = Default;
- };
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
- E9A5BCA10A3381C400AD9F03 /* Build configuration list for PBXNativeTarget "PD static single" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- E9A5BCA20A3381C400AD9F03 /* Development */,
- E9A5BCA30A3381C400AD9F03 /* Deployment */,
- E9A5BCA40A3381C400AD9F03 /* Default */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Default;
- };
- E9A5BCA50A3381C400AD9F03 /* Build configuration list for PBXNativeTarget "PD static multi" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- E9A5BCA60A3381C400AD9F03 /* Development */,
- E9A5BCA70A3381C400AD9F03 /* Deployment */,
- E9A5BCA80A3381C400AD9F03 /* Default */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Default;
- };
- E9A5BCA90A3381C400AD9F03 /* Build configuration list for PBXNativeTarget "PD shared" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- E9A5BCAA0A3381C400AD9F03 /* Development */,
- E9A5BCAB0A3381C400AD9F03 /* Deployment */,
- E9A5BCAC0A3381C400AD9F03 /* Default */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Default;
- };
- E9A5BCAD0A3381C400AD9F03 /* Build configuration list for PBXNativeTarget "Max static single" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- E9A5BCAE0A3381C400AD9F03 /* Development */,
- E9A5BCAF0A3381C400AD9F03 /* Deployment */,
- E9A5BCB00A3381C400AD9F03 /* Default */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Default;
- };
- E9A5BCB10A3381C400AD9F03 /* Build configuration list for PBXNativeTarget "Max static multi" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- E9A5BCB20A3381C400AD9F03 /* Development */,
- E9A5BCB30A3381C400AD9F03 /* Deployment */,
- E9A5BCB40A3381C400AD9F03 /* Default */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Default;
- };
- E9A5BCB50A3381C400AD9F03 /* Build configuration list for PBXNativeTarget "Max shared" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- E9A5BCB60A3381C400AD9F03 /* Development */,
- E9A5BCB70A3381C400AD9F03 /* Deployment */,
- E9A5BCB80A3381C400AD9F03 /* Default */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Default;
- };
- E9A5BCB90A3381C400AD9F03 /* Build configuration list for PBXProject "flext" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- E9A5BCBA0A3381C400AD9F03 /* Development */,
- E9A5BCBB0A3381C400AD9F03 /* Deployment */,
- E9A5BCBC0A3381C400AD9F03 /* Default */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Default;
- };
-/* End XCConfigurationList section */
- };
- rootObject = 0867D690FE84028FC02AAC07 /* Project object */;
-}
diff --git a/externals/grill/flext/gpl.txt b/externals/grill/flext/gpl.txt
deleted file mode 100644
index 5ea29a7d..00000000
--- a/externals/grill/flext/gpl.txt
+++ /dev/null
@@ -1,346 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) 19yy <name of author>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) 19yy name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Library General
-Public License instead of this License.
-
diff --git a/externals/grill/flext/license.txt b/externals/grill/flext/license.txt
deleted file mode 100644
index 9488294f..00000000
--- a/externals/grill/flext/license.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-flext - C++ layer for Max/MSP and pd (pure data) externals
-Copyright (C) 2001-2005 Thomas Grill
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-In the official flext distribution, the GNU General Public License is
-in the file gpl.txt \ No newline at end of file
diff --git a/externals/grill/flext/notes.txt b/externals/grill/flext/notes.txt
deleted file mode 100644
index 93c71227..00000000
--- a/externals/grill/flext/notes.txt
+++ /dev/null
@@ -1,69 +0,0 @@
-flext - C++ layer for Max/MSP and pd (pure data) externals
-
-Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-----------------------------------------------------------------------------
-
-VARIOUS NOTES:
-
-Platform specific:
-- PD does not allow signal and message to go into the same inlet (except leftmost inlet)
-- PD: with DSP objects all float messages to the leftmost inlet are converted to signal
-
-Restrictions in compatibility mode:
-- Max allows only 9 float/int inlets
-
-Porting to new compilers/platforms:
-- enums must be int-sized!!!
-- compiler must support bool type
-- an STL implementation must exist
-- C++ exceptions and RTTI must be enabled
-
-----------------------------------------------------------------------------
-
-KNOWN BUGS:
-- Some few external libraries have troubles with flext's global new and delete overloadings.
- In these cases one can switch back to the C library memory operators by defining the FLEXT_NOGLOBALNEW macro before
- inclusion of the flext.h header file (e.g. as a -D compiler option)
-
-- PD: floats into the leftmost inlet of DSP objects can't be used as messages
- even if there's no signal inlet at all
-
-----------------------------------------------------------------------------
-
-TODO LIST:
-
-- optimizations for object initialization and messaging
-- speed up message handling (usage of other containers?)
-- SIMD for gcc
-- lock-free code for old AMD 64-bit architectures
-
-- update documentation
-- add log messages for debugging version
-- use PD's t_float and t_int types (or comparable for 32-bit safety)
-
-- add double handlers
-- add signal in/out connection query function
-
-- support for Max qelem style
-
-- flext::post and flext::error should print via a worker thread (and should be unlimited in characters)
-
-- manage running threads individually (stop, isrunning?, priority etc.)
-
-----------------------------------------------------------------------------
-
-TESTS TO DO:
-
-- PD: problems with timed buffer redrawing (takes a lot of cpu time)
-- hard thread termination upon object destruction doesn't seem to work properly -> crash
-- Max rounding bug ... buffer resize could be one sample less!
-
-- PD: figure out what "pointer" messages do and whether they are correctly implemented in flext
-
-- Max buffer~ resize: flext_base::buffer::Frames(): must we use buffer or system sample rate?
-
-- check whether m_dsp gets called upon deletion of a used buffer (PD and MaxMSP may behave differently).
- -> PD does call m_dsp, Max/MSP does not
diff --git a/externals/grill/flext/package.txt b/externals/grill/flext/package.txt
deleted file mode 100644
index c4b2d9a9..00000000
--- a/externals/grill/flext/package.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-#
-# flext - C++ layer for Max/MSP and pd (pure data) externals
-#
-# Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org)
-# For information on usage and redistribution, and for a DISCLAIMER OF ALL
-# WARRANTIES, see the file, "license.txt," in this distribution.
-#
-# more information on http://grrrr.org/ext
-# ------------------------------------------------------------------------
-#
-# This file contains information for the building process
-#
-# DO NOT EDIT!!
-#
-# ------------------------------------------------------------------------
-
-NAME=flext
-
-BUILDCLASS=flext
-BUILDMODE=all
-BUILDTYPE=all
-
-BUILDDIR=build
-
-SRCDIR=source
-
-PRECOMPILE=flext.h
-
-SRCS= \
- flbase.cpp flext.cpp flbuf.cpp fldsp.cpp fllib.cpp \
- flxlet.cpp flattr.cpp flattr_ed.cpp flsupport.cpp \
- flutil.cpp flatom.cpp flatom_pr.cpp flthr.cpp fltimer.cpp flsimd.cpp flout.cpp \
- flatom_part.cpp flitem.cpp flmeth.cpp flmsg.cpp \
- flproxy.cpp flqueue.cpp flbind.cpp flmap.cpp
-HDRS= \
- flext.h flprefix.h flstdc.h flinternal.h flfeatures.h \
- flbase.h flclass.h flsupport.h fldsp.h \
- flmap.h flcontainers.h \
- fldefs.h fldefs_hdr.h fldefs_setup.h \
- fldefs_methcb.h fldefs_meththr.h fldefs_methadd.h fldefs_methbind.h fldefs_methcall.h \
- fldefs_attrcb.h fldefs_attrvar.h fldefs_attradd.h
-
-
-SRCS_SNDOBJ=flsndobj.cpp
-HDRS_SNDOBJ=flsndobj.h
-
-SRCS_STK=flstk.cpp
-HDRS_STK=flstk.h
diff --git a/externals/grill/flext/readme.txt b/externals/grill/flext/readme.txt
deleted file mode 100644
index 30d55aba..00000000
--- a/externals/grill/flext/readme.txt
+++ /dev/null
@@ -1,91 +0,0 @@
-flext - C++ layer for Max/MSP and pd (pure data) externals
-
-Copyright (c) 2001-2006 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-This package seeks to encourage the development of open source software
-for the pd and Max/MSP platforms.
-
-Donations for further development of the package are highly appreciated.
-https://www.paypal.com/xclick/business=gr%40grrrr.org&item_name=flext&no_note=1&tax=0&currency_code=EUR
-
-----------------------------------------------------------------------------
-
-Abstract:
-
-flext seeks to represent a uniform programming interface for extending the most common
-modular real-time audio systems Max/MSP and Pure Data (PD) with external modules, or
-short externals. These modules provide a way to tailor such a system for one’s
-special needs and supply additional functionality.
-
-Source code based on flext is able to exploit most common features of the
-respective real-time framework while staying completely independent of the
-actual host system and platform (hardware and operating system).
-
-flext currently supports development for PD under Linux, Windows and OSX as well as
-Max/MSP under OS9, OSX and Windows with various programming environments.
-
-----------------------------------------------------------------------------
-
-Goals/features of the package:
-
-pros:
-- better readability of code compared to straight C externals
-- faster development, more robust coding
-- sharing of common methods and data by using base classes
-- any input to any inlet (with the exception of signal streams)
-- transparent use of threads for methods
-- libraries of externals in Max/MSP
-- more than 3 typed creation arguments possible for Max/MSP
-
-cons:
-- introduces a small overhead to speed of message and signal handling
-- larger memory footprint
-
-----------------------------------------------------------------------------
-
-Prerequisites:
-
---- PD ---
- You need the pd source code which is most likely part of the distribution.
- Otherwise download from: http://www-crca.ucsd.edu/~msp/software.html
-
---- Max/MSP ---
- You will need the latest Max/MSP SDK
- for Windows (http://synthesisters.com/pluggo3/downloadMaxWinSDK.php)
- for OSX (http://www.synthesisters.com/sdk/max.php)
- or for OS9 (ask Cycling'74 where to find that)
-
- For OS9 threading support you'll also need the Multiprocessing library
- (download at http://developer.apple.com/sdk/)
-
---- SndObj ---
- If you choose to compile with SndObj support you will need the respective library
- download from: http://www.may.ie/academic/music/musictec/SndObj/main.html
-
---- STK ---
- If you choose to compile with STK support you will need the respective package
- and build a library.
- download from: http://ccrma-www.stanford.edu/software/stk/
- For linking it may preferable to use a library of all the STK objects.
- Under linux you can create one from the STK directory with something like
- "g++ -c -pipe -I include -D __LINUX_OSS__ src/*.cpp && ar r libstk.a *.o && rm -f *.o"
-
-----------------------------------------------------------------------------
-
-Building and installing of flext and flext-based externals:
-
- See the build.txt document
-
-----------------------------------------------------------------------------
-
-Various notes / limitations / bug list:
-
- Read the notes.txt document
-
-----------------------------------------------------------------------------
-
-History of changes:
-
- Read the changes.txt document
diff --git a/externals/grill/flext/source/Makefile.am b/externals/grill/flext/source/Makefile.am
deleted file mode 100755
index a07525a2..00000000
--- a/externals/grill/flext/source/Makefile.am
+++ /dev/null
@@ -1,129 +0,0 @@
-#
-# automake template
-# added by tim blechmann
-#
-
-lib_LIBRARIES = libflext-pd_s.a libflext-pd_sd.a libflext-pd_t.a libflext-pd_td.a
-
-SRCS_FLEXT = \
- flbase.cpp \
- flext.cpp \
- flbuf.cpp \
- fldsp.cpp \
- fllib.cpp \
- flxlet.cpp \
- flattr.cpp \
- flattr_ed.cpp \
- flsupport.cpp \
- flutil.cpp \
- flatom.cpp \
- flatom_pr.cpp \
- flthr.cpp \
- fltimer.cpp \
- flsimd.cpp \
- flout.cpp \
- flatom_app.cpp \
- flatom_part.cpp \
- flitem.cpp \
- flmeth.cpp \
- flmsg.cpp \
- flproxy.cpp \
- flqueue.cpp \
- flbind.cpp \
- flmap.cpp
-
-pkginclude_HEADERS = \
- flprefix.h \
- flstdc.h \
- flbase.h \
- flclass.h \
- flext.h \
- flsupport.h \
- flmap.h \
- fldsp.h \
- flinternal.h \
- fldefs.h \
- fldefs_hdr.h \
- fldefs_setup.h \
- fldefs_methcb.h \
- fldefs_meththr.h \
- fldefs_methadd.h \
- fldefs_methbind.h \
- fldefs_methcall.h \
- fldefs_attrcb.h \
- fldefs_attrvar.h \
- fldefs_attradd.h
-
-
-# handling for stk / sndobj
-SRCS_STK = flstk.cpp
-HDRS_STK = flstk.cpp
-
-SRCS_SNDOBJ = flsndobj.cpp
-HDRS_SNDOBJ = flsndobj.cpp
-
-if SNDOBJ
-SRCS_FLEXT += $(SRCS_SNDOBJ)
-pkginclude_HEADERS += $(HDRS_SNDOBJ)
-LIB_SNDOBJ = -lsndobj
-endif
-
-if STK
-SRCS_FLEXT += $(SRCS_STK)
-pkginclude_HEADERS += $(HDRS_STK)
-LIB_STK = -lstk
-endif
-
-FRAMEWORKS = @FRAMEWORKS@
-
-# for static libraries we can use automake
-libflext_pd_s_a_SOURCES = $(SRCS_FLEXT)
-libflext_pd_sd_a_SOURCES = $(SRCS_FLEXT)
-libflext_pd_t_a_SOURCES = $(SRCS_FLEXT)
-libflext_pd_td_a_SOURCES = $(SRCS_FLEXT)
-
-libflext_pd_s_a_CXXFLAGS = @OPT_FLAGS@ @INCLUDEDIR@
-libflext_pd_sd_a_CXXFLAGS = @INCLUDEDIR@ -g -DFLEXT_DEBUG
-libflext_pd_t_a_CXXFLAGS = @OPT_FLAGS@ @INCLUDEDIR@ -DFLEXT_THREADS
-libflext_pd_td_a_CXXFLAGS = @INCLUDEDIR@ -g -DFLEXT_DEBUG -DFLEXT_THREADS
-
-libflext_pd_s_a_LDFLAGS = @OPT_FLAGS@ @INCLUDEDIR@ \
- $(patsubst %,-framework %,$(FRAMEWORKS))
-libflext_pd_sd_a_LDFLAGS = @INCLUDEDIR@ -g -DFLEXT_DEBUG \
- $(patsubst %,-framework %,$(FRAMEWORKS))
-libflext_pd_t_a_LDFLAGS = @OPT_FLAGS@ @INCLUDEDIR@ -DFLEXT_THREADS \
- $(patsubst %,-framework %,$(FRAMEWORKS))
-libflext_pd_td_a_LDFLAGS = @INCLUDEDIR@ -g -DFLEXT_DEBUG -DFLEXT_THREADS \
- $(patsubst %,-framework %,$(FRAMEWORKS))
-
-# for shared libraries, we can't ...
-libflext_pd_la_CXXFLAGS = @OPT_FLAGS@ @INCLUDEDIR@ -DFLEXT_SHARED \
- -DFLEXT_EXPORTS $(DEFS)
-libflext_pd_d_la_CXXFLAGS = @INCLUDEDIR@ -g -DFLEXT_DEBUG -DFLEXT_SHARED \
- -DFLEXT_EXPORTS $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES)
-libflext_pd_la_LDFLAGS = @DYNAMIC_LDFLAGS@ $(LIB_STK) $(LIB_SNDOBJ) $(LDFLAGS) \
- $(patsubst %,-framework %,$(FRAMEWORKS))
-libflext_pd_d_la_LDFLAGS = @DYNAMIC_LDFLAGS@ $(LIB_STK) $(LIB_SNDOBJ) $(LDFLAGS)
- $(patsubst %,-framework %,$(FRAMEWORKS))
-
-libflext_pd_la_NAME = libflext-pd.@SOEXT@
-libflext_pd_d_la_NAME = libflext-pd_d.@SOEXT@
-
-all-local: $(libflext_pd_la_NAME) $(libflext_pd_d_la_NAME)
-
-$(libflext_pd_la_NAME): $(patsubst %.cpp,libflext_pd_la-%.o,$(SRCS_FLEXT))
- $(CXX) $(libflext_pd_la_LDFLAGS) $(LIBS) -o $(libflext_pd_la_NAME) $^
-
-libflext_pd_la-%.o : %.cpp
- $(CXX) -c $(libflext_pd_la_CXXFLAGS) $< -o $@
-
-$(libflext_pd_d_la_NAME): $(patsubst %.cpp,libflext_pd_d_la-%.o,$(SRCS_FLEXT))
- $(CXX) $(libflext_pd_d_la_LDFLAGS) $(LIBS) -o $(libflext_pd_d_la_NAME) $^
-
-libflext_pd_d_la-%.o: %.cpp
- $(CXX) -c $(libflext_pd_d_la_CXXFLAGS) $< -o $@
-
-install-exec-local:
- $(libLIBRARIES_INSTALL) $(libflext_pd_la_NAME) $(DESTDIR)$(libdir)
- $(libLIBRARIES_INSTALL) $(libflext_pd_d_la_NAME) $(DESTDIR)$(libdir)
-
diff --git a/externals/grill/flext/source/flatom.cpp b/externals/grill/flext/source/flatom.cpp
deleted file mode 100644
index ea0191c1..00000000
--- a/externals/grill/flext/source/flatom.cpp
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
-
-flext - C++ layer for Max/MSP and pd (pure data) externals
-
-Copyright (c) 2001-2006 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-/*! \file flatom.cpp
- \brief Definitions for handling the t_atom type and lists thereof.
-*/
-
-#include "flext.h"
-#include <string.h> // for memcpy
-
-#if FLEXT_SYS != FLEXT_SYS_JMAX
-int flext::CmpAtom(const t_atom &a,const t_atom &b)
-{
- if(GetType(a) == GetType(b)) {
- switch(GetType(a)) {
- case A_FLOAT: return GetFloat(a) == GetFloat(b)?0:(GetFloat(a) < GetFloat(b)?-1:1);
-#if FLEXT_SYS == FLEXT_SYS_MAX
- case A_INT: return GetInt(a) == GetInt(b)?0:(GetInt(a) < GetInt(b)?-1:1);
-#endif
- case A_SYMBOL: return GetSymbol(a) == GetSymbol(b)?0:strcmp(GetString(a),GetString(b));
-#if FLEXT_SYS == FLEXT_SYS_PD
- case A_POINTER: return GetPointer(a) == GetPointer(b)?0:(GetPointer(a) < GetPointer(b)?-1:1);
-#endif
- default:
- // can't be compared.....
- FLEXT_ASSERT(false);
- return 0;
- }
- }
- else
- return GetType(a) < GetType(b)?-1:1;
-}
-#else
-#error Not implemented
-#endif
-
-t_atom *flext::CopyList(int argc,const t_atom *argv)
-{
- t_atom *dst = new t_atom[argc];
- memcpy(dst,argv,argc*sizeof(t_atom));
- return dst;
-}
-
-void flext::CopyAtoms(int cnt,t_atom *dst,const t_atom *src)
-{
- if(dst < src)
- // forward
- memcpy(dst,src,cnt*sizeof(t_atom));
- else
- // backwards
- while(cnt--) dst[cnt] = src[cnt];
-}
-
-void flext::AtomList::Alloc(int sz,int keepix,int keeplen,int keepto)
-{
- if(lst) {
- if(cnt == sz) {
- if(keepix >= 0 && keepix != keepto) {
- int c = keeplen >= 0?keeplen:cnt;
- FLEXT_ASSERT(c+keepto <= cnt);
- FLEXT_ASSERT(c+keepix <= cnt);
- CopyAtoms(c,lst+keepto,lst+keepix);
- }
-
- return; // no change
- }
-
- t_atom *l;
- if(sz) {
- l = new t_atom[sz];
- if(keepix >= 0) {
- // keep contents
- int c = keeplen >= 0?keeplen:(cnt > sz?sz:cnt);
- FLEXT_ASSERT(c+keepto <= sz);
- FLEXT_ASSERT(c+keepix <= cnt);
- CopyAtoms(c,l+keepto,lst+keepix);
- }
- }
- else
- l = NULL;
-
- Free();
- lst = l,cnt = sz;
- }
- else {
- FLEXT_ASSERT(cnt == 0);
- if(sz) lst = new t_atom[cnt = sz];
- }
-}
-
-flext::AtomList::~AtomList() { Free(); }
-
-void flext::AtomList::Free()
-{
- if(lst) {
- delete[] lst; lst = NULL;
- cnt = 0;
- }
- else
- FLEXT_ASSERT(cnt == 0);
-}
-
-flext::AtomList &flext::AtomList::Set(int argc,const t_atom *argv,int offs,bool resize)
-{
- int ncnt = argc+offs;
- if(resize) Alloc(ncnt);
-
- // argv can be NULL independently from argc
- if(argv) CopyAtoms(argc,lst+offs,argv);
-
- return *this;
-}
-
-int flext::AtomList::Compare(const AtomList &a) const
-{
- if(Count() == a.Count()) {
- for(int i = 0; i < Count(); ++i) {
- int cmp = CmpAtom(lst[i],a[i]);
- if(cmp) return cmp;
- }
- return 0;
- }
- else
- return Count() < a.Count()?-1:1;
-}
-
-flext::AtomListStaticBase::~AtomListStaticBase() { Free(); }
-
-void flext::AtomListStaticBase::Alloc(int sz,int keepix,int keeplen,int keepto)
-{
- if(sz <= precnt) {
- // small enough for pre-allocated space
-
- if(lst != predata && lst) {
- // currently allocated memory is larger than what we need
-
- if(keepix >= 0) {
- // keep contents
- int c = keeplen >= 0?keeplen:(cnt > sz?sz:cnt);
- FLEXT_ASSERT(c+keepto <= precnt);
- FLEXT_ASSERT(c+keepix <= cnt);
- CopyAtoms(c,predata+keepto,lst+keepix);
- }
-
- // free allocated memory
- AtomList::Free();
- }
- lst = predata,cnt = sz;
- }
- else
- AtomList::Alloc(sz,keepix,keeplen,keepto);
-}
-
-void flext::AtomListStaticBase::Free()
-{
- if(lst != predata) AtomList::Free();
- else lst = NULL,cnt = 0;
-}
diff --git a/externals/grill/flext/source/flatom_part.cpp b/externals/grill/flext/source/flatom_part.cpp
deleted file mode 100644
index b6d4661c..00000000
--- a/externals/grill/flext/source/flatom_part.cpp
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
-
-flext - C++ layer for Max/MSP and pd (pure data) externals
-
-Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-/*! \file flatom_part.cpp
- \brief Definitions for handling the t_atom type and lists thereof.
-*/
-
-#include "flext.h"
-
-int flext::AtomList::Get(t_atom *argv,int mxsz) const
-{
- int argc = Count();
- if(mxsz >= 0 && argc > mxsz) argc = mxsz;
-
- for(int i = 0; i < argc; ++i) SetAtom(argv[i],lst[i]);
-
- return argc;
-}
-
-
-void flext::AtomList::GetPart(int offs,int len,AtomList &ret) const
-{
- if(offs+len > Count()) {
- len = Count()-offs;
- if(len < 0) len = 0;
- }
-
- ret(len,Atoms()+offs);
-}
-
diff --git a/externals/grill/flext/source/flatom_pr.cpp b/externals/grill/flext/source/flatom_pr.cpp
deleted file mode 100644
index 9b9231ed..00000000
--- a/externals/grill/flext/source/flatom_pr.cpp
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
-
-flext - C++ layer for Max/MSP and pd (pure data) externals
-
-Copyright (c) 2001-2006 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-/*! \file flatom_pr.cpp
- \brief Definitions for printing and scanning the t_atom type.
-*/
-
-#include "flext.h"
-#include <ctype.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stdio.h>
-
-#ifdef _MSC_VER
-#define snprintf _snprintf
-#endif
-
-// \TODO take bufsz into account!
-bool flext::PrintAtom(const t_atom &a,char *buf,size_t bufsz)
-{
- bool ok = true;
- if(IsFloat(a)) {
- ok = STD::snprintf(buf,bufsz,"%g",GetFloat(a)) > 0;
- }
- else if(IsInt(a)) {
- ok = STD::snprintf(buf,bufsz,"%i",GetInt(a)) > 0;
- }
- else if(IsSymbol(a)) {
- const char *c = GetString(a);
- size_t len = strlen(c);
- if(len < bufsz) {
- memcpy(buf,c,len); buf[len] = 0;
- ok = true;
- }
- else
- ok = false;
- }
-#if FLEXT_SYS == FLEXT_SYS_PD
-#ifndef FLEXT_COMPATIBLE
- else if(IsPointer(a)) {
- ok = STD::snprintf(buf,bufsz,"%p",GetPointer(a)) > 0;
- }
-#endif
- else if(a.a_type == A_DOLLAR) {
- ok = STD::snprintf(buf,bufsz,"$%d",a.a_w.w_index) > 0;
- }
- else if(a.a_type == A_DOLLSYM) {
- ok = STD::snprintf(buf,bufsz,"$%s",GetString(a)) > 0;
- }
-#elif FLEXT_SYS == FLEXT_SYS_MAX
- else if(a.a_type == A_DOLLAR) {
- ok = STD::snprintf(buf,bufsz,"$%d",a.a_w.w_long) > 0;
- }
-#else
-//#pragma message("Not implemented")
-#endif
- else {
- error("flext: atom type unknown");
- ok = false;
- }
- return ok;
-}
-
-bool flext::PrintList(int argc,const t_atom *argv,char *buf,size_t bufsz)
-{
- bool ok = true;
- for(int i = 0; ok && i < argc && bufsz > 0; ++i) {
- if(i) { *(buf++) = ' '; --bufsz; } // prepend space
-
- if(PrintAtom(argv[i],buf,bufsz)) {
- size_t len = strlen(buf);
- buf += len,bufsz -= len;
- }
- else
- ok = false;
- }
- *buf = 0;
- return ok;
-}
-
-
-const char *flext::ScanAtom(t_atom &a,const char *c)
-{
- // skip leading whitespace
- while(*c && isspace(*c)) ++c;
- if(!*c) return NULL;
-
- // go to next space and save character
- char *end = const_cast<char *>(c);
- while(*end && !isspace(*end)) ++end;
- char sv = *end;
-
- float fres;
- // first try float
- char *endp;
- // see if it's a float - thanks to Frank Barknecht
- fres = (float)strtod(c,&endp);
- if(!*c && endp != c) {
- int ires = (int)fres; // try a cast
- if(fres == ires)
- SetInt(a,ires);
- else
- SetFloat(a,fres);
- }
- // no, it's a symbol
- else
- SetString(a,c);
-
- *end = sv;
-
- return c;
-}
diff --git a/externals/grill/flext/source/flattr.cpp b/externals/grill/flext/source/flattr.cpp
deleted file mode 100644
index 2054f7d4..00000000
--- a/externals/grill/flext/source/flattr.cpp
+++ /dev/null
@@ -1,445 +0,0 @@
-/*
-
-flext - C++ layer for Max/MSP and pd (pure data) externals
-
-Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-/*! \file flattr.cpp
- \brief Attribute handling for the flext base class
-*/
-
-#include "flext.h"
-#include <string.h>
-#include <ctype.h>
-
-#include <set>
-
-
-#ifdef __MWERKS__
-#define STD std
-#else
-#define STD
-#endif
-
-flext_base::AttrItem::AttrItem(const t_symbol *t,metharg tp,methfun f,int fl):
- Item(NULL),index(0),
- flags(fl|afl_shown),
- argtp(tp),fun(f),
- counter(NULL),tag(t)
-{}
-
-
-/*
-flext_base::AttrDataCont::AttrDataCont() {}
-
-flext_base::AttrDataCont::~AttrDataCont()
-{
- for(iterator it = begin(); it != end(); ++it)
- if(it.data()) delete it.data();
-}
-*/
-
-flext_base::AttrDataCont::~AttrDataCont() { clear(); }
-
-void flext_base::AttrDataCont::clear()
-{
- for(iterator it(*this); it; ++it) delete it.data();
- TablePtrMap<const t_symbol *,AttrData *,8>::clear();
-}
-
-//! Add get and set attributes
-void flext_base::AddAttrib(ItemCont *aa,ItemCont *ma,const t_symbol *asym,metharg tp,methfun gfun,methfun sfun)
-{
- AttrItem *a,*b;
-
- FLEXT_ASSERT(asym != sym__ && asym != sym_list && asym != sym_float && asym != sym_symbol && asym != sym_anything);
-
- if(sfun) // if commented out, there will be a warning at run-time (more user-friendly)
- {
- a = new AttrItem(asym,tp,sfun,AttrItem::afl_set);
- a->index = aa->Members();
- aa->Add(a,asym);
-
- // bind attribute to a method
- MethItem *mi = new MethItem(a);
- mi->SetArgs(sfun,1,new metharg(tp));
- ma->Add(mi,asym);
- }
- else
- a = NULL;
-
- if(gfun) // if commented out, there will be a warning at run-time (more user-friendly)
- {
- b = new AttrItem(asym,tp,gfun,AttrItem::afl_get);
- b->index = aa->Members();
- aa->Add(b,asym);
-
- static char tmp[256] = "get";
- strcpy(tmp+3,GetString(asym));
-
- // bind attribute to a method
- MethItem *mi = new MethItem(b);
- mi->SetArgs(gfun,0,NULL);
- ma->Add(mi,MakeSymbol(tmp));
- }
- else
- b = NULL;
-
- if(a && b) {
- a->counter = b;
- b->counter = a;
- }
-}
-
-void flext_base::AddAttrib(const t_symbol *attr,metharg tp,methfun gfun,methfun sfun)
-{
- if(HasAttributes())
- AddAttrib(ThAttrs(),ThMeths(),attr,tp,gfun,sfun);
- else
- error("%s - attribute procession is not enabled!",thisName());
-}
-
-void flext_base::AddAttrib(t_classid c,const t_symbol *attr,metharg tp,methfun gfun,methfun sfun)
-{
- AddAttrib(ClAttrs(c),ClMeths(c),attr,tp,gfun,sfun);
-}
-
-void flext_base::ListAttrib(AtomList &la) const
-{
- typedef TablePtrMap<int,const t_symbol *,32> AttrList;
- AttrList list[2];
- ItemCont *clattrhead = ClAttrs(thisClassId());
-
- int i;
- for(i = 0; i <= 1; ++i) {
- ItemCont *a = i?attrhead:clattrhead;
- if(a && a->Contained(0)) {
- ItemSet &ai = a->GetInlet();
- for(ItemSet::iterator as(ai); as; ++as) {
- for(Item *al = as.data(); al; al = al->nxt) {
- AttrItem *aa = (AttrItem *)al;
- list[i].insert(aa->index,as.key());
- break;
- }
- }
- }
- }
-
- la((int)(list[0].size()+list[1].size()));
- int ix = 0;
- for(i = 0; i <= 1; ++i)
- for(AttrList::iterator it(list[i]); it; ++it)
- SetSymbol(la[ix++],it.data());
-}
-
-int flext_base::CheckAttrib(int argc,const t_atom *argv)
-{
- int offs = 0;
- for(; offs < argc; ++offs)
- if(IsString(argv[offs]) && *GetString(argv[offs]) == '@') break;
- return offs;
-}
-
-bool flext_base::InitAttrib(int argc,const t_atom *argv)
-{
- int cur,nxt;
- for(cur = 0; cur < argc; cur = nxt) {
- // find next @symbol
- for(nxt = cur+1; nxt < argc; ++nxt)
- if(IsString(argv[nxt]) && *GetString(argv[nxt]) == '@') break;
-
- const t_symbol *tag = MakeSymbol(GetString(argv[cur])+1);
-
- // find puttable attribute
- AttrItem *attr = FindAttrib(tag,false,true);
- if(attr) {
- // make an entry (there are none beforehand...)
-/*
- AttrDataCont::iterator it = attrdata->find(tag);
- if(it == attrdata->end()) {
- AttrDataCont::pair pair;
- pair.key() = tag;
- pair.data() = new AttrData;
- it = attrdata->insert(attrdata->begin(),pair);
- }
-
- AttrData &a = *it.data();
- a.SetInit(true);
- a.SetInitValue(nxt-cur-1,argv+cur+1);
-
- // pass value to object
- SetAttrib(tag,attr,a.GetInitValue());
-*/
- AttrData *a = attrdata->find(tag);
- if(!a) {
- AttrData *old = attrdata->insert(tag,a = new AttrData);
- FLEXT_ASSERT(!old);
- }
-
- a->SetInit(true);
- a->SetInitValue(nxt-cur-1,argv+cur+1);
-
- // pass value to object
- SetAttrib(tag,attr,a->GetInitValue());
- }
- }
- return true;
-}
-
-bool flext_base::ListAttrib() const
-{
- if(HasAttributes()) {
- // defined in flsupport.cpp
- AtomListStatic<32> la;
- ListAttrib(la);
- ToOutAnything(GetOutAttr(),sym_attributes,la.Count(),la.Atoms());
- return true;
- }
- else
- return false;
-}
-
-flext_base::AttrItem *flext_base::FindAttrib(const t_symbol *tag,bool get,bool msg) const
-{
- ItemCont *clattrhead = ClAttrs(thisClassId());
-
- // first search within object scope
- AttrItem *a = NULL;
- {
- for(Item *lst = attrhead->FindList(tag); lst; lst = lst->nxt) {
- AttrItem *b = (AttrItem *)lst;
- if(get?b->IsGet():b->IsSet()) { a = b; break; }
- }
- }
-
- // then (if nothing found) search within class scope
- if(!a) {
- for(Item *lst = clattrhead->FindList(tag); lst; lst = lst->nxt) {
- AttrItem *b = (AttrItem *)lst;
- if(get?b->IsGet():b->IsSet()) { a = b; break; }
- }
- }
-
- if(!a && msg) {
- // print a message
- error("%s - %s: attribute not found",thisName(),GetString(tag));
- }
- return a;
-}
-
-bool flext_base::SetAttrib(const t_symbol *tag,int argc,const t_atom *argv)
-{
- // search for matching attribute
- AttrItem *a = FindAttrib(tag,false,true);
- return a && SetAttrib(tag,a,argc,argv);
-}
-
-bool flext_base::SetAttrib(const t_symbol *tag,AttrItem *a,int argc,const t_atom *argv)
-{
- if(a->fun) {
- bool ok = true;
-
- t_any any;
- switch(a->argtp) {
- case a_float:
- if(argc == 1 && CanbeFloat(argv[0])) {
- any.ft = GetAFloat(argv[0]);
- ((methfun_1)a->fun)(this,any);
- }
- else ok = false;
- break;
- case a_int:
- if(argc == 1 && CanbeInt(argv[0])) {
- any.it = GetAInt(argv[0]);
- ((methfun_1)a->fun)(this,any);
- }
- else ok = false;
- break;
- case a_symbol:
- if(argc == 1 && IsSymbol(argv[0])) {
- t_atom at;
- GetParamSym(at,GetSymbol(argv[0]),thisCanvas());
- any.st = const_cast<t_symbol *>(GetSymbol(at));
- ((methfun_1)a->fun)(this,any);
- }
- else ok = false;
- break;
- case a_bool:
- if(argc == 1 && CanbeBool(argv[0])) {
- any.bt = GetABool(argv[0]);
- ((methfun_1)a->fun)(this,any);
- }
- else ok = false;
- break;
- case a_LIST: {
- AtomListStatic<16> la(argc);
- for(int i = 0; i < argc; ++i)
- if(IsSymbol(argv[i]))
- GetParamSym(la[i],GetSymbol(argv[i]),thisCanvas());
- else
- la[i] = argv[i];
-
- any.vt = &la;
- ((methfun_1)a->fun)(this,any);
- break;
- }
- default:
- ERRINTERNAL();
- }
-
- if(!ok)
- post("%s - wrong arguments for attribute %s",thisName(),GetString(tag));
- }
- else
- post("%s - attribute %s has no get method",thisName(),GetString(tag));
- return true;
-}
-
-
-bool flext_base::GetAttrib(const t_symbol *tag,AttrItem *a,AtomList &la) const
-{
- bool ok = true;
- // main attribute tag
- if(a) {
- if(a->fun) {
- t_any any;
- switch(a->argtp) {
- case a_float: {
- ((methfun_1)a->fun)(const_cast<flext_base *>(this),any);
- la(1);
- SetFloat(la[0],any.ft);
- break;
- }
- case a_int: {
- ((methfun_1)a->fun)(const_cast<flext_base *>(this),any);
- la(1);
- SetInt(la[0],any.it);
- break;
- }
- case a_bool: {
- ((methfun_1)a->fun)(const_cast<flext_base *>(this),any);
- la(1);
- SetBool(la[0],any.bt);
- break;
- }
- case a_symbol: {
- ((methfun_1)a->fun)(const_cast<flext_base *>(this),any);
- la(1);
- SetSymbol(la[0],any.st);
- break;
- }
- case a_LIST: {
- any.vt = &la;
- ((methfun_1)a->fun)(const_cast<flext_base *>(this),any);
- break;
- }
- default:
- ERRINTERNAL();
- ok = false;
- }
- }
- else {
- post("%s - attribute %s has no get method",thisName(),GetString(tag));
- ok = false;
- }
- }
- else {
- error("%s - %s: attribute not found",thisName(),GetString(tag));
- ok = false;
- }
- return ok;
-}
-
-bool flext_base::GetAttrib(const t_symbol *s,AtomList &a) const
-{
- AttrItem *attr = FindAttrib(s,true);
- return attr && GetAttrib(s,attr,a);
-}
-
-//! \param tag symbol "get[attribute]"
-bool flext_base::DumpAttrib(const t_symbol *tag,AttrItem *a) const
-{
- AtomListStatic<16> la;
- bool ret = GetAttrib(tag,a,la);
- if(ret) {
- ToOutAnything(GetOutAttr(),a->tag,la.Count(),la.Atoms());
- }
- return ret;
-}
-
-bool flext_base::DumpAttrib(const t_symbol *attr) const
-{
- AttrItem *item = FindAttrib(attr,true);
- return item && DumpAttrib(attr,item);
-}
-
-bool flext_base::BangAttrib(const t_symbol *attr,AttrItem *item)
-{
- AtomListStatic<16> val;
- AttrItem *item2;
- if(!item->IsGet())
- item = item->Counterpart();
- if(item) {
- item2 = item->Counterpart();
- return item2 && GetAttrib(attr,item,val) && SetAttrib(attr,item2,val);
- }
- else
- return false;
-}
-
-bool flext_base::BangAttrib(const t_symbol *attr)
-{
- AttrItem *item = FindAttrib(attr,true);
- return item && BangAttrib(attr,item);
-}
-
-bool flext_base::BangAttribAll()
-{
- ItemCont *clattrhead = ClAttrs(thisClassId());
-
- for(int i = 0; i <= 1; ++i) {
- ItemCont *a = i?attrhead:clattrhead;
- if(a) {
- ItemSet &ai = a->GetInlet(); // \todo need to check for presence of inlet 0?
-/*
- for(ItemSet::iterator as = ai.begin(); as != ai.end(); ++as) {
- for(Item *al = as.data(); al; al = al->nxt) {
- AttrItem *a = (AttrItem *)al;
- if(a->IsGet() && a->BothExist()) BangAttrib(as.key(),a);
- }
- }
-*/
- for(ItemSet::iterator as(ai); as; ++as) {
- for(Item *al = as.data(); al; al = al->nxt) {
- AttrItem *a = (AttrItem *)al;
- if(a->IsGet() && a->BothExist()) BangAttrib(as.key(),a);
- }
- }
- }
- }
- return true;
-}
-
-bool flext_base::ShowAttrib(AttrItem *a,bool show) const
-{
- if(show) a->flags |= AttrItem::afl_shown;
- else a->flags &= ~AttrItem::afl_shown;
-
- // also change counterpart, if present
- AttrItem *ca = a->Counterpart();
- if(ca) {
- if(show) ca->flags |= AttrItem::afl_shown;
- else ca->flags &= ~AttrItem::afl_shown;
- }
- return true;
-}
-
-bool flext_base::ShowAttrib(const t_symbol *attr,bool show) const
-{
- AttrItem *item = FindAttrib(attr,true);
- return item && ShowAttrib(item,show);
-}
diff --git a/externals/grill/flext/source/flattr_ed.cpp b/externals/grill/flext/source/flattr_ed.cpp
deleted file mode 100644
index 115dad13..00000000
--- a/externals/grill/flext/source/flattr_ed.cpp
+++ /dev/null
@@ -1,872 +0,0 @@
-/*
-
-flext - C++ layer for Max/MSP and pd (pure data) externals
-
-Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-/*! \file flattr_ed.cpp
- \brief Attribute editor (property dialog) for PD
-*/
-
-#include "flext.h"
-
-#if FLEXT_SYS == FLEXT_SYS_PD
-
-#ifdef _MSC_VER
-#pragma warning( disable : 4091 )
-#endif
-
-
-#if defined(FLEXT_ATTRHIDE) || PD_MINOR_VERSION < 37
-#define __FLEXT_WIDGETBEHAVIOR
-#endif
-
-//////////////////////////////////////////////////////
-#ifdef __FLEXT_WIDGETBEHAVIOR
-// we need non-public headers!
-#pragma message("Attention: non-public headers used - binary is bound to a specific version")
-
-#include <g_canvas.h>
-
-/*
-#ifdef PD_DEVEL_VERSION
-#define __FLEXT_CLONEWIDGET
-#endif
-*/
-
-#ifndef __FLEXT_CLONEWIDGET
-#include <m_imp.h>
-#endif
-
-#endif
-//////////////////////////////////////////////////////
-
-
-#include <string.h>
-#include <stdio.h>
-
-
-#ifdef FLEXT_ATTRHIDE
-#ifndef __FLEXT_CLONEWIDGET
-static t_visfn ori_vis = NULL;
-static t_selectfn ori_select = NULL;
-#endif
-#endif
-
-
-#ifdef FLEXT_ATTRHIDE
-#define ST_DISABLED ""
-#else
-#define ST_DISABLED " -state disabled"
-#endif
-
-
-#ifndef FLEXT_NOATTREDIT
-
-//! generate the script for the property dialog
-static void tclscript()
-{
- static bool havecode = false;
- if(havecode) return;
- else havecode = true;
-
- sys_vgui(
- "proc flext_escatoms {lst} {\n"
- "set tmp {}\n"
- "foreach a $lst {\n"
-// "set a [regsub {\\\\} $a \\\\\\\\]\n" // replace \ with \\ ... must be first
- "set a [regsub {\\$} $a \\\\$]\n" // replace $ with \$
-// "set a [regsub {\\{} $a \\\\\\{]\n" // replace { with \{
-// "set a [regsub {\\}} $a \\\\\\}]\n" // replace } with \}
-// "set a [regsub {\\ } $a \\\\\\ ]\n" // replace space with \space
- "set a [regsub {,} $a \\\\,]\n" // replace , with \,
- "set a [regsub {;} $a \\\\\\;]\n" // replace ; with \;
- "lappend tmp $a\n"
- "}\n"
- "return $tmp\n"
- "}\n"
- );
- sys_vgui(
- "proc flext_makevalue {id ix} {\n"
- // strip "." from the TK id to make a variable name suffix
- "set vid [string trimleft $id .]\n"
-
- "set var_attr_name [concat [concat var_name_$ix]_$vid ]\n"
- "set var_attr_init [concat [concat var_init_$ix]_$vid ]\n"
- "set var_attr_val [concat [concat var_val_$ix]_$vid ]\n"
- "set var_attr_save [concat [concat var_save_$ix]_$vid ]\n"
- "set var_attr_type [concat [concat var_type_$ix]_$vid ]\n"
-
- "global $var_attr_name $var_attr_init $var_attr_val $var_attr_save $var_attr_type\n"
-
- "set lst {}\n"
-
- "if { [expr $$var_attr_type] != 0 } {\n"
- // attribute is puttable
-
- "lappend lst [eval concat $$var_attr_name]\n"
-
- // process current value
- "set tmp [flext_escatoms [eval concat $$var_attr_val]]\n"
- "set lst [concat $lst [llength $tmp] $tmp]\n"
-
- // process init value
- "set tmp [flext_escatoms [eval concat $$var_attr_init]]\n"
- "set lst [concat $lst [llength $tmp] $tmp]\n"
-
- "lappend lst [eval concat $$var_attr_save]\n"
- "}\n"
-
- // return list
- "return $lst\n"
- "}\n"
- );
- sys_vgui(
- "proc flext_apply {id ix} {\n"
- "set lst [flext_makevalue $id $ix]\n"
- "set lst [eval concat $lst]\n" // remove curly braces from character escaping
- "pd [concat $id attributedialog $lst \\;]\n"
- "}\n"
-
- "proc flext_applyall {id alen} {\n"
- // make a list of the attribute values (including save flags)
-
- "set lst {}\n"
- "for {set ix 1} {$ix <= $alen} {incr ix} {\n"
- "set lst [concat $lst [flext_makevalue $id $ix]]\n"
- "}\n"
- "set lst [eval concat $lst]\n" // remove curly braces from character escaping
-
- "pd [concat $id attributedialog $lst \\;]\n"
- "}\n"
-
- "proc flext_cancel {id} {\n"
- "pd [concat $id cancel \\;]\n"
- "}\n"
-
- "proc flext_ok {id alen} {\n"
- "flext_applyall $id $alen\n"
- "flext_cancel $id\n"
- "}\n"
- );
- sys_vgui(
- "proc flext_help {id} {\n"
- "toplevel $id.hw\n"
- "wm title $id.hw \"Flext attribute editor help\"\n"
-
- "frame $id.hw.buttons\n"
- "pack $id.hw.buttons -side bottom -fill x -pady 2m\n"
-
- "text $id.hw.text -relief sunken -bd 2 -yscrollcommand \"$id.hw.scroll set\" -setgrid 1 -width 80 -height 10 -wrap word\n"
- "scrollbar $id.hw.scroll -command \"$id.hw.text yview\"\n"
- "pack $id.hw.scroll -side right -fill y\n"
- "pack $id.hw.text -expand yes -fill both\n"
-
- "button $id.hw.buttons.ok -text OK -command \"destroy $id.hw\"\n"
- "pack $id.hw.buttons.ok -side left -expand 1\n"
- "bind $id.hw {<KeyPress-Escape>} \"destroy $id.hw\"\n"
-
- "$id.hw.text tag configure big -font {Arial 10 bold}\n"
- "$id.hw.text configure -font {Arial 8 bold}\n"
- "$id.hw.text insert end \""
- "The flext attribute editor lets you query or change attribute values exposed by an external object. \" big \"\n\n"
- "Local variable names ($-values) will only be saved as such for init values. "
- "Alternatively, # can be used instead of $.\n"
- "Ctrl-Button on a text field will open an editor window where text can be entered more comfortably.\n"
- "\"\n"
- "$id.hw.text configure -state disabled\n"
- "}\n"
- );
- sys_vgui(
- "proc flext_copyval {dst src} {\n"
- "global $src $dst\n"
- "set $dst [expr $$src]\n"
- "}\n"
-
- "proc flext_textcopy {id idtxt var} {\n"
- "global $var\n"
- "set txt [eval $idtxt get 0.0 end]\n"
- // strip newline characters
- "set tmp {}\n"
- "foreach t $txt { lappend tmp [string trim $t] }\n"
- "set $var $tmp\n"
- "destroy $id\n"
- "}\n"
- );
- sys_vgui(
- "proc flext_textzoom {id var title attr edit} {\n"
- "global $var\n"
- "toplevel $id.w\n"
- "wm title $id.w [concat $title \" @\" $attr]\n"
-// "wm iconname $w \"text\"\n"
-// "positionWindow $id.w\n"
-
- "frame $id.w.buttons\n"
- "pack $id.w.buttons -side bottom -fill x -pady 2m\n"
-
- "text $id.w.text -relief sunken -bd 2 -yscrollcommand \"$id.w.scroll set\" -setgrid 1 -width 80 -height 20\n"
- "scrollbar $id.w.scroll -command \"$id.w.text yview\"\n"
- "pack $id.w.scroll -side right -fill y\n"
- "pack $id.w.text -expand yes -fill both\n"
-
- // insert text with newlines
- "set txt [split [expr $$var] ,]\n"
- "set lines [llength $txt]\n"
- "for {set ix 0} {$ix < ($lines-1)} {incr ix} {\n"
- "$id.w.text insert end [string trim [lindex $txt $ix] ]\n"
- "$id.w.text insert end \" ,\\n\"\n"
- "}\n"
- "$id.w.text insert end [string trim [lindex $txt end] ]\n"
-
- "$id.w.text mark set insert 0.0\n"
-
- "if { $edit != 0 } then {\n"
- "button $id.w.buttons.ok -text OK -command \"flext_textcopy $id.w $id.w.text $var\"\n"
- "pack $id.w.buttons.ok -side left -expand 1\n"
-// "bind $id.w {<Shift-KeyPress-Return>} \"flext_textcopy $id.w $id.w.text $var\"\n"
- "} "
- "else { $id.w.text configure -state disabled }\n"
-
- "button $id.w.buttons.cancel -text Cancel -command \"destroy $id.w\"\n"
- "pack $id.w.buttons.cancel -side left -expand 1\n"
- "bind $id.w {<KeyPress-Escape>} \"destroy $id.w\"\n"
- "}\n"
- );
- sys_vgui(
- "proc pdtk_flext_dialog {id title attrlist} {\n"
- "set vid [string trimleft $id .]\n"
- "set alen [expr [llength $attrlist] / 6 ]\n"
-
- "toplevel $id\n"
- "wm title $id $title\n"
- "wm protocol $id WM_DELETE_WINDOW [concat flext_cancel $id]\n"
-
- "frame $id.frame\n"
- "set row 0\n"
-
- // set grow parameters
- "grid columnconfigure $id.frame 0 -weight 1\n" // label
- "grid columnconfigure $id.frame {1 4} -weight 3\n" // value entry
- "grid columnconfigure $id.frame {2 3} -weight 0\n" // copy buttons
- "grid columnconfigure $id.frame 5 -weight 1\n" // apply button
- "grid columnconfigure $id.frame {6 7 8} -weight 0\n" // radio buttons
-
- "grid rowconfigure $id.frame {0 1} -weight 0\n"
-
- // set column labels
- "label $id.frame.label -text {attribute} -font {Helvetica 9 bold}\n"
- "label $id.frame.init -text {initial value} -font {Helvetica 9 bold}\n"
- "label $id.frame.copy -text {copy} -font {Helvetica 9 bold}\n"
- "label $id.frame.val -text {current value} -font {Helvetica 9 bold}\n"
- "label $id.frame.apply -text {} -font {Helvetica 9 bold}\n" // why must this be empty?
- "foreach {i txt} {0 {don't\rsave} 1 {do\rinit} 2 {always\rsave} } {\n"
- "label $id.frame.b$i -text $txt -font {Helvetica 7 bold}\n"
- "}\n"
-
- "grid config $id.frame.label -column 0 -row $row \n"
- "grid config $id.frame.init -column 1 -row $row \n"
- "grid config $id.frame.copy -column 2 -columnspan 2 -row $row \n"
- "grid config $id.frame.val -column 4 -row $row \n"
- "grid config $id.frame.apply -column 5 -row $row \n"
- "foreach i {0 1 2} { grid config $id.frame.b$i -column [expr $i + 6] -row $row }\n"
- "incr row\n"
-
- // Separator
- "frame $id.frame.sep -relief ridge -bd 1 -height 2\n"
- "grid config $id.frame.sep -column 0 -columnspan 9 -row $row -pady 2 -sticky {snew}\n"
- "incr row\n"
- );
- sys_vgui(
- "set ix 1\n"
- "foreach {an av ai atp asv afl} $attrlist {\n"
- "grid rowconfigure $id.frame $row -weight 1\n"
-
- // get attribute name
- "set var_attr_name [concat [concat var_name_$ix]_$vid ]\n"
- "global $var_attr_name\n"
- "set $var_attr_name $an\n"
-
- // get attribute init value (list)
- "set var_attr_init [concat [concat var_init_$ix]_$vid ]\n"
- "global $var_attr_init\n"
- "set $var_attr_init $ai\n"
-
- // get attribute value (list)
- "set var_attr_val [concat [concat var_val_$ix]_$vid ]\n"
- "global $var_attr_val\n"
- "set $var_attr_val $av\n"
-
- // get save flag
- "set var_attr_save [concat [concat var_save_$ix]_$vid ]\n"
- "global $var_attr_save\n"
- "set $var_attr_save $asv\n"
-
- // get type flag
- "set var_attr_type [concat [concat var_type_$ix]_$vid ]\n"
- "global $var_attr_type\n"
- "set $var_attr_type $afl\n"
-
- // add dialog elements to window
-
- // attribute label
- "label $id.frame.label-$ix -text \"$an :\" -font {Helvetica 8 bold}\n"
- "grid config $id.frame.label-$ix -column 0 -row $row -padx 5 -sticky {e}\n"
- );
- sys_vgui(
- "if { $afl != 0 } {\n"
- // attribute is puttable
-
- // entry field for initial value
- // entry field for current value
-
- // choose entry field type
- "switch $atp {\n"
- "0 - 1 {\n" // int or float
- "entry $id.frame.init-$ix -textvariable $var_attr_init" ST_DISABLED "\n"
- "entry $id.frame.val-$ix -textvariable $var_attr_val\n"
- "}\n"
- "2 {\n" // boolean
- "checkbutton $id.frame.init-$ix -variable $var_attr_init" ST_DISABLED "\n"
- "checkbutton $id.frame.val-$ix -variable $var_attr_val\n"
- "}\n"
- "3 {\n" // symbol
- "entry $id.frame.init-$ix -textvariable $var_attr_init" ST_DISABLED "\n"
- "entry $id.frame.val-$ix -textvariable $var_attr_val\n"
- "}\n"
- "4 - 5 {\n" // list or unknown
- "entry $id.frame.init-$ix -textvariable $var_attr_init" ST_DISABLED "\n"
- "bind $id.frame.init-$ix {<Control-Button-1>} \" flext_textzoom $id.frame.init-$ix $var_attr_init { $title } $an 1\"\n"
- "entry $id.frame.val-$ix -textvariable $var_attr_val\n"
- "bind $id.frame.val-$ix {<Control-Button-1>} \" flext_textzoom $id.frame.val-$ix $var_attr_val { $title } $an 1\"\n"
- "}\n"
- "}\n"
-
- "grid config $id.frame.init-$ix -column 1 -row $row -padx 5 -sticky {ew}\n"
- "grid config $id.frame.val-$ix -column 4 -row $row -padx 5 -sticky {ew}\n"
-
- // copy buttons
- "button $id.frame.b2i-$ix -text {<-} -height 1 -command \" flext_copyval $var_attr_init $var_attr_val \"" ST_DISABLED "\n"
- "grid config $id.frame.b2i-$ix -column 2 -row $row -sticky {ew}\n"
- "button $id.frame.b2c-$ix -text {->} -height 1 -command \" flext_copyval $var_attr_val $var_attr_init \"\n"
- "grid config $id.frame.b2c-$ix -column 3 -row $row -sticky {ew}\n"
-
- // apply button
- "button $id.frame.apply-$ix -text {Apply} -height 1 -command \" flext_apply $id $ix \"\n"
- "grid config $id.frame.apply-$ix -column 5 -row $row -sticky {ew}\n"
-
- // radiobuttons
- "foreach {i c} {0 black 1 blue 2 red} {\n"
- "radiobutton $id.frame.b$i-$ix -value $i -foreground $c -variable $var_attr_save" ST_DISABLED "\n"
- "grid config $id.frame.b$i-$ix -column [expr $i + 6] -row $row\n"
- "}\n"
- );
- sys_vgui(
- "} else {\n"
- // attribute is gettable only
-
- // entry field for current value (read-only)
-
- // choose display field type
- "switch $atp {\n"
- "0 - 1 {\n" // int or float
- "entry $id.frame.val-$ix -textvariable $var_attr_val -state disabled\n"
- "}\n"
- "2 {\n" // boolean
- "checkbutton $id.frame.val-$ix -variable $var_attr_val -state disabled\n"
- "}\n"
- "3 {\n" // symbol
- "entry $id.frame.val-$ix -textvariable $var_attr_val -state disabled\n"
- "}\n"
- "4 - 5 {\n" // list or unknown
- "entry $id.frame.val-$ix -textvariable $var_attr_val -state disabled\n"
- "bind $id.frame.val-$ix {<Control-Button-1>} \" flext_textzoom $id.frame.val-$ix $var_attr_val { $title } $an 0\"\n"
- "}\n"
- "}\n"
-
-// "entry $id.fval.val-$ix -textvariable $var_attr_val -state disabled\n"
- "grid config $id.frame.val-$ix -column 4 -row $row -padx 5 -sticky {ew}\n"
-
- "label $id.frame.readonly-$ix -text \"read-only\"\n"
- "grid config $id.frame.readonly-$ix -column 6 -columnspan 3 -row $row -padx 5 -sticky {ew}\n"
- "}\n"
-
- // increase counter
- "incr ix\n"
- "incr row\n"
- "}\n"
-
- // empty space
- "grid rowconfigure $id.frame $row -weight 1\n"
- "frame $id.frame.dummy\n"
- "grid config $id.frame.dummy -column 0 -columnspan 9 -row $row\n"
- "incr row\n"
- );
- sys_vgui(
- // Separator
- "frame $id.sep2 -relief ridge -bd 1 -height 2\n"
-
- // Buttons
- "frame $id.buttonframe\n"
-
- "button $id.buttonframe.cancel -text {Leave} -width 20 -command \" flext_cancel $id \"\n"
- "button $id.buttonframe.apply -text {Apply all} -width 20 -command \" flext_applyall $id $alen \"\n"
- "button $id.buttonframe.ok -text {Apply & Leave} -width 20 -command \" flext_ok $id $alen \"\n"
- "button $id.buttonframe.help -text {Help} -width 10 -command \" flext_help $id \"\n"
-
- "grid columnconfigure $id.buttonframe {0 1 2 3} -weight 1\n"
- "grid config $id.buttonframe.cancel $id.buttonframe.apply $id.buttonframe.ok $id.buttonframe.help -padx 2 -sticky {snew}\n"
-
-// "scrollbar $id.scroll -command \"$id.frame yview\"\n"
-
- "pack $id.buttonframe $id.sep2 -pady 2 -expand 0 -side bottom -fill x\n"
-// "pack $id.scroll -side right -fill y\n"
- "pack $id.frame -expand 1 -side top -fill both\n"
-
- // Key bindings
- "bind $id {<KeyPress-Escape>} \" flext_cancel $id \"\n"
- "bind $id {<KeyPress-Return>} \" flext_ok $id $alen \"\n"
- "bind $id {<Shift-KeyPress-Return>} \" flext_applyall $id $alen \"\n"
- "}\n"
- );
-}
-
-#endif
-
-
-#ifdef __FLEXT_WIDGETBEHAVIOR
-static t_widgetbehavior widgetbehavior;
-#endif
-
-void flext_base::SetGfx(t_classid c)
-{
- t_class *cl = getClass(c);
- // widgetbehavior struct MUST be resident... (static is just ok here)
-
-#ifdef __FLEXT_WIDGETBEHAVIOR
-#ifndef __FLEXT_CLONEWIDGET
- widgetbehavior.w_visfn = cl->c_wb->w_visfn;
- widgetbehavior.w_selectfn = cl->c_wb->w_selectfn;
- widgetbehavior.w_getrectfn = cl->c_wb->w_getrectfn;
- widgetbehavior.w_displacefn = cl->c_wb->w_displacefn;
- widgetbehavior.w_activatefn = cl->c_wb->w_activatefn;
- widgetbehavior.w_deletefn = cl->c_wb->w_deletefn;
- widgetbehavior.w_selectfn = cl->c_wb->w_selectfn;
- widgetbehavior.w_clickfn = cl->c_wb->w_clickfn;
-#else
- widgetbehavior.w_visfn = text_widgetbehavior.w_visfn;
- widgetbehavior.w_selectfn = text_widgetbehavior.w_selectfn;
- widgetbehavior.w_getrectfn = text_widgetbehavior.w_getrectfn;
- widgetbehavior.w_displacefn = text_widgetbehavior.w_displacefn;
- widgetbehavior.w_activatefn = text_widgetbehavior.w_activatefn;
- widgetbehavior.w_deletefn = text_widgetbehavior.w_deletefn;
- widgetbehavior.w_selectfn = text_widgetbehavior.w_selectfn;
- widgetbehavior.w_clickfn = text_widgetbehavior.w_clickfn;
-#endif
-#endif
-
-#ifdef FLEXT_ATTRHIDE
-
-#ifndef __FLEXT_CLONEWIDGET
- ori_vis = widgetbehavior.w_visfn;
- ori_select = widgetbehavior.w_selectfn;
-#endif
- widgetbehavior.w_visfn = (t_visfn)cb_GfxVis;
- widgetbehavior.w_selectfn = (t_selectfn)cb_GfxSelect;
-
-#if PD_MINOR_VERSION >= 37
- class_setsavefn(cl,(t_savefn)cb_GfxSave);
-#else
- widgetbehavior.w_savefn = (t_savefn)cb_GfxSave;
-#endif
-
-#endif // FLEXT_ATTRHIDE
-
-
-#ifndef FLEXT_NOATTREDIT
-
-#if PD_MINOR_VERSION >= 37
- class_setpropertiesfn(cl,(t_propertiesfn)cb_GfxProperties);
-#else
- widgetbehavior.w_propertiesfn = (t_propertiesfn)cb_GfxProperties;
-#endif
-
- tclscript();
-#endif // FLEXT_NOATTREDIT
-
-#ifdef __FLEXT_WIDGETBEHAVIOR
- class_setwidget(cl, &widgetbehavior);
-#endif
-}
-
-
-#ifndef FLEXT_NOATTREDIT
-
-static size_t escapeit(char *dst,size_t maxlen,const char *src)
-{
- char *d;
- for(d = dst; *src && (d-dst) < (int)maxlen; ++src) {
- if(*src == '%')
- *(d++) = '%',*(d++) = '%';
- else
- *(d++) = *src;
- }
- *d = 0;
- return d-dst;
-}
-
-void flext_base::cb_GfxProperties(flext_hdr *c, t_glist *)
-{
- flext_base *th = thisObject(c);
- char buf[1000];
-
- // beginning of proc
- sys_vgui("proc pdtk_flext_dialog_%p {title} {\n",th);
-
- sys_vgui("pdtk_flext_dialog $title {\n");
-
- // add title
- t_text *x = (t_text *)c;
- FLEXT_ASSERT(x->te_binbuf);
-
- int argc = binbuf_getnatom(x->te_binbuf);
- t_atom *argv = binbuf_getvec(x->te_binbuf);
-
- PrintList(argc,argv,buf,sizeof(buf));
- sys_vgui("%s } {\n",buf);
-
- AtomListStatic<32> la;
- th->ListAttrib(la);
- int cnt = la.Count();
-
- for(int i = 0; i < cnt; ++i) {
- const t_symbol *sym = GetSymbol(la[i]);
-
- // get attribute
- AttrItem *gattr = th->FindAttrib(sym,true);
- // get puttable attribute
- AttrItem *pattr = gattr?gattr->Counterpart():th->FindAttrib(sym,false);
-
- // get flags
- int sv;
- const AtomList *initdata;
- const AttrData *a = th->attrdata->find(sym);
-// AttrDataCont::iterator it = th->attrdata->find(sym);
-// if(it == th->attrdata->end())
- if(!a)
- sv = 0,initdata = NULL;
- else {
-// const AttrData &a = *it.data();
- if(a->IsSaved())
- sv = 2;
- else if(a->IsInit())
- sv = 1;
- else
- sv = 0;
- initdata = a->IsInitValue()?&a->GetInitValue():NULL;
- }
-
- // get attribute type
- int tp;
- bool list;
- switch((gattr?gattr:pattr)->argtp) {
- case a_int: tp = 0; list = false; break;
- case a_float: tp = 1; list = false; break;
- case a_bool: tp = 2; list = false; break;
- case a_symbol: tp = 3; list = true; break;
- case a_list:
- case a_LIST: tp = 4; list = true; break;
- default:
- tp = 5; list = true;
- FLEXT_ASSERT(false);
- }
-
- sys_vgui(const_cast<char *>(list?"%s {":"%s "),GetString(sym));
-
- AtomListStatic<32> lv;
- if(gattr) { // gettable attribute is present
- // Retrieve attribute value
- th->GetAttrib(sym,gattr,lv);
-
- char *b = buf; *b = 0;
- for(int i = 0; i < lv.Count(); ++i) {
- char tmp[100];
- PrintAtom(lv[i],tmp,sizeof tmp);
- b += escapeit(b,sizeof(buf)+buf-b,tmp);
- if(i < lv.Count()-1) { *(b++) = ' '; *b = 0; }
- }
- sys_vgui("%s",buf);
- }
- else
- sys_vgui("{}");
-
- sys_vgui(const_cast<char *>(list?"} {":" "));
-
- if(pattr) {
- // if there is initialization data take this, otherwise take the current data
- const AtomList &lp = initdata?*initdata:static_cast<const AtomList &>(lv);
-
- char *b = buf; *b = 0;
- for(int i = 0; i < lp.Count(); ++i) {
- char tmp[256];
- PrintAtom(lp[i],tmp,sizeof(tmp));
- b += escapeit(b,sizeof(buf)+buf-b,tmp);
- if(i < lp.Count()-1) { *(b++) = ' '; *b = 0; }
- }
- sys_vgui("%s",buf);
- }
- else
- sys_vgui("{}");
-
-
- sys_vgui(const_cast<char *>(list?"} %i %i %i \n":" %i %i %i \n"),tp,sv,pattr?(pattr->BothExist()?2:1):0);
- }
-
- sys_vgui(" } }\n"); // end of proc
-
- STD::sprintf(buf,"pdtk_flext_dialog_%p %%s\n",th);
- gfxstub_new((t_pd *)th->thisHdr(), th->thisHdr(),buf);
-
- //! \todo delete proc in TCL space
-}
-
-bool flext_base::cb_AttrDialog(flext_base *th,int argc,const t_atom *argv)
-{
- for(int i = 0; i < argc; ) {
- FLEXT_ASSERT(IsSymbol(argv[i]));
-
- // get name
- const t_symbol *aname = GetSymbol(argv[i]);
- i++;
-
- // get current value
- FLEXT_ASSERT(CanbeInt(argv[i]));
- int ccnt,coffs;
- ccnt = GetAInt(argv[i]);
- coffs = ++i;
- i += ccnt;
-
- // get init value
- FLEXT_ASSERT(CanbeInt(argv[i]));
- int icnt,ioffs;
- icnt = GetAInt(argv[i]);
- ioffs = ++i;
- i += icnt;
-
- FLEXT_ASSERT(i < argc);
- int sv = GetAInt(argv[i]);
- ++i;
-
- // find puttable attribute
- AttrItem *attr = th->FindAttrib(aname,false);
- if(attr) {
- bool ret = th->SetAttrib(aname,attr,ccnt,argv+coffs);
- FLEXT_ASSERT(ret);
-
- AttrData *a = th->attrdata->find(aname);
- if(sv >= 1) {
- // if data not present create it
- if(!a) {
- AttrData *old = th->attrdata->insert(aname,a = new AttrData);
- FLEXT_ASSERT(!old);
- }
-
- a->SetSave(sv == 2);
- a->SetInit(true);
- a->SetInitValue(icnt,argv+ioffs);
- }
- else {
- if(a) {
- // if data is present reset flags
- a->SetSave(false);
- a->SetInit(false);
-
- // let init data as is
- }
- }
- }
- else {
- post("%s - Attribute %s can't be set",th->thisName(),GetString(aname));
- }
- }
- return true;
-}
-
-#endif // FLEXT_NOATTREDIT
-
-
-#ifdef FLEXT_ATTRHIDE
-
-static void BinbufAdd(t_binbuf *b,const t_atom &at,bool transdoll)
-{
- if(transdoll && at.a_type == A_DOLLAR) {
- char tbuf[MAXPDSTRING];
- sprintf(tbuf, "$%d", at.a_w.w_index);
- binbuf_addv(b,"s",flext::MakeSymbol(tbuf));
- }
- else if(transdoll && at.a_type == A_DOLLSYM) {
- char tbuf[MAXPDSTRING];
- sprintf(tbuf, "$%s", at.a_w.w_symbol->s_name);
- binbuf_addv(b,"s",flext::MakeSymbol(tbuf));
- }
- else
- binbuf_add(b,1,const_cast<t_atom *>(&at));
-}
-
-void flext_base::BinbufArgs(t_binbuf *b,t_binbuf *args,bool withname,bool transdoll)
-{
- int argc = binbuf_getnatom(args);
- t_atom *argv = binbuf_getvec(args);
- int i,cnt = CheckAttrib(argc,argv);
- // process the creation arguments
- for(i = withname?0:1; i < cnt; ++i) BinbufAdd(b,argv[i],transdoll);
-}
-
-void flext_base::BinbufAttr(t_binbuf *b,bool transdoll)
-{
- // process the attributes
- AtomListStatic<32> la,lv;
- ListAttrib(la);
- int i,cnt = la.Count();
-
- for(i = 0; i < cnt; ++i) {
- const t_symbol *sym = GetSymbol(la[i]);
- const AtomList *lref = NULL;
-
- AttrData *a = attrdata->find(sym);
- if(a) {
- if(a->IsInit() && a->IsInitValue()) {
- lref = &a->GetInitValue();
-
-#if 0 /////////////////////////////////////////////////////////////
- // check for $-parameters
- lv = lref->Count();
- for(int j = 0; j < lref->Count(); ++j) {
- const char *s = IsSymbol((*lref)[j])?GetString((*lref)[j]):NULL;
- if(s && s[0] == '$') { // TODO: More refined checking?
- // prepend a "\"
- char tmp[256]; *tmp = '\\';
- strcpy(tmp+1,s);
- SetString(lv[j],tmp);
- }
- else
- lv[i] = (*lref)[j];
- }
-
- lref = &lv;
-#endif /////////////////////////////////////////////////////////////
- }
-// else if(a.IsSaved()) {
- else if(a->IsSaved()) {
- AttrItem *attr = FindAttrib(sym,true);
-
- // attribute must be gettable (so that the data can be retrieved) and puttable (so that the data can be inited)
- if(attr && attr->BothExist()) {
- GetAttrib(sym,attr,lv);
- lref = &lv;
- }
- }
- }
-
- if(lref) {
- char attrname[256]; *attrname= '@';
- // store name
- strcpy(attrname+1,GetString(sym));
- binbuf_addv(b,"s",MakeSymbol(attrname));
-
- // store value
- for(int j = 0; j < lref->Count(); ++j) BinbufAdd(b,(*lref)[j],transdoll);
- }
- }
-}
-
-//! Strip the attributes off the object command line
-void flext_base::cb_GfxVis(flext_hdr *c, t_glist *gl, int vis)
-{
- if(!gl->gl_isgraph || gl->gl_havewindow) {
- // show object if it's not inside a GOP
-
- flext_base *th = thisObject(c);
- t_text *x = (t_text *)c;
- FLEXT_ASSERT(x->te_binbuf);
-
- t_binbuf *b = binbuf_new();
- th->BinbufArgs(b,x->te_binbuf,true,false);
-
- // delete old object box text
- binbuf_free(x->te_binbuf);
- // set new one
- x->te_binbuf = b;
-
- t_rtext *rt = glist_findrtext(gl,x);
- rtext_retext(rt);
-
- // now display the changed text with the normal drawing function
- #ifdef __FLEXT_CLONEWIDGET
- text_widgetbehavior.w_visfn((t_gobj *)c,gl,vis);
- #else
- ori_vis((t_gobj *)c,gl,vis);
- #endif
- }
- // else don't show
-}
-
-void flext_base::cb_GfxSelect(flext_hdr *c,t_glist *gl,int state)
-{
- t_text *x = (t_text *)c;
- flext_base *th = thisObject(c);
-
- if(!gl->gl_isgraph || gl->gl_havewindow) {
- if(state || !gl->gl_editor->e_textdirty) {
- // change text only on selection
- // OR if text has _not_ been changed
- // -> since object will not be recreated we have to get rid
- // of the attribute text
-
- FLEXT_ASSERT(x->te_binbuf);
-
- t_binbuf *b = binbuf_new();
- th->BinbufArgs(b,x->te_binbuf,true,false);
- if(state) th->BinbufAttr(b,false);
-
- // delete old object box text
- binbuf_free(x->te_binbuf);
- // set new one
- x->te_binbuf = b;
-
- t_rtext *rt = glist_findrtext(gl,x);
- rtext_retext(rt);
-
- // fix lines
- canvas_fixlinesfor(gl,x);
- }
-
- // call original function
- #ifdef __FLEXT_CLONEWIDGET
- text_widgetbehavior.w_selectfn((t_gobj *)c,gl,state);
- #else
- ori_select((t_gobj *)c,gl,state);
- #endif
- }
-}
-
-void flext_base::cb_GfxSave(flext_hdr *c, t_binbuf *b)
-{
- flext_base *th = thisObject(c);
- t_text *t = (t_text *)c;
- binbuf_addv(b, "ssiis", gensym("#X"),gensym("obj"), t->te_xpix, t->te_ypix,MakeSymbol(th->thisName()));
-
- // process the object arguments
- th->BinbufArgs(b,t->te_binbuf,false,true);
- // process the attributes
- th->BinbufAttr(b,true);
- // add end sign
- binbuf_addv(b, ";");
-}
-
-#endif // FLEXT_ATTRHIDE
-
-#endif // FLEXT_SYS_PD
diff --git a/externals/grill/flext/source/flbase.cpp b/externals/grill/flext/source/flbase.cpp
deleted file mode 100644
index 404588d9..00000000
--- a/externals/grill/flext/source/flbase.cpp
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
-
-flext - C++ layer for Max/MSP and pd (pure data) externals
-
-Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-/*! \file flbase.cpp
- \brief Implementation of the internal flext base classes.
-
- \remark This is all derived from GEM by Mark Danks
-*/
-
-#include "flext.h"
-#include "flinternal.h"
-#include <string.h>
-#include <ctype.h>
-#include <stdlib.h>
-
-#if FLEXT_SYS == FLEXT_SYS_PD
-#ifdef _MSC_VER
- #pragma warning (push)
- #pragma warning (disable:4091)
-#endif
-// for canvas_realizedollar (should be noon-critical)
-#include <g_canvas.h>
-#ifdef _MSC_VER
- #pragma warning (pop)
-#endif
-#endif
-
-
-/////////////////////////////////////////////////////////
-//
-// flext_obj
-//
-/////////////////////////////////////////////////////////
-
-flext_hdr *flext_obj::m_holder = NULL;
-const t_symbol *flext_obj::m_holdname = NULL;
-flext_class *flext_obj::m_holdclass = NULL;
-int flext_obj::m_holdaargc = 0;
-const t_atom *flext_obj::m_holdaargv = NULL;
-//bool flext_obj::process_attributes = false;
-
-bool flext_obj::initing = false;
-bool flext_obj::exiting = false;
-bool flext_obj::init_ok;
-
-//void flext_obj::ProcessAttributes(bool attr) { process_attributes = attr; }
-
-#if FLEXT_SYS == FLEXT_SYS_MAX
-static const t_symbol *sym__shP = NULL;
-#endif
-
-/////////////////////////////////////////////////////////
-// Constructor
-//
-/////////////////////////////////////////////////////////
-flext_obj :: FLEXT_CLASSDEF(flext_obj)()
- : x_obj(m_holder)
- , clss(m_holdclass)
- , m_name(m_holdname)
-{
-#if FLEXT_SYS == FLEXT_SYS_PD
- m_canvas = canvas_getcurrent();
-#elif FLEXT_SYS == FLEXT_SYS_MAX
- m_canvas = (t_patcher *)sym__shP->s_thing;
- x_obj->curinlet = 0;
-#endif
-}
-
-/////////////////////////////////////////////////////////
-// Destructor
-//
-/////////////////////////////////////////////////////////
-flext_obj :: ~FLEXT_CLASSDEF(flext_obj)()
-{
- x_obj = NULL;
-}
-
-void flext_obj::__setup__(t_classid)
-{
-#if FLEXT_SYS == FLEXT_SYS_MAX
- sym__shP = MakeSymbol("#P");
-#endif
- flext::Setup();
-}
-
-bool flext_obj::Init() { return true; }
-bool flext_obj::Finalize() { return true; }
-void flext_obj::Exit() {}
-
-void flext_obj::DefineHelp(t_classid c,const char *ref,const char *dir,bool addtilde)
-{
-#if FLEXT_SYS == FLEXT_SYS_PD
- char tmp[256];
- if(dir && *dir) {
- strcpy(tmp,dir);
- char *last = tmp+strlen(tmp)-1;
- if(*last != '/') strcat(last,"/");
- strcat(last,ref);
- }
- else
- strcpy(tmp,ref);
- if(addtilde) strcat(tmp,"~");
-
- ::class_sethelpsymbol(getClass(c),gensym(const_cast<char *>(tmp)));
-#else
- // no solution for Max/MSP yet
-#endif
-}
-
-bool flext_obj::GetParamSym(t_atom &dst,const t_symbol *sym,t_canvas *c)
-{
-#if FLEXT_SYS == FLEXT_SYS_PD && defined(PD_MINOR_VERSION) && PD_MINOR_VERSION >= 37
- if(!c) c = canvas_getcurrent();
-
- const char *s = GetString(sym);
- if((s[0] == '$' || s[0] == '#') && isdigit(s[1])) {
- const t_symbol *res;
- // patcher parameter detected... get value!
- if(s[0] != '$') {
- char tmp[MAXPDSTRING];
- strcpy(tmp,s);
- tmp[0] = '$';
- res = canvas_realizedollar(c,const_cast<t_symbol *>(MakeSymbol(tmp)));
- }
- else
- res = canvas_realizedollar(c,const_cast<t_symbol *>(sym));
-
- // check for number
- const char *c = GetString(res);
- while(*c && (isdigit(*c) || *c == '.')) ++c;
-
- if(!*c)
- SetFloat(dst,(float)atof(GetString(res)));
- else
- SetSymbol(dst,res);
- return true;
- }
- else
-#else
- #pragma message("Not implemented")
-#endif
- SetSymbol(dst,sym);
- return true;
-}
-
-
-#if FLEXT_SYS == FLEXT_SYS_PD
-// this declaration is missing in m_pd.h (0.37-0 and -1)
-// but it is there in 0.37-2 (but how to tell which micro-version?)
-extern "C"
-#ifdef _MSC_VER
-__declspec(dllimport)
-#endif
-void canvas_getargs(int *argcp, t_atom **argvp);
-#endif
-
-
-void flext_obj::GetCanvasArgs(AtomList &args) const
-{
-#if FLEXT_SYS == FLEXT_SYS_PD
- int argc;
- t_atom *argv;
- canvas_getargs(&argc,&argv);
- args(argc,argv);
-#else
- #pragma message("Not implemented")
- args(0);
-#endif
-}
-
-
-#if FLEXT_SYS == FLEXT_SYS_MAX
-static short patcher_myvol(t_patcher *x)
-{
- t_box *w;
- if(x->p_vol)
- return x->p_vol;
- else if((w = (t_box *)x->p_vnewobj) != NULL)
- return patcher_myvol(w->b_patcher);
- else
- return 0;
-}
-#endif
-
-void flext_obj::GetCanvasDir(char *buf,size_t bufsz) const
-{
-#if FLEXT_SYS == FLEXT_SYS_PD
- const char *c = GetString(canvas_getdir(thisCanvas()));
- strncpy(buf,c,bufsz);
-#elif FLEXT_SYS == FLEXT_SYS_MAX
- short path = patcher_myvol(thisCanvas());
- // \TODO dangerous!! no check for path length (got to be long enough... like 1024 chars)
- path_topathname(path,NULL,buf);
-#else
-#error Not implemented
-#endif
-}
diff --git a/externals/grill/flext/source/flbase.h b/externals/grill/flext/source/flbase.h
deleted file mode 100644
index 640a4688..00000000
--- a/externals/grill/flext/source/flbase.h
+++ /dev/null
@@ -1,575 +0,0 @@
-/*
-
-flext - C++ layer for Max/MSP and pd (pure data) externals
-
-Copyright (c) 2001-2006 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-/*! \file flbase.h
- \brief Internal flext base classes
-
- \remark This uses some ideas of GEM invented by Mark Danks
-*/
-
-#ifndef __FLEXT_BASE_H
-#define __FLEXT_BASE_H
-
-#include "flstdc.h"
-#include "flsupport.h"
-
-
-class FLEXT_SHARE FLEXT_CLASSDEF(flext_obj);
-typedef class FLEXT_CLASSDEF(flext_obj) flext_obj;
-
-// ----------------------------------------------------------------------------
-/*! \brief The obligatory PD or Max/MSP object header
- \internal
-
- This is in a separate struct to assure that obj is the very first thing.
- If it were the first thing in flext_obj, then there could be problems with
- the virtual table of the C++ class.
-*/
-// ----------------------------------------------------------------------------
-
-struct FLEXT_SHARE flext_hdr
-{
- /*! \defgroup FLEXT_OBJHEADER Actual PD or Max/MSP object
- \internal
- @{
- */
-
- /*! \brief The obligatory object header
- \note MUST reside at memory offset 0 (no virtual table possible)
- */
- t_sigobj obj;
-
-#if FLEXT_SYS == FLEXT_SYS_PD
- //! PD only: float signal holder for pd
- float defsig;
-#endif
-
-#if FLEXT_SYS == FLEXT_SYS_MAX
- //! Max/MSP only: current inlet used by proxy objects
- long curinlet;
-#endif
-
- /*! \brief This points to the actual polymorphic C++ class
- */
- FLEXT_CLASSDEF(flext_obj) *data;
-
- //! @} FLEXT_OBJHEADER
-};
-
-
-class flext_class;
-
-// ----------------------------------------------------------------------------
-/*! \brief The mother of base classes for all flext external objects
-
- Each extern which is written in C++ needs to use the #defines at the
- end of this header file.
-
- The define
-
- FLEXT_HEADER(NEW_CLASS, PARENT_CLASS)
-
- should be somewhere in your header file.
- One of the defines like
-
- FLEXT_NEW(NEW_CLASS)
- or
- FLEXT_NEW_2(NEW_CLASS, float, float)
-
- should be the first thing in your implementation file.
- NEW_CLASS is the name of your class and PARENT_CLASS is the
- parent of your class.
-*/
-// ----------------------------------------------------------------------------
-
-class FLEXT_SHARE FLEXT_CLASSDEF(flext_obj):
- public flext
-{
- public:
-
-// --- creation -------------------------------------------------------
-
- /*! \defgroup FLEXT_OBJ_CREATION Object creation/destruction functionality
- @{
- */
-
- //! Constructor
- FLEXT_CLASSDEF(flext_obj)();
-
- //! Destructor
- virtual ~FLEXT_CLASSDEF(flext_obj)();
-
- /*! \brief Signal a construction problem
- \note This should only be used in the constructor. Object creation will be aborted.
- */
- static void InitProblem() { init_ok = false; }
-
- /*! \brief Enable/disable attribute procession (default = false)
- \note Use that in the static class setup function (also library setup function)
- */
-// static void ProcessAttributes(bool attr); //{ process_attributes = attr; }
-
- //! Virtual function called at creation time (but after the constructor)
- // this also guarantees that there are no instances of flext_obj
- virtual bool Init();
-
- //! Virtual function called after Init() has succeeded
- virtual bool Finalize();
-
- //! Virtual function called at destruction (before the destructor)
- virtual void Exit();
-
- //! @} FLEXT_OBJ_CREATION
-
-// --- info -------------------------------------------------------
-
- /*! \defgroup FLEXT_OBJ_INFO Get various information
- @{
- */
-
- //! Get the object's canvas
- t_canvas *thisCanvas() const { return m_canvas; }
-
- //! Get the PD or Max/MSP object
- t_sigobj *thisHdr() { FLEXT_ASSERT(x_obj); return &x_obj->obj; }
- const t_sigobj *thisHdr() const { FLEXT_ASSERT(x_obj); return &x_obj->obj; }
- //! Get the class name (as a string)
- const char *thisName() const { return GetString(m_name); }
- //! Get the class name (as a symbol)
- const t_symbol *thisNameSym() const { return m_name; }
- //! Get the class pointer
- t_class *thisClass() const;
-
- //! Typedef for unique class identifier
- typedef flext_class *t_classid;
-
- //! Get unique id for object class
- t_classid thisClassId() const { return clss; }
-
- //! Get class pointer from class id
- static t_class *getClass(t_classid id);
-
- static bool HasAttributes(t_classid id);
- static bool IsDSP(t_classid id);
- static bool HasDSPIn(t_classid id);
- static bool IsLib(t_classid id);
-
- bool HasAttributes() const;
- bool IsLib() const;
- bool IsDSP() const;
- bool HasDSPIn() const;
-
-#if FLEXT_SYS == FLEXT_SYS_MAX
- // under Max/MSP it could be necessary to activate DSP also for message objects
- // namely for those coexisting with DSP objects in a library
- bool NeedDSP() const;
-#endif
-
- //! @} FLEXT_OBJ_INFO
-
-// --- help -------------------------------------------------------
-
- /*! \defgroup FLEXT_OBJ_HELP Help/assistance functionality
- \remark This is still PD only
- @{
- */
-
- /*! Define the help reference symbol for a class
- \internal
- */
- static void DefineHelp(t_classid c,const char *ref,const char *dir = NULL,bool addtilde = false);
-
- //! Define the help reference symbol for a class
- void DefineHelp(const char *ref,const char *dir = NULL,bool addtilde = false) { DefineHelp(thisClassId(),ref,dir,addtilde); }
-
- //! @} FLEXT_OBJ_HELP
-
-
-// --- internal stuff -------------------------------------------------------
-
- /*! \defgroup FLEXT_OBJ_INTERNAL Internal stuff
- \internal
- @{
- */
-
- protected:
-
- //! backpointer to object header
- mutable flext_hdr *x_obj;
-
- //! pointer to flext class definition
- flext_class *clss;
-
-// static bool process_attributes;
-
- private:
-
- //! The canvas (patcher) that the object is in
- mutable t_canvas *m_canvas;
-
- //! Flag for successful object construction
- static bool init_ok;
-
- // flags for init and exit procedure;
- static bool initing;
- static bool exiting;
-
- public:
-
- //! Creation callback
- static void __setup__(t_classid);
-
- /*! \brief This is a temporary holder
- \warning don't touch it!
- */
- static flext_hdr *m_holder;
- //! Hold object's class during construction
- static flext_class *m_holdclass;
- //! Hold object's name during construction
- static const t_symbol *m_holdname;
-
- //! Holders for attribute procession flag
- static int m_holdaargc;
- static const t_atom *m_holdaargv;
-
- /*! The object's name in the patcher
- \note objects of the same class can have various alias names!
- */
- const t_symbol *m_name;
-
- /*! Return true if in object initialization phase
- true when in constructor or Init, false when in Finalize
- */
- static bool Initing() { return initing; }
-
- //! Return true if in object destruction phase (Exit or destructor)
- static bool Exiting() { return exiting; }
-
- // Definitions for library objects
- static void lib_init(const char *name,void setupfun());
- static void obj_add(bool lib,bool dsp,bool noi,bool attr,const char *idname,const char *names,void setupfun(t_classid),FLEXT_CLASSDEF(flext_obj) *(*newfun)(int,t_atom *),void (*freefun)(flext_hdr *),int argtp1,...);
-#if FLEXT_SYS == FLEXT_SYS_MAX
- static flext_hdr *obj_new(const t_symbol *s,short argc,t_atom *argv);
-#else
- static flext_hdr *obj_new(const t_symbol *s,int argc,t_atom *argv);
-#endif
- static void obj_free(flext_hdr *o);
-
- //! Convert $0 or #0 symbol into appropriate value
- static bool GetParamSym(t_atom &dst,const t_symbol *s,t_canvas *c);
-
- //! Get the canvas arguments
- void GetCanvasArgs(AtomList &args) const;
-
- //! Get the canvas/patcher directory
- void GetCanvasDir(char *buf,size_t bufsz) const;
-
- //! @} FLEXT_OBJ_INTERNAL
-};
-
-
-// max. 4 creation args (see the following macros)
-#define FLEXT_MAXNEWARGS 4
-
-// max. 5 method args (see the following macros)
-#define FLEXT_MAXMETHARGS 5
-
-// prefixes for the macro generated handler functions
-#define FLEXT_CALL_PRE(F) flext_c_##F
-#define FLEXT_THR_PRE(F) flext_t_##F
-#define FLEXT_GET_PRE(F) flext_g_##F
-#define FLEXT_SET_PRE(F) flext_s_##F
-
-
-#ifndef FLEXT_ATTRIBUTES
-/*! \brief Switch for global attribute processing
- \note Should be set to 1 or 0 (or not be defined)
- \ingroup FLEXT_DEFS
-*/
-#define FLEXT_ATTRIBUTES \
-\
-0
-
-
-#elif FLEXT_ATTRIBUTES != 0 && FLEXT_ATTRIBUTES != 1
-#error "FLEXT_ATTRIBUTES must be 0 or 1"
-#endif
-
-// ----------------------------------------
-// These should be used in the header
-// ----------------------------------------
-
-
-#define FLEXT_REALHDR(NEW_CLASS, PARENT_CLASS) \
-public: \
-typedef NEW_CLASS thisType; \
-typedef PARENT_CLASS thisParent; \
-static FLEXT_CLASSDEF(flext_obj) *__init__(int argc,t_atom *argv); \
-static void __free__(flext_hdr *hdr) { \
- FLEXT_CLASSDEF(flext_obj) *mydata = hdr->data; delete mydata; \
- hdr->flext_hdr::~flext_hdr(); \
-} \
-static void __setup__(t_classid classid) { thisParent::__setup__(classid); }
-
-
-#define FLEXT_REALHDR_S(NEW_CLASS, PARENT_CLASS,SETUPFUN) \
-public: \
-typedef NEW_CLASS thisType; \
-typedef PARENT_CLASS thisParent; \
-static FLEXT_CLASSDEF(flext_obj) *__init__(int argc,t_atom *argv); \
-static void __free__(flext_hdr *hdr) { \
- FLEXT_CLASSDEF(flext_obj) *mydata = hdr->data; delete mydata; \
- hdr->flext_hdr::~flext_hdr(); \
-} \
-static void __setup__(t_classid classid) { \
- thisParent::__setup__(classid); \
- thisType::SETUPFUN(classid); \
-}
-
-#define FLEXT_REALHDR_T(NEW_CLASS, PARENT_CLASS) \
-public: \
-typedef NEW_CLASS thisType; \
-typedef PARENT_CLASS thisParent; \
-typedef typename thisParent::t_classid t_classid; \
-static FLEXT_CLASSDEF(flext_obj) *__init__(int argc,t_atom *argv); \
-static void __free__(flext_hdr *hdr) { \
- FLEXT_CLASSDEF(flext_obj) *mydata = hdr->data; delete mydata; \
- hdr->flext_hdr::~flext_hdr(); \
-} \
-static void __setup__(t_classid classid) { thisParent::__setup__(classid); }
-
-
-#define FLEXT_REALHDR_TS(NEW_CLASS, PARENT_CLASS,SETUPFUN) \
-public: \
-typedef NEW_CLASS thisType; \
-typedef PARENT_CLASS thisParent; \
-typedef typename thisParent::t_classid t_classid; \
-static FLEXT_CLASSDEF(flext_obj) *__init__(int argc,t_atom *argv); \
-static void __free__(flext_hdr *hdr) { \
- FLEXT_CLASSDEF(flext_obj) *mydata = hdr->data; delete mydata; \
- hdr->flext_hdr::~flext_hdr(); \
-} \
-static void __setup__(t_classid classid) { \
- thisParent::__setup__(classid); \
- thisType::SETUPFUN(classid); \
-}
-
-
-// generate name of dsp/non-dsp setup function
-#if FLEXT_SYS == FLEXT_SYS_PD || FLEXT_SYS == FLEXT_SYS_MAX
- #define FLEXT_STPF_0(NAME) NAME##_setup
- #define FLEXT_STPF_1(NAME) NAME##_tilde_setup
-#else
-#error Platform not supported
-#endif
-
-#define FLEXT_STPF_(DSP) FLEXT_STPF_##DSP
-#define FLEXT_STPF(NAME,DSP) FLEXT_STPF_(DSP)(NAME)
-
-
-// --------------------------------------------------------------------------------------
-
-
-// used in library setup functions to register the individual objects in the library
-#define REAL_SETUP(cl,DSP) extern void FLEXT_STPF(cl,DSP)(); FLEXT_STPF(cl,DSP)();
-
-// specify that to define the library itself
-#if FLEXT_SYS == FLEXT_SYS_PD
-#define REAL_LIB_SETUP(NAME,SETUPFUN) extern "C" FLEXT_EXT void NAME##_setup() { flext_obj::lib_init(#NAME,SETUPFUN); }
-#elif FLEXT_SYS == FLEXT_SYS_MAX
-#define REAL_LIB_SETUP(NAME,SETUPFUN) extern "C" FLEXT_EXT int main() { flext_obj::lib_init(#NAME,SETUPFUN); return 0; }
-#else
-#error Platform not supported
-#endif
-
-
-// --------------------------------------------------
-
-
-#define FLEXT_EXP_0 extern "C" FLEXT_EXT
-#define FLEXT_EXP_1
-#define FLEXT_EXP(LIB) FLEXT_EXP_##LIB
-
-#if FLEXT_SYS == FLEXT_SYS_PD
-#define FLEXT_OBJ_SETUP_0(NEW_CLASS,DSP)
-#elif FLEXT_SYS == FLEXT_SYS_MAX
-#define FLEXT_OBJ_SETUP_0(NEW_CLASS,DSP) extern "C" FLEXT_EXT int main() { FLEXT_STPF(NEW_CLASS,DSP)(); return 0; }
-#else
-#error not implemented
-#endif
-
-#define FLEXT_OBJ_SETUP_1(NEW_CLASS,DSP)
-
-#define FLEXT_OBJ_SETUP(NEW_CLASS,DSP,LIB) FLEXT_OBJ_SETUP_##LIB(NEW_CLASS,DSP)
-
-
-
-// ----------------------------------------
-// These definitions are used below
-// ----------------------------------------
-
-#if FLEXT_SYS == FLEXT_SYS_PD || FLEXT_SYS == FLEXT_SYS_MAX
- // maybe that's not necessary
- #define FLEXTTPN_NULL A_NULL
- #if FLEXT_SYS == FLEXT_SYS_PD
- #define FLEXTTPN_PTR A_POINTER
- #else
- #define FLEXTTPN_INT A_INT
- #define FLEXTTPN_DEFINT A_DEFINT
- #endif
- #define FLEXTTPN_FLOAT A_FLOAT
- #define FLEXTTPN_DEFFLOAT A_DEFFLOAT
- #define FLEXTTPN_SYM A_SYMBOL
- #define FLEXTTPN_DEFSYM A_DEFSYMBOL
- #define FLEXTTPN_VAR A_GIMME
-#else
- #define FLEXTTPN_NULL 0
- #define FLEXTTPN_PTR 1
- #define FLEXTTPN_INT 2
- #define FLEXTTPN_FLOAT 3
- #define FLEXTTPN_SYM 4
- #define FLEXTTPN_VAR 5
- #define FLEXTTPN_DEFINT 6
- #define FLEXTTPN_DEFFLOAT 7
- #define FLEXTTPN_DEFSYM 8
-#endif
-
-// Shortcuts for PD/Max type arguments
-#define FLEXTTYPE_void FLEXTTPN_NULL
-#define CALLBTYPE_void void
-#define FLEXTTYPE_float FLEXTTPN_FLOAT
-#define FLEXTTYPE_float0 FLEXTTPN_DEFFLOAT
-#define CALLBTYPE_float float
-#define FLEXTTYPE_t_float FLEXTTPN_FLOAT
-#define CALLBTYPE_t_float t_float
-
-#if FLEXT_SYS == FLEXT_SYS_PD
-#define FLEXTTYPE_int FLEXTTPN_FLOAT
-#define FLEXTTYPE_int0 FLEXTTPN_DEFFLOAT
-#define CALLBTYPE_int float
-#define FLEXTTYPE_bool FLEXTTPN_FLOAT
-#define FLEXTTYPE_bool0 FLEXTTPN_DEFFLOAT
-#define CALLBTYPE_bool float
-#elif FLEXT_SYS == FLEXT_SYS_MAX
-#define FLEXTTYPE_int FLEXTTPN_INT
-#define FLEXTTYPE_int0 FLEXTTPN_DEFINT
-#define CALLBTYPE_int int
-#define FLEXTTYPE_bool FLEXTTPN_INT
-#define FLEXTTYPE_bool0 FLEXTTPN_DEFINT
-#define CALLBTYPE_bool int
-#else
-#error Platform not supported
-#endif
-
-#define FLEXTTYPE_t_symptr FLEXTTPN_SYM
-#define FLEXTTYPE_t_symptr0 FLEXTTPN_DEFSYM
-#define CALLBTYPE_t_symptr t_symptr
-#define FLEXTTYPE_t_symtype FLEXTTYPE_t_symptr
-#define FLEXTTYPE_t_symtype0 FLEXTTYPE_t_symptr0
-#define CALLBTYPE_t_symtype t_symptr
-#define FLEXTTYPE_t_ptrtype FLEXTTPN_PTR
-#define CALLBTYPE_t_ptrtype t_ptrtype
-
-#define FLEXTTP(TP) FLEXTTYPE_ ## TP
-#define CALLBTP(TP) CALLBTYPE_ ## TP
-
-
-#define ARGMEMBER_bool(a) GetBool(a)
-#define ARGMEMBER_bool0(a) ARGMEMBER_bool(a)
-#define ARGMEMBER_int(a) GetInt(a)
-#define ARGMEMBER_int0(a) ARGMEMBER_int(a)
-#define ARGMEMBER_float(a) GetFloat(a)
-#define ARGMEMBER_float0(a) ARGMEMBER_float(a)
-#define ARGMEMBER_t_symptr(a) GetSymbol(a)
-#define ARGMEMBER_t_symptr0(a) ARGMEMBER_t_symptr(a)
-#define ARGMEMBER_t_symtype(a) ARGMEMBER_t_symptr(a)
-#define ARGMEMBER_t_symtype0(a) ARGMEMBER_t_symptr0(a)
-#define ARGCAST(a,tp) ARGMEMBER_##tp(a)
-
-#define REAL_NEW(NAME,NEW_CLASS,DSP,NOI,LIB) \
-flext_obj *NEW_CLASS::__init__(int ,t_atom *) \
-{ \
- return new NEW_CLASS; \
-} \
-FLEXT_EXP(LIB) void FLEXT_STPF(NEW_CLASS,DSP)() \
-{ \
- flext_obj::obj_add(LIB,DSP,NOI,FLEXT_ATTRIBUTES,#NEW_CLASS,NAME,NEW_CLASS::__setup__,NEW_CLASS::__init__,&NEW_CLASS::__free__,FLEXTTPN_NULL); \
-} \
-FLEXT_OBJ_SETUP(NEW_CLASS,DSP,LIB)
-
-#define REAL_NEW_V(NAME,NEW_CLASS,DSP,NOI,LIB) \
-flext_obj *NEW_CLASS::__init__(int argc,t_atom *argv) \
-{ \
- return new NEW_CLASS(argc,argv); \
-} \
-FLEXT_EXP(LIB) void FLEXT_STPF(NEW_CLASS,DSP)() \
-{ \
- flext_obj::obj_add(LIB,DSP,NOI,FLEXT_ATTRIBUTES,#NEW_CLASS,NAME,NEW_CLASS::__setup__,NEW_CLASS::__init__,&NEW_CLASS::__free__,FLEXTTPN_VAR,FLEXTTPN_NULL); \
-} \
-FLEXT_OBJ_SETUP(NEW_CLASS,DSP,LIB)
-
-#define REAL_NEW_1(NAME,NEW_CLASS,DSP,NOI,LIB, TYPE1) \
-flext_obj *NEW_CLASS::__init__(int,t_atom *argv) \
-{ \
- return new NEW_CLASS(ARGCAST(argv[0],TYPE1)); \
-} \
-FLEXT_EXP(LIB) void FLEXT_STPF(NEW_CLASS,DSP)() \
-{ \
- flext_obj::obj_add(LIB,DSP,NOI,FLEXT_ATTRIBUTES,#NEW_CLASS,NAME,NEW_CLASS::__setup__,NEW_CLASS::__init__,NEW_CLASS::__free__,FLEXTTP(TYPE1),FLEXTTPN_NULL); \
-} \
-FLEXT_OBJ_SETUP(NEW_CLASS,DSP,LIB)
-
-#define REAL_NEW_2(NAME,NEW_CLASS,DSP,NOI,LIB, TYPE1,TYPE2) \
-flext_obj *NEW_CLASS::__init__(int,t_atom *argv) \
-{ \
- return new NEW_CLASS(ARGCAST(argv[0],TYPE1),ARGCAST(argv[1],TYPE2)); \
-} \
-FLEXT_EXP(LIB) void FLEXT_STPF(NEW_CLASS,DSP)() \
-{ \
- flext_obj::obj_add(LIB,DSP,NOI,FLEXT_ATTRIBUTES,#NEW_CLASS,NAME,NEW_CLASS::__setup__,NEW_CLASS::__init__,NEW_CLASS::__free__,FLEXTTP(TYPE1),FLEXTTP(TYPE2),FLEXTTPN_NULL); \
-} \
-FLEXT_OBJ_SETUP(NEW_CLASS,DSP,LIB)
-
-#define REAL_NEW_3(NAME,NEW_CLASS,DSP,NOI,LIB, TYPE1, TYPE2, TYPE3) \
-flext_obj *NEW_CLASS::__init__(int,t_atom *argv) \
-{ \
- return new NEW_CLASS(ARGCAST(argv[0],TYPE1),ARGCAST(argv[1],TYPE2),ARGCAST(argv[2],TYPE3)); \
-} \
-FLEXT_EXP(LIB) void FLEXT_STPF(NEW_CLASS,DSP)() \
-{ \
- flext_obj::obj_add(LIB,DSP,NOI,FLEXT_ATTRIBUTES,#NEW_CLASS,NAME,NEW_CLASS::__setup__,NEW_CLASS::__init__,NEW_CLASS::__free__,FLEXTTP(TYPE1),FLEXTTP(TYPE2),FLEXTTP(TYPE3),FLEXTTPN_NULL); \
-} \
-FLEXT_OBJ_SETUP(NEW_CLASS,DSP,LIB)
-
-#define REAL_NEW_4(NAME,NEW_CLASS,DSP,NOI,LIB, TYPE1,TYPE2, TYPE3, TYPE4) \
-flext_obj *NEW_CLASS::__init__(int,t_atom *argv) \
-{ \
- return new NEW_CLASS(ARGCAST(argv[0],TYPE1),ARGCAST(argv[1],TYPE2),ARGCAST(argv[2],TYPE3),ARGCAST(argv[3],TYPE4)); \
-} \
-FLEXT_EXP(LIB) void FLEXT_STPF(NEW_CLASS,DSP)() \
-{ \
- flext_obj::obj_add(LIB,DSP,NOI,FLEXT_ATTRIBUTES,#NEW_CLASS,NAME,NEW_CLASS::__setup__,NEW_CLASS::__init__,NEW_CLASS::__free__,FLEXTTP(TYPE1),FLEXTTP(TYPE2),FLEXTTP(TYPE3),FLEXTTP(TYPE4),FLEXTTPN_NULL); \
-} \
-FLEXT_OBJ_SETUP(NEW_CLASS,DSP,LIB)
-
-
-// Shortcuts for method arguments:
-#define FLEXTARG_float a_float
-#define FLEXTARG_int a_int
-#define FLEXTARG_bool a_int
-#define FLEXTARG_t_float a_float
-#define FLEXTARG_t_symtype a_symbol
-#define FLEXTARG_t_symptr a_symbol
-#define FLEXTARG_t_ptrtype a_pointer
-
-#define FLEXTARG(TP) FLEXTARG_ ## TP
-
-
-#endif
diff --git a/externals/grill/flext/source/flbind.cpp b/externals/grill/flext/source/flbind.cpp
deleted file mode 100644
index 8f78c300..00000000
--- a/externals/grill/flext/source/flbind.cpp
+++ /dev/null
@@ -1,261 +0,0 @@
-/*
-
-flext - C++ layer for Max/MSP and pd (pure data) externals
-
-Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-/*! \file flbind.cpp
- \brief Functionality for symbol-bound methods.
-*/
-
-#include "flext.h"
-#include "flinternal.h"
-
-
-t_class *flext_base::pxbnd_class = NULL;
-
-#if FLEXT_SYS == FLEXT_SYS_MAX
-t_object *px_freelist = NULL;
-t_messlist px_messlist[3];
-#endif
-
-/*! \brief Set up the proxy class for symbol-bound methods
-*/
-void flext_base::SetupBindProxy()
-{
- // already initialized?
- if(!pxbnd_class) {
-#if FLEXT_SYS == FLEXT_SYS_PD
- pxbnd_class = class_new(gensym("flext_base bind proxy"),NULL,NULL,sizeof(pxbnd_object),CLASS_PD|CLASS_NOINLET, A_NULL);
- add_anything(pxbnd_class,pxbnd_object::px_method); // for symbol-bound methods
-#elif FLEXT_SYS == FLEXT_SYS_MAX
- pxbnd_class = new t_class;
-
- pxbnd_class->c_sym = const_cast<t_symbol *>(sym__);
- pxbnd_class->c_freelist = &px_freelist;
- pxbnd_class->c_freefun = NULL;
- pxbnd_class->c_size = sizeof(pxbnd_object);
- pxbnd_class->c_tiny = 0;
- pxbnd_class->c_noinlet = 1;
- px_messlist[0].m_sym = (t_symbol *)pxbnd_class;
-
- px_messlist[1].m_sym = const_cast<t_symbol *>(sym_anything);
- px_messlist[1].m_fun = (method)pxbnd_object::px_method;
- px_messlist[1].m_type[0] = A_GIMME;
- px_messlist[1].m_type[1] = 0;
-
- px_messlist[2].m_sym = 0;
-#else
-#pragma warning("Not implemented!")
-#endif
- }
-}
-
-
-flext_base::BindItem::BindItem(bool (*f)(flext_base *,t_symbol *s,int,t_atom *,void *data),pxbnd_object *p):
- Item(NULL),fun(f),px(p)
-{}
-
-flext_base::BindItem::~BindItem()
-{
- if(px) {
- FLEXT_ASSERT(!fun); // check if already unbound
- object_free(&px->obj);
- }
-}
-
-void flext_base::BindItem::Unbind(const t_symbol *tag)
-{
- if(px) {
- FLEXT_ASSERT(fun);
-
-#if FLEXT_SYS == FLEXT_SYS_PD
- pd_unbind(&px->obj.ob_pd,const_cast<t_symbol *>(tag));
-#elif FLEXT_SYS == FLEXT_SYS_MAX
- if(tag->s_thing == (t_object *)px)
- const_cast<t_symbol *>(tag)->s_thing = NULL;
- else
- error("flext - Binding to symbol %s not found",tag->s_name);
-#else
-# pragma warning("Not implemented")
-#endif
-
- fun = NULL;
- }
-}
-
-#if FLEXT_SYS == FLEXT_SYS_PD
- //! Bind object to a symbol
- bool flext_base::Bind(const t_symbol *sym) { pd_bind(&thisHdr()->ob_pd,const_cast<t_symbol *>(sym)); return true; }
- //! Unbind object from a symbol
- bool flext_base::Unbind(const t_symbol *sym) { pd_unbind(&thisHdr()->ob_pd,const_cast<t_symbol *>(sym)); return true; }
-#elif FLEXT_SYS == FLEXT_SYS_MAX
- //! Bind object to a symbol
- bool flext_base::Bind(const t_symbol *sym) { if(sym->s_thing) return false; else { const_cast<t_symbol *>(sym)->s_thing = (t_object *)thisHdr(); return true; } }
- //! Unbind object from a symbol
- bool flext_base::Unbind(const t_symbol *sym) { if(sym->s_thing != (t_object *)thisHdr()) return false; else { const_cast<t_symbol *>(sym)->s_thing = NULL; return true; } }
-#endif
-
-bool flext_base::BindMethod(const t_symbol *sym,bool (*fun)(flext_base *,t_symbol *s,int argc,t_atom *argv,void *data),void *data)
-{
- if(!bindhead)
- bindhead = new ItemCont;
- else {
- // Search for symbol
- for(Item *it = bindhead->FindList(sym); it; it = it->nxt) {
- BindItem *item = (BindItem *)it;
-
- // go through all items with matching tag
- if(item->fun == fun) {
- // function already registered -> bail out!
- post("%s - Symbol already bound with this method",thisName());
- return false;
- }
- }
- }
-
- SetupBindProxy();
-
-#if FLEXT_SYS == FLEXT_SYS_PD
- pxbnd_object *px = (pxbnd_object *)object_new(pxbnd_class);
-#elif FLEXT_SYS == FLEXT_SYS_MAX
- pxbnd_object *px = (pxbnd_object *)newobject(px_messlist);
-#else
-#pragma warning("Not implemented!")
-#endif
-
- if(px) {
- BindItem *mi = new BindItem(fun,px);
- bindhead->Add(mi,sym);
-
- px->init(this,mi,data);
-
-#if FLEXT_SYS == FLEXT_SYS_PD
- pd_bind(&px->obj.ob_pd,const_cast<t_symbol *>(sym));
-#elif FLEXT_SYS == FLEXT_SYS_MAX
- if(!sym->s_thing)
- const_cast<t_symbol *>(sym)->s_thing = (t_object *)px;
- else
- error("%s - Symbol is already bound",thisName());
-#else
-# pragma warning("Not implemented")
-#endif
- }
- else
- error("%s - Symbol proxy could not be created",thisName());
-
- return true;
-}
-
-bool flext_base::UnbindMethod(const t_symbol *sym,bool (*fun)(flext_base *,t_symbol *s,int argc,t_atom *argv,void *data),void **data)
-{
- bool ok = false;
-
- if(bindhead && bindhead->Contained(0)) {
- ItemSet &set = bindhead->GetInlet();
-
-/*
- ItemSet::iterator it1,it2;
- if(sym) {
- // specific tag
- it1 = it2 = set.find(sym); it2++;
- }
- else {
- // any tag
- it1 = set.begin(),it2 = set.end();
- }
-
- BindItem *it = NULL;
- for(ItemSet::iterator si = it1; si != it2 && !it; ++si) {
- for(Item *i = si.data(); i; i = i->nxt) {
- BindItem *item = (BindItem *)i;
- if(!fun || item->fun == fun)
- {
- it = item;
- if(!sym) sym = si.key();
- break;
- }
- }
- }
-*/
- BindItem *item = NULL;
- if(sym) {
- // symbol is given
- Item *it = set.find(sym);
- if(fun) {
- // check if function matches
- for(; it && static_cast<BindItem *>(it)->fun != fun; it = it->nxt) {}
- }
- item = static_cast<BindItem *>(it);
- }
- else {
- // take any entry that matches
- for(ItemSet::iterator si(set); si && !item; ++si) {
- for(Item *i = si.data(); i; i = i->nxt) {
- BindItem *bit = (BindItem *)i;
- if(!fun || bit->fun == fun) {
- item = bit;
- if(!sym) sym = si.key();
- break;
- }
- }
- }
- }
-
- if(item) {
- if(data) *data = item->px->data;
- ok = bindhead->Remove(item,sym,0,false);
- if(ok) {
- item->Unbind(sym);
- delete item;
- }
- }
- }
- return ok;
-}
-
-bool flext_base::GetBoundMethod(const t_symbol *sym,bool (*fun)(flext_base *,t_symbol *s,int argc,t_atom *argv,void *data),void *&data)
-{
- if(bindhead) {
- // Search for symbol
- for(Item *it = bindhead->FindList(sym); it; it = it->nxt) {
- BindItem *item = (BindItem *)it;
-
- // go through all items with matching tag
- if(item->fun == fun) {
- data = item->px->data;
- return true;
- }
- }
- }
- return false;
-}
-
-bool flext_base::UnbindAll()
-{
- if(bindhead && bindhead->Contained(0)) {
- ItemSet &set = bindhead->GetInlet();
-// for(ItemSet::iterator si = set.begin(); si != set.end(); ++si) {
- for(ItemSet::iterator si(set); si; ++si) {
- Item *lst = si.data();
- while(lst) {
- Item *nxt = lst->nxt;
- BindItem *it = (BindItem *)lst;
- it->Unbind(si.key());
- delete it;
- lst = nxt;
- }
- }
- set.clear();
- }
- return true;
-}
-
-void flext_base::pxbnd_object::px_method(pxbnd_object *c,const t_symbol *s,int argc,t_atom *argv)
-{
- c->item->fun(c->base,(t_symbol *)s,argc,(t_atom *)argv,c->data);
-}
diff --git a/externals/grill/flext/source/flbuf.cpp b/externals/grill/flext/source/flbuf.cpp
deleted file mode 100644
index a807c20b..00000000
--- a/externals/grill/flext/source/flbuf.cpp
+++ /dev/null
@@ -1,348 +0,0 @@
-/*
-
-flext - C++ layer for Max/MSP and pd (pure data) externals
-
-Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-/*! \file flbuf.cpp
- \brief Implementation of the buffer abstraction class.
-*/
-
-#include "flext.h"
-#include "flfeatures.h"
-
-#if FLEXT_SYS != FLEXT_SYS_JMAX
-
-#if FLEXT_SYS == FLEXT_SYS_PD
-#define DIRTY_INTERVAL 0 // buffer dirty check in msec
-#endif
-
-#if FLEXT_SYS == FLEXT_SYS_MAX
-// defined in flsupport.cpp
-extern const t_symbol *sym_buffer,*sym_size;
-#endif
-
-flext::buffer::buffer(const t_symbol *bn,bool delayed):
- sym(NULL),data(NULL),
- chns(0),frames(0)
-{
-#if FLEXT_SYS == FLEXT_SYS_PD
- arr = NULL;
- interval = DIRTY_INTERVAL;
- isdirty = false;
- ticking = false;
- tick = clock_new(this,(t_method)cb_tick);
-#endif
-
- if(bn) Set(bn,delayed);
-
- ClearDirty();
-}
-
-flext::buffer::~buffer()
-{
-#if FLEXT_SYS == FLEXT_SYS_PD
- clock_free(tick);
-#endif
-}
-
-int flext::buffer::Set(const t_symbol *s,bool nameonly)
-{
- int ret = 0;
- bool valid = data != NULL; // valid now? (before change)
-
- if(s && sym != s) {
- ret = 1;
- data = NULL;
- frames = 0;
- chns = 0;
- }
-
- if(s && *GetString(s)) sym = s;
-
- if(!sym) {
- if(valid) ret = -1;
- }
- else if(!nameonly) {
-#if FLEXT_SYS == FLEXT_SYS_PD
- int frames1;
- t_sample *data1;
-
- arr = (t_garray *)pd_findbyclass(const_cast<t_symbol *>(sym), garray_class);
- if(!arr)
- {
- if (*GetString(sym)) FLEXT_LOG1("buffer: no such array '%s'",GetString(sym));
-// sym = NULL;
- if(valid) ret = -1;
- }
- else if(!garray_getfloatarray(arr, &frames1, &data1))
- {
- error("buffer: bad template '%s'",GetString(sym));
- data = NULL;
- frames = 0;
- if(valid) ret = -1;
- }
- else {
- ret = 0;
- garray_usedindsp(arr);
- if(frames != frames1) { frames = frames1; if(!ret) ret = 1; }
- if(data != data1) { data = data1; if(!ret) ret = 1; }
- chns = 1;
- }
-#elif FLEXT_SYS == FLEXT_SYS_MAX
- if(sym->s_thing) {
- const t_buffer *p = (const t_buffer *)sym->s_thing;
-
- FLEXT_ASSERT(!NOGOOD(p));
-
- if(ob_sym(p) != sym_buffer) {
- post("buffer: object '%s' not valid (type %s)",GetString(sym),GetString(ob_sym(p)));
- if(valid) ret = -2;
- }
- else {
-#ifdef FLEXT_DEBUG
-// post("flext: buffer object '%s' - valid:%i samples:%i channels:%i frames:%i",GetString(sym),p->b_valid,p->b_frames,p->b_nchans,p->b_frames);
-#endif
- if(data != p->b_samples) { data = p->b_samples; if(!ret) ret = 1; }
- if(chns != p->b_nchans) { chns = p->b_nchans; if(!ret) ret = 1; }
- if(frames != p->b_frames) { frames = p->b_frames; if(!ret) ret = 1; }
- }
- }
- else {
- FLEXT_LOG1("buffer: symbol '%s' not defined", GetString(sym));
- /*if(valid)*/ ret = -1;
- }
-#else
-#error not implemented
-#endif
- }
-
- return ret;
-}
-
-bool flext::buffer::Update()
-{
- FLEXT_ASSERT(sym);
-
- bool upd = false;
-
-#if FLEXT_SYS == FLEXT_SYS_PD
- if(!arr) return data == NULL;
-
- int frames1;
- t_sample *data1;
- if(!garray_getfloatarray(arr, &frames1, &data1)) {
- data = NULL;
- chns = 0;
- frames = 0;
- upd = true;
- }
- else if(data != data1 || frames != frames1) {
- data = data1;
- frames = frames1;
- upd = true;
- }
-#elif FLEXT_SYS == FLEXT_SYS_MAX
- const t_buffer *p = (const t_buffer *)sym->s_thing;
- if(p) {
- FLEXT_ASSERT(!NOGOOD(p) && ob_sym(p) == sym_buffer);
-
- if(data != p->b_samples || chns != p->b_nchans || frames != p->b_frames) {
- data = p->b_samples;
- chns = p->b_nchans;
- frames = p->b_frames;
- upd = true;
- }
- }
- else {
- // buffer~ has e.g. been renamed
- data = NULL;
- chns = 0;
- frames = 0;
- upd = true;
- }
-#else
-#error not implemented
-#endif
- return upd;
-}
-
-flext::buffer::lock_t flext::buffer::Lock()
-{
- FLEXT_ASSERT(sym);
-#if FLEXT_SYS == FLEXT_SYS_PD
- FLEXT_ASSERT(arr);
-#ifdef _FLEXT_HAVE_PD_GARRAYLOCKS
- garray_lock(arr);
-#endif
- return false;
-#elif FLEXT_SYS == FLEXT_SYS_MAX
- t_buffer *p = (t_buffer *)sym->s_thing;
- FLEXT_ASSERT(p);
-#ifdef _FLEXT_HAVE_MAX_INUSEFLAG
- long old = p->b_inuse;
- p->b_inuse = 1;
- return old;
-#else
- return 0;
-#endif
-#else
-#error not implemented
-#endif
-}
-
-void flext::buffer::Unlock(flext::buffer::lock_t prv)
-{
- FLEXT_ASSERT(sym);
-#if FLEXT_SYS == FLEXT_SYS_PD
- FLEXT_ASSERT(arr);
-#ifdef _FLEXT_HAVE_PD_GARRAYLOCKS
- garray_unlock(arr);
-#endif
-#elif FLEXT_SYS == FLEXT_SYS_MAX
- t_buffer *p = (t_buffer *)sym->s_thing;
- FLEXT_ASSERT(p);
-#ifdef _FLEXT_HAVE_MAX_INUSEFLAG
- p->b_inuse = prv;
-#endif
-#else
-#error not implemented
-#endif
-}
-
-void flext::buffer::Frames(int fr,bool keep,bool zero)
-{
- FLEXT_ASSERT(sym);
-#if FLEXT_SYS == FLEXT_SYS_PD
- // is this function guaranteed to keep memory and set rest to zero?
- ::garray_resize(arr,(float)fr);
- Update();
-#elif FLEXT_SYS == FLEXT_SYS_MAX
- t_sample *tmp = NULL;
- int sz = frames;
- if(fr < sz) sz = fr;
-
- if(keep) {
- // copy buffer data to tmp storage
- tmp = (t_sample *)NewAligned(sz*sizeof(t_sample));
- FLEXT_ASSERT(tmp);
- CopySamples(tmp,data,sz);
- }
-
- t_atom msg;
- t_buffer *buf = (t_buffer *)sym->s_thing;
- // b_msr reflects buffer sample rate... is this what we want?
- // Max bug: adding half a sample to prevent roundoff errors....
- float ms = (fr+0.5)/buf->b_msr;
-
- SetFloat(msg,ms);
- ::typedmess((object *)buf,(t_symbol *)sym_size,1,&msg);
-
- Update();
-
- if(tmp) {
- // copy data back
- CopySamples(data,tmp,sz);
- FreeAligned(tmp);
- if(zero && sz < fr) ZeroSamples(data+sz,fr-sz);
- }
- else
- if(zero) ZeroSamples(data,fr);
-#else
-#error
-#endif
-}
-
-
-#if FLEXT_SYS == FLEXT_SYS_PD
-void flext::buffer::SetRefrIntv(float intv)
-{
- interval = intv;
- if(interval == 0 && ticking) {
- clock_unset(tick);
- ticking = false;
- }
-}
-#elif FLEXT_SYS == FLEXT_SYS_MAX
-void flext::buffer::SetRefrIntv(float) {}
-#else
-#error
-#endif
-
-
-void flext::buffer::Dirty(bool force)
-{
- FLEXT_ASSERT(sym);
-#if FLEXT_SYS == FLEXT_SYS_PD
- if((!ticking) && (interval || force)) {
- ticking = true;
- cb_tick(this); // immediately redraw
- }
- else {
- if(force) clock_delay(tick,0);
- isdirty = true;
- }
-#elif FLEXT_SYS == FLEXT_SYS_MAX
- t_buffer *p = (t_buffer *)sym->s_thing;
- FLEXT_ASSERT(p && !NOGOOD(p));
- p->b_modtime = gettime();
-#else
-#error Not implemented
-#endif
-}
-
-#if FLEXT_SYS == FLEXT_SYS_PD
-void flext::buffer::cb_tick(buffer *b)
-{
- if(b->arr) garray_redraw(b->arr);
-#ifdef FLEXT_DEBUG
- else error("buffer: array is NULL");
-#endif
-
- if(b->isdirty && b->interval) {
- b->isdirty = false;
- b->ticking = true;
- clock_delay(b->tick,b->interval);
- }
- else
- b->ticking = false;
-}
-#endif
-
-void flext::buffer::ClearDirty()
-{
-#if FLEXT_SYS == FLEXT_SYS_PD
- cleantime = clock_getlogicaltime();
-#elif FLEXT_SYS == FLEXT_SYS_MAX
- cleantime = gettime();
-#else
-#error Not implemented
-#endif
-}
-
-bool flext::buffer::IsDirty() const
-{
- if(!sym) return false;
-#if FLEXT_SYS == FLEXT_SYS_PD
- #ifdef _FLEXT_HAVE_PD_GARRAYUPDATETIME
- return arr && (isdirty || garray_updatetime(arr) > cleantime);
- #else
- // Don't know.... (no method in PD judging whether buffer has been changed from outside flext...)
- return true;
- #endif
-#elif FLEXT_SYS == FLEXT_SYS_MAX
- t_buffer *p = (t_buffer *)sym->s_thing;
- FLEXT_ASSERT(p && !NOGOOD(p));
- return p->b_modtime > cleantime;
-#else
-#error Not implemented
-#endif
-}
-
-#endif // Jmax
-
-
diff --git a/externals/grill/flext/source/flclass.h b/externals/grill/flext/source/flclass.h
deleted file mode 100644
index 3da63719..00000000
--- a/externals/grill/flext/source/flclass.h
+++ /dev/null
@@ -1,1098 +0,0 @@
-/*
-
-flext - C++ layer for Max/MSP and pd (pure data) externals
-
-Copyright (c) 2001-2006 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-/*! \file flclass.h
- \brief User accessible flext base classes
-
-*/
-
-#ifndef __FLCLASS_H
-#define __FLCLASS_H
-
-// include the header file declaring the base classes
-#include "flbase.h"
-#include "flsupport.h"
-#include "flmap.h"
-#include "flinternal.h"
-
-#ifdef _MSC_VER
-#pragma warning(disable: 4786)
-#endif
-
-#ifdef __BORLANDC__
-#pragma warn -8008 // Condition is always false
-#pragma warn -8057 // Parameter is never used
-#pragma warn -8066 // Unreachable code
-#endif
-
-
-// === flext_base ==================================================
-
-/*! \brief Flext message only base object
-
- This is the base class from which typical external objects derive.
- DSP objects should use the flext_dsp class which inherits from flext_base and
- provides the necessary functionality.
-
- For a valid external object class you would also need FLEXT_HEADER, also if it's only
- a base class without instantiated objects again.
- To make an instance of an object class you would typically use FLEXT_NEW or
- its companions.
-
- See the flext_obj class for additional information.
-*/
-
-
-class FLEXT_SHARE FLEXT_CLASSDEF(flext_base);
-typedef class FLEXT_SHARE FLEXT_CLASSDEF(flext_base) flext_base;
-
-class FLEXT_SHARE FLEXT_CLASSDEF(flext_base):
- public flext_obj
-{
- FLEXT_HEADER_S(FLEXT_CLASSDEF(flext_base),flext_obj,Setup)
-
- friend class FLEXT_SHARE FLEXT_CLASSDEF(flext_obj);
-
-public:
-
-// --- inheritable virtual methods --------------------------------
-
- /*! \defgroup FLEXT_C_VIRTUAL Virtual base class functions
-
- @{
- */
-
- //! called on patcher load (not on mere object creation!)
- virtual void CbLoadbang();
- virtual void m_loadbang();
-
- //! called on (double-)click into object box
- virtual void CbClick();
-
- /*! \brief Called for every incoming message.
- All method handling is done in there
- \return True if a handler was found and called
- */
- virtual bool CbMethodHandler(int inlet,const t_symbol *s,int argc,const t_atom *argv);
-
- /*! \brief Called for every unhandled message (by CbMethodHandler)
- */
- virtual bool CbMethodResort(int inlet,const t_symbol *s,int argc,const t_atom *argv);
- virtual bool m_method_(int inlet,const t_symbol *s,int argc,const t_atom *argv);
-
-//! @} FLEXT_C_VIRTUAL
-
-
-// --- inlet/outlet stuff -----------------------------------------
-
- /*! \defgroup FLEXT_C_INOUT Flext in-/outlet functions
- \note These must be called in the class' constructor
- \note All (also default) inlets must be defined
- @{
- */
-
- /*! \defgroup FLEXT_C_IO_ADD Announce in-/outlet functions
- @{
- */
-
- // argument m specifies multiple inlet/outlet count
-
-// void AddInDef() { AddInlet(xlet_def,1); }
-
- /*! \brief Add inlet(s) for anythings
- \remark That's the one to choose for the left-most (first) inlet unless it's a signal inlet.
- */
- void AddInAnything(int m = 1) { AddInlet(xlet_any,m); }
- /*! \brief Add inlet(s) for anythings (with description)
- \remark That's the one to choose for the left-most (first) inlet unless it's a signal inlet.
- */
- void AddInAnything(const char *desc,int m = 1) { AddInlet(xlet_any,m,desc); }
- //! Add inlet(s) for floats
- void AddInFloat(int m = 1) { AddInlet(xlet_float,m); }
- //! Add inlet(s) for floats (with description)
- void AddInFloat(const char *desc,int m = 1) { AddInlet(xlet_float,m,desc); }
- //! Add inlet(s) for integers
- void AddInInt(int m = 1) { AddInlet(xlet_int,m); }
- //! Add inlet(s) for integers (with description)
- void AddInInt(const char *desc,int m = 1) { AddInlet(xlet_int,m,desc); }
- //! Add inlet(s) for symbols
- void AddInSymbol(int m = 1) { AddInlet(xlet_sym,m); }
- //! Add inlet(s) for symbol (with description)
- void AddInSymbol(const char *desc,int m = 1) { AddInlet(xlet_sym,m,desc); }
- //! Add inlet(s) for bang
- void AddInBang(int m = 1) { AddInlet(xlet_sym,m); }
- //! Add inlet(s) for bangs (with description)
- void AddInBang(const char *desc,int m = 1) { AddInlet(xlet_sym,m,desc); }
- //! Add inlet(s) for lists
- void AddInList(int m = 1) { AddInlet(xlet_list,m); }
- //! Add inlet(s) for lists (with description)
- void AddInList(const char *desc,int m = 1) { AddInlet(xlet_list,m,desc); }
-
- //! Add outlet(s) for anythings
- void AddOutAnything(int m = 1) { AddOutlet(xlet_any,m); }
- //! Add outlet(s) for anythings (with description)
- void AddOutAnything(const char *desc,int m = 1) { AddOutlet(xlet_any,m,desc); }
- //! Add outlet(s) for floats
- void AddOutFloat(int m = 1) { AddOutlet(xlet_float,m); }
- //! Add outlet(s) for floats (with description)
- void AddOutFloat(const char *desc,int m = 1) { AddOutlet(xlet_float,m,desc); }
- //! Add outlet(s) for integers
- void AddOutInt(int m = 1) { AddOutlet(xlet_int,m); }
- //! Add outlet(s) for integers (with description)
- void AddOutInt(const char *desc,int m = 1) { AddOutlet(xlet_int,m,desc); }
- //! Add outlet(s) for symbols
- void AddOutSymbol(int m = 1) { AddOutlet(xlet_sym,m); }
- //! Add outlet(s) for symbols (with description)
- void AddOutSymbol(const char *desc,int m = 1) { AddOutlet(xlet_sym,m,desc); }
- //! Add outlet(s) for bangs
- void AddOutBang(int m = 1) { AddOutlet(xlet_sym,m); }
- //! Add outlet(s) for bangs (with description)
- void AddOutBang(const char *desc,int m = 1) { AddOutlet(xlet_sym,m,desc); }
- //! Add outlet(s) for lists
- void AddOutList(int m = 1) { AddOutlet(xlet_list,m); }
- //! Add outlet(s) for lists (with description)
- void AddOutList(const char *desc,int m = 1) { AddOutlet(xlet_list,m,desc); }
-
- //! \deprecated inlets and outlets are now set up automatically
- bool SetupInOut() { return true; }
-
- //! @} FLEXT_C_IO_ADD
-
- /*! \defgroup FLEXT_C_IO_MISC Miscellanous in-/outlet functionality
- @{
- */
-
- //! Get number of inlets
- int CntIn() const { return incnt; }
- //! Get number of outlets
- int CntOut() const { return outcnt; }
- //! Get number of signal inlets
- int CntInSig() const { return insigs; }
- //! Get number of signal outlets
- int CntOutSig() const { return outsigs; }
-
-
- //! Retrieve currently processed message tag (NULL if no message processing)
- static const t_symbol *thisTag() { return curtag; }
-
- class outlet;
-
- //! Get pointer to outlet (not in the constructor!)
- outlet *GetOut(int ix) const { return outlets[ix]; }
-
- int GetOutAttr() const { return HasAttributes()?CntOut():0; }
-
- //! @} FLEXT_C_IO_MISC
-
- /*! \defgroup FLEXT_C_IO_OUT Output data to inlets/outlets
- @{
- */
-
- // output messages
-
- //! Output bang (index n starts with 0)
- void ToOutBang(int n) const;
-
- //! Output float (index n starts with 0)
- void ToOutFloat(int n,float f) const;
-
- //! Output integer (index n starts with 0)
- void ToOutInt(int n,int f) const;
-
- //! Output boolean (index n starts with 0)
- void ToOutBool(int n,bool f) const { ToOutInt(n,f?1:0); }
-
- //! Output symbol (index n starts with 0)
- void ToOutSymbol(int n,const t_symbol *s) const;
- //! Output string aka symbol (index n starts with 0)
- void ToOutString(int n,const char *s) const { ToOutSymbol(n,MakeSymbol(s)); }
-
- //! Output atom (index n starts with 0)
- void ToOutAtom(int n,const t_atom &at) const;
-
- //! Output list (index n starts with 0)
- void ToOutList(int n,int argc,const t_atom *argv) const;
- //! Output list (index n starts with 0)
- void ToOutList(int n,const AtomList &list) const { ToOutList(n,list.Count(),list.Atoms()); }
-
- //! Output anything (index n starts with 0)
- void ToOutAnything(int n,const t_symbol *s,int argc,const t_atom *argv) const;
- //! Output anything (index n starts with 0)
- void ToOutAnything(int n,const AtomAnything &any) const { ToOutAnything(n,any.Header(),any.Count(),any.Atoms()); }
- //! Output anything (index n starts with 0)
- void ToOutAnything(int n,const t_symbol *s,const AtomList &list) const { ToOutAnything(n,s,list.Count(),list.Atoms()); }
-
- //! @} FLEXT_C_IO_OUT
-
- /*! \defgroup FLEXT_C_IO_QUEUE Low-priority output of data to inlets/outlets
- @{
- */
-
- //! Output low priority bang (index n starts with 0)
- void ToQueueBang(int n) const;
-
- //! Output low priority float (index n starts with 0)
- void ToQueueFloat(int n,float f) const;
-
- //! Output low priority integer (index n starts with 0)
- void ToQueueInt(int n,int f) const;
-
- //! Output low priority boolean (index n starts with 0)
- void ToQueueBool(int n,bool f) const { ToQueueInt(n,f?1:0); }
-
- //! Output low priority symbol (index n starts with 0)
- void ToQueueSymbol(int n,const t_symbol *s) const;
- //! Output low priority string aka symbol (to appointed outlet)
- void ToQueueString(int n,const char *s) const { ToQueueSymbol(n,MakeSymbol(s)); }
-
- //! Output low priority atom (index n starts with 0)
- void ToQueueAtom(int n,const t_atom &at) const;
-
- //! Output low priority list (index n starts with 0)
- void ToQueueList(int n,int argc,const t_atom *argv) const;
- //! Output low priority list (index n starts with 0)
- void ToQueueList(int n,const AtomList &list) const { ToQueueList(n,list.Count(),list.Atoms()); }
-
- //! Output low priority anything (index n starts with 0)
- void ToQueueAnything(int n,const t_symbol *s,int argc,const t_atom *argv) const;
- //! Output low priority anything (index n starts with 0)
- void ToQueueAnything(int n,const AtomAnything &any) const { ToQueueAnything(n,any.Header(),any.Count(),any.Atoms()); }
-
- //! @} FLEXT_C_IO_QUEUE
-
-
- /*! \defgroup FLEXT_C_IO_SELF Output of data to inlets/outlets of this object
- @{
- */
-
- //! Send bang to self (inlet n)
- void ToSelfBang(int n) const { ToQueueBang(-1-n); }
-
- //! Send float to self (inlet n)
- void ToSelfFloat(int n,float f) const { ToQueueFloat(-1-n,f); }
-
- //! Send integer to self (inlet n)
- void ToSelfInt(int n,int f) const { ToQueueInt(-1-n,f); }
-
- //! Send boolean to self (inlet n)
- void ToSelfBool(int n,bool f) const { ToSelfInt(n,f?1:0); }
-
- //! Send symbol to self (inlet n)
- void ToSelfSymbol(int n,const t_symbol *s) const { ToQueueSymbol(-1-n,s); }
- //! Send string aka symbol to self (inlet 0)
- void ToSelfString(int n,const char *s) const { ToSelfSymbol(n,MakeSymbol(s)); }
-
- //! Output atom (index n starts with 0)
- void ToSelfAtom(int n,const t_atom &at) const { ToQueueAtom(-1-n,at); }
-
- //! Send list to self (inlet n)
- void ToSelfList(int n,int argc,const t_atom *argv) const { ToQueueList(-1-n,argc,argv); }
- //! Send list to self (inlet n)
- void ToSelfList(int n,const AtomList &list) const { ToSelfList(n,list.Count(),list.Atoms()); }
-
- //! Send anything to self (inlet n)
- void ToSelfAnything(int n,const t_symbol *s,int argc,const t_atom *argv) const { ToQueueAnything(-1-n,s,argc,argv); }
- //! Send anything to self (inlet n)
- void ToSelfAnything(int n,const AtomAnything &any) const { ToSelfAnything(n,any.Header(),any.Count(),any.Atoms()); }
-
- //! @} FLEXT_C_IO_SELF
-
-
- /*! \defgroup FLEXT_C_IO_MESSAGEBUNDLE Output of data via message bundles
-
- These are used to assure the sending of several messages from a second thread to the same logical time
-
- @{
- */
-
- //! Output bang (index n starts with 0)
- void MsgAddBang(MsgBundle *mb,int n) const;
-
- //! Output float (index n starts with 0)
- void MsgAddFloat(MsgBundle *mb,int n,float f) const;
-
- //! Output integer (index n starts with 0)
- void MsgAddInt(MsgBundle *mb,int n,int f) const;
-
- //! Output boolean (index n starts with 0)
- void MsgAddBool(MsgBundle *mb,int n,bool f) const { MsgAddInt(mb,n,f?1:0); }
-
- //! Output symbol (index n starts with 0)
- void MsgAddSymbol(MsgBundle *mb,int n,const t_symbol *s) const;
- //! Output string aka symbol (to appointed outlet)
- void MsgAddString(MsgBundle *mb,int n,const char *s) const { MsgAddSymbol(mb,n,MakeSymbol(s)); }
-
- //! Output atom (index n starts with 0)
- void MsgAddAtom(MsgBundle *mb,int n,const t_atom &at) const;
-
- //! Output list (index n starts with 0)
- void MsgAddList(MsgBundle *mb,int n,int argc,const t_atom *argv) const;
- //! Output list (index n starts with 0)
- void MsgAddList(MsgBundle *mb,int n,const AtomList &list) const { MsgAddList(mb,n,list.Count(),list.Atoms()); }
-
- //! Output anything (index n starts with 0)
- void MsgAddAnything(MsgBundle *mb,int n,const t_symbol *s,int argc,const t_atom *argv) const;
- //! Output anything (index n starts with 0)
- void MsgAddAnything(MsgBundle *mb,int n,const AtomAnything &any) const { MsgAddAnything(mb,n,any.Header(),any.Count(),any.Atoms()); }
-
- void MsgSelfBang(MsgBundle *mb,int n) const { MsgAddBang(mb,-1-n); }
-
- //! Send float to self (inlet n)
- void MsgSelfFloat(MsgBundle *mb,int n,float f) const { MsgAddFloat(mb,-1-n,f); }
-
- //! Send integer to self (inlet n)
- void MsgSelfInt(MsgBundle *mb,int n,int f) const { MsgAddInt(mb,-1-n,f); }
-
- //! Send boolean to self (inlet n)
- void MsgSelfBool(MsgBundle *mb,int n,bool f) const { MsgSelfInt(mb,n,f?1:0); }
-
- //! Send symbol to self (inlet n)
- void MsgSelfSymbol(MsgBundle *mb,int n,const t_symbol *s) const { MsgAddSymbol(mb,-1-n,s); }
- //! Send string aka symbol to self (inlet 0)
- void MsgSelfString(MsgBundle *mb,int n,const char *s) const { MsgSelfSymbol(mb,n,MakeSymbol(s)); }
-
- //! Output atom (index n starts with 0)
- void MsgSelfAtom(MsgBundle *mb,int n,const t_atom &at) const { MsgAddAtom(mb,-1-n,at); }
-
- //! Send list to self (inlet n)
- void MsgSelfList(MsgBundle *mb,int n,int argc,const t_atom *argv) const { MsgAddList(mb,-1-n,argc,argv); }
- //! Send list to self (inlet n)
- void MsgSelfList(MsgBundle *mb,int n,const AtomList &list) const { MsgSelfList(mb,n,list.Count(),list.Atoms()); }
-
- //! Send anything to self (inlet n)
- void MsgSelfAnything(MsgBundle *mb,int n,const t_symbol *s,int argc,const t_atom *argv) const { MsgAddAnything(mb,-1-n,s,argc,argv); }
- //! Send anything to self (inlet n)
- void MsgSelfAnything(MsgBundle *mb,int n,const AtomAnything &any) const { MsgSelfAnything(mb,n,any.Header(),any.Count(),any.Atoms()); }
-
- //! @} FLEXT_C_IO_MESSAGEBUNDLE
-
-//! @} FLEXT_C_INOUT
-
-
-// --- message handling -------------------------------------------
-
- enum metharg {
- a_null = 0,
- a_float,a_int,a_bool,
- a_symbol,a_pointer,
- a_list,a_any, // (t_symbol *) / int / t_atom *
- a_LIST,a_ANY // AtomList, AtomAnything
- };
-
- typedef bool (*methfun)(flext_base *c);
-
- /*! \defgroup FLEXT_C_ADDMETHOD Method handling (object scope)
- \internal
- @{
- */
-
- void AddMethodDef(int inlet,const t_symbol *tag = NULL) { ThMeths()->Add(new MethItem,tag,inlet); }
- void AddMethodDef(int inlet,const char *tag = NULL) { AddMethodDef(inlet,MakeSymbol(tag)); }
-
- void AddMethod(int inlet,bool (*m)(flext_base *)) { AddMethod(ThMeths(),inlet,sym_bang,(methfun)m,a_null); }
- void AddMethod(int inlet,bool (*m)(flext_base *,int,t_atom *)) { AddMethod(ThMeths(),inlet,sym_list,(methfun)m,a_list,a_null); }
- void AddMethod(int inlet,bool (*m)(flext_base *,int,const t_atom *)) { AddMethod(ThMeths(),inlet,sym_list,(methfun)m,a_list,a_null); }
- void AddMethod(int inlet,const t_symbol *tag,bool (*m)(flext_base *)) { AddMethod(ThMeths(),inlet,tag,(methfun)m,a_null); } // pure method
- void AddMethod(int inlet,const char *tag,bool (*m)(flext_base *)) { AddMethod(inlet,MakeSymbol(tag),m); }
- void AddMethod(int inlet,bool (*m)(flext_base *,t_symbol *,int,t_atom *)) { AddMethod(ThMeths(),inlet,sym_anything,(methfun)m,a_any,a_null); } // anything
- void AddMethod(int inlet,bool (*m)(flext_base *,const t_symbol *,int,const t_atom *)) { AddMethod(ThMeths(),inlet,sym_anything,(methfun)m,a_any,a_null); } // anything
- void AddMethod(int inlet,bool (*m)(flext_base *,t_symbol *&)) { AddMethod(ThMeths(),inlet,sym_symbol,(methfun)m,a_symbol,a_null); } // single symbol
- void AddMethod(int inlet,bool (*m)(flext_base *,const t_symbol *&)) { AddMethod(ThMeths(),inlet,sym_symbol,(methfun)m,a_symbol,a_null); } // single symbol
- void AddMethod(int inlet,bool (*m)(flext_base *,float &)) { AddMethod(ThMeths(),inlet,sym_float,(methfun)m,a_float,a_null); } // single float
- void AddMethod(int inlet,bool (*m)(flext_base *,float &,float &)) { AddMethod(ThMeths(),inlet,sym_list,(methfun)m,a_float,a_float,a_null); } // list of 2 floats
- void AddMethod(int inlet,bool (*m)(flext_base *,float &,float &,float &)) { AddMethod(ThMeths(),inlet,sym_list,(methfun)m,a_float,a_float,a_float,a_null); } // list of 3 floats
-#if FLEXT_SYS == FLEXT_SYS_PD
- void AddMethod(int inlet,bool (*m)(flext_base *,int &)) { AddMethod(ThMeths(),inlet,sym_float,(methfun)m,a_int,a_null); } // single float
-#else
- void AddMethod(int inlet,bool (*m)(flext_base *,int &)) { AddMethod(ThMeths(),inlet,sym_int,(methfun)m,a_int,a_null); } // single float
-#endif
- void AddMethod(int inlet,bool (*m)(flext_base *,int &,int &)) { AddMethod(ThMeths(),inlet,sym_list,(methfun)m,a_int,a_int,a_null); } // list of 2 floats
- void AddMethod(int inlet,bool (*m)(flext_base *,int &,int &,int &)) { AddMethod(ThMeths(),inlet,sym_list,(methfun)m,a_int,a_int,a_int,a_null); } // list of 3 floats
- void AddMethod(int inlet,const t_symbol *tag,bool (*m)(flext_base *,int,t_atom *)) { AddMethod(ThMeths(),inlet,tag,(methfun)m,a_list,a_null); } // method+gimme
- void AddMethod(int inlet,const t_symbol *tag,bool (*m)(flext_base *,int,const t_atom *)) { AddMethod(ThMeths(),inlet,tag,(methfun)m,a_list,a_null); } // method+gimme
- void AddMethod(int inlet,const t_symbol *tag,bool (*m)(flext_base *,t_symbol *,int,t_atom *)) { AddMethod(ThMeths(),inlet,tag,(methfun)m,a_any,a_null); } // method+gimme
- void AddMethod(int inlet,const t_symbol *tag,bool (*m)(flext_base *,const t_symbol *,int,const t_atom *)) { AddMethod(ThMeths(),inlet,tag,(methfun)m,a_any,a_null); } // method+gimme
- void AddMethod(int inlet,const t_symbol *tag,bool (*m)(flext_base *,t_symbol *&)) { AddMethod(ThMeths(),inlet,tag,(methfun)m,a_symbol,a_null); } // method+symbol
- void AddMethod(int inlet,const t_symbol *tag,bool (*m)(flext_base *,const t_symbol *&)) { AddMethod(ThMeths(),inlet,tag,(methfun)m,a_symbol,a_null); } // method+symbol
- void AddMethod(int inlet,const t_symbol *tag,bool (*m)(flext_base *,float &)) { AddMethod(ThMeths(),inlet,tag,(methfun)m,a_float,a_null); } // method+float
- void AddMethod(int inlet,const t_symbol *tag,bool (*m)(flext_base *,int &)) { AddMethod(ThMeths(),inlet,tag,(methfun)m,a_int,a_null); } // method+int
- void AddMethod(int inlet,const char *tag,bool (*m)(flext_base *,int,t_atom *)) { AddMethod(inlet,MakeSymbol(tag),m); }
- void AddMethod(int inlet,const char *tag,bool (*m)(flext_base *,int,const t_atom *)) { AddMethod(inlet,MakeSymbol(tag),m); }
- void AddMethod(int inlet,const char *tag,bool (*m)(flext_base *,t_symbol *,int,t_atom *)) { AddMethod(inlet,MakeSymbol(tag),m); }
- void AddMethod(int inlet,const char *tag,bool (*m)(flext_base *,const t_symbol *,int,const t_atom *)) { AddMethod(inlet,MakeSymbol(tag),m); }
- void AddMethod(int inlet,const char *tag,bool (*m)(flext_base *,t_symbol *&)) { AddMethod(inlet,MakeSymbol(tag),m); }
- void AddMethod(int inlet,const char *tag,bool (*m)(flext_base *,const t_symbol *&)) { AddMethod(inlet,MakeSymbol(tag),m); }
- void AddMethod(int inlet,const char *tag,bool (*m)(flext_base *,float &)) { AddMethod(inlet,MakeSymbol(tag),m); }
- void AddMethod(int inlet,const char *tag,bool (*m)(flext_base *,int &)) { AddMethod(inlet,MakeSymbol(tag),m); }
-
- //! Set Max/MSP style of distributing list elements over (message) inlets
- static void SetDist(t_classid c,bool d = true);
- //! Query whether lists are distributed
- bool DoDist() const;
-
-
-//! @} FLEXT_C_ADDMETHOD
-
- /*! \defgroup FLEXT_C_CADDMETHOD Method handling (class scope)
- \internal
- @{
- */
-
- static void AddMethod(t_classid c,int inlet,bool (*m)(flext_base *)) { AddMethod(ClMeths(c),inlet,sym_bang,(methfun)m,a_null); }
- static void AddMethod(t_classid c,int inlet,bool (*m)(flext_base *,int,t_atom *)) { AddMethod(ClMeths(c),inlet,sym_list,(methfun)m,a_list,a_null); }
- static void AddMethod(t_classid c,int inlet,bool (*m)(flext_base *,int,const t_atom *)) { AddMethod(ClMeths(c),inlet,sym_list,(methfun)m,a_list,a_null); }
- static void AddMethod(t_classid c,int inlet,const t_symbol *tag,bool (*m)(flext_base *)) { AddMethod(ClMeths(c),inlet,tag,(methfun)m,a_null); } // pure method
- static void AddMethod(t_classid c,int inlet,const char *tag,bool (*m)(flext_base *)) { AddMethod(c,inlet,MakeSymbol(tag),m); }
- static void AddMethod(t_classid c,int inlet,bool (*m)(flext_base *,t_symbol *,int,t_atom *)) { AddMethod(ClMeths(c),inlet,sym_anything,(methfun)m,a_any,a_null); } // anything
- static void AddMethod(t_classid c,int inlet,bool (*m)(flext_base *,const t_symbol *,int,const t_atom *)) { AddMethod(ClMeths(c),inlet,sym_anything,(methfun)m,a_any,a_null); } // anything
- static void AddMethod(t_classid c,int inlet,bool (*m)(flext_base *,t_symbol *&)) { AddMethod(ClMeths(c),inlet,sym_symbol,(methfun)m,a_symbol,a_null); } // single symbol
- static void AddMethod(t_classid c,int inlet,bool (*m)(flext_base *,const t_symbol *&)) { AddMethod(ClMeths(c),inlet,sym_symbol,(methfun)m,a_symbol,a_null); } // single symbol
- static void AddMethod(t_classid c,int inlet,bool (*m)(flext_base *,float &)) { AddMethod(ClMeths(c),inlet,sym_float,(methfun)m,a_float,a_null); } // single float
- static void AddMethod(t_classid c,int inlet,bool (*m)(flext_base *,float &,float &)) { AddMethod(ClMeths(c),inlet,sym_list,(methfun)m,a_float,a_float,a_null); } // list of 2 floats
- static void AddMethod(t_classid c,int inlet,bool (*m)(flext_base *,float &,float &,float &)) { AddMethod(ClMeths(c),inlet,sym_list,(methfun)m,a_float,a_float,a_float,a_null); } // list of 3 floats
-#if FLEXT_SYS == FLEXT_SYS_PD
- static void AddMethod(t_classid c,int inlet,bool (*m)(flext_base *,int &)) { AddMethod(ClMeths(c),inlet,sym_float,(methfun)m,a_int,a_null); } // single integer
-#else
- static void AddMethod(t_classid c,int inlet,bool (*m)(flext_base *,int &)) { AddMethod(ClMeths(c),inlet,sym_int,(methfun)m,a_int,a_null); } // single integer
-#endif
- static void AddMethod(t_classid c,int inlet,bool (*m)(flext_base *,int &,int &)) { AddMethod(ClMeths(c),inlet,sym_list,(methfun)m,a_int,a_int,a_null); } // list of 2 floats
- static void AddMethod(t_classid c,int inlet,bool (*m)(flext_base *,int &,int &,int &)) { AddMethod(ClMeths(c),inlet,sym_list,(methfun)m,a_int,a_int,a_int,a_null); } // list of 3 floats
- static void AddMethod(t_classid c,int inlet,const t_symbol *tag,bool (*m)(flext_base *,int,t_atom *)) { AddMethod(ClMeths(c),inlet,tag,(methfun)m,a_list,a_null); } // method+gimme
- static void AddMethod(t_classid c,int inlet,const t_symbol *tag,bool (*m)(flext_base *,int,const t_atom *)) { AddMethod(ClMeths(c),inlet,tag,(methfun)m,a_list,a_null); } // method+gimme
- static void AddMethod(t_classid c,int inlet,const t_symbol *tag,bool (*m)(flext_base *,t_symbol *,int,t_atom *)) { AddMethod(ClMeths(c),inlet,tag,(methfun)m,a_any,a_null); } // method+gimme
- static void AddMethod(t_classid c,int inlet,const t_symbol *tag,bool (*m)(flext_base *,const t_symbol *,int,const t_atom *)) { AddMethod(ClMeths(c),inlet,tag,(methfun)m,a_any,a_null); } // method+gimme
- static void AddMethod(t_classid c,int inlet,const t_symbol *tag,bool (*m)(flext_base *,t_symbol *&)) { AddMethod(ClMeths(c),inlet,tag,(methfun)m,a_symbol,a_null); } // method+symbol
- static void AddMethod(t_classid c,int inlet,const t_symbol *tag,bool (*m)(flext_base *,const t_symbol *&)) { AddMethod(ClMeths(c),inlet,tag,(methfun)m,a_symbol,a_null); } // method+symbol
- static void AddMethod(t_classid c,int inlet,const t_symbol *tag,bool (*m)(flext_base *,float &)) { AddMethod(ClMeths(c),inlet,tag,(methfun)m,a_float,a_null); } // method+float
- static void AddMethod(t_classid c,int inlet,const t_symbol *tag,bool (*m)(flext_base *,int &)) { AddMethod(ClMeths(c),inlet,tag,(methfun)m,a_int,a_null); } // method+int
- static void AddMethod(t_classid c,int inlet,const char *tag,bool (*m)(flext_base *,int,t_atom *)) { AddMethod(c,inlet,MakeSymbol(tag),m); }
- static void AddMethod(t_classid c,int inlet,const char *tag,bool (*m)(flext_base *,int,const t_atom *)) { AddMethod(c,inlet,MakeSymbol(tag),m); }
- static void AddMethod(t_classid c,int inlet,const char *tag,bool (*m)(flext_base *,t_symbol *,int,t_atom *)) { AddMethod(c,inlet,MakeSymbol(tag),m); }
- static void AddMethod(t_classid c,int inlet,const char *tag,bool (*m)(flext_base *,const t_symbol *,int,const t_atom *)) { AddMethod(c,inlet,MakeSymbol(tag),m); }
- static void AddMethod(t_classid c,int inlet,const char *tag,bool (*m)(flext_base *,t_symbol *&)) { AddMethod(c,inlet,MakeSymbol(tag),m); }
- static void AddMethod(t_classid c,int inlet,const char *tag,bool (*m)(flext_base *,const t_symbol *&)) { AddMethod(c,inlet,MakeSymbol(tag),m); }
- static void AddMethod(t_classid c,int inlet,const char *tag,bool (*m)(flext_base *,float &)) { AddMethod(c,inlet,MakeSymbol(tag),m); }
- static void AddMethod(t_classid c,int inlet,const char *tag,bool (*m)(flext_base *,int &)) { AddMethod(c,inlet,MakeSymbol(tag),m); }
-
-//! @} FLEXT_C_CADDMETHOD
-
-// --- bind/unbind ---------------------------------------
-
- /*! \defgroup FLEXT_C_BIND Methods for binding a flext class to a symbol
-
- @{
- */
-
- //! Bind object to a symbol
- bool Bind(const t_symbol *sym);
- //! Unbind object from a symbol
- bool Unbind(const t_symbol *sym);
-
- //! Bind object to a symbol (as string)
- bool Bind(const char *sym) { return Bind(MakeSymbol(sym)); }
- //! Unbind object from a symbol (as string)
- bool Unbind(const char *sym) { return Unbind(MakeSymbol(sym)); }
-
- /*! \brief Bind a method to a symbol
- \param sym Symbol to bind to
- \param meth Function to bind
- \param data User data that is passed to the function
- \return true on success
- */
- bool BindMethod(const t_symbol *sym,bool (*meth)(flext_base *obj,t_symbol *sym,int argc,t_atom *argv,void *data),void *data = NULL);
- /*! \brief Unbind a method from a symbol
- \param sym Symbol to unbind from (if NULL... unbind all functions)
- \param meth Method to unbind (if NULL ... unbind all functions bound to symbol)
- \param data returns data pointer specified with BindMethod
- \return true on success
- */
- bool UnbindMethod(const t_symbol *sym,bool (*meth)(flext_base *obj,t_symbol *sym,int argc,t_atom *argv,void *data) = NULL,void **data = NULL);
- /*! \brief Get data of bound method of a symbol
- \param sym Symbol to bind to
- \param meth Function to bind
- \param data Reference to returned user data
- \return true on success (symbol/method combination was found)
- */
- bool GetBoundMethod(const t_symbol *sym,bool (*meth)(flext_base *obj,t_symbol *sym,int argc,t_atom *argv,void *data),void *&data);
-
- //! \brief Bind a method to a symbol (as string)
- bool BindMethod(const char *sym,bool (*meth)(flext_base *obj,t_symbol *sym,int argc,t_atom *argv,void *data),void *data = NULL) { return BindMethod(MakeSymbol(sym),meth,data); }
- //! \brief Unbind a method from a symbol (as string)
- bool UnbindMethod(const char *sym,bool (*meth)(flext_base *obj,t_symbol *sym,int argc,t_atom *argv,void *data) = NULL,void **data = NULL) { return UnbindMethod(MakeSymbol(sym),meth,data); }
- //! \brief Get data of bound method of a symbol (as string)
- bool GetBoundMethod(const char *sym,bool (*meth)(flext_base *obj,t_symbol *sym,int argc,t_atom *argv,void *data),void *&data) { return GetBoundMethod(MakeSymbol(sym),meth,data); }
-
- /*! Unbind all symbol bindings
- \note Memory associated to data pointers passed by BindMethod will not be freed!
- */
- bool UnbindAll();
-
-//! @} FLEXT_C_BIND
-
- // --- thread stuff -----------------------------------------------
-
-#ifdef FLEXT_THREADS
- /*! \defgroup FLEXT_C_THREAD Thread handling
-
- @{
- */
-
- //! Start a thread for this object
- bool StartThread(void (*meth)(thr_params *p),thr_params *p,const char * = NULL) { p->cl = this; return flext::LaunchThread(meth,p); }
-
- //! Terminate all threads of this object
- bool StopThreads();
-#endif // FLEXT_THREADS
-
-//! @} FLEXT_C_THREAD
-
-// xxx internal stuff xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-
-public: // needed by VC++ 6
-
- enum xlettype {
- xlet_none = 0,
- xlet_float,xlet_int,xlet_sym,xlet_list,xlet_any,
- xlet_LIST,xlet_ANY, // use AtomList and AtomAnything
- xlet_sig
- };
-
-protected:
-
- FLEXT_CLASSDEF(flext_base)();
-
- /*! \brief Set up inlets and outlets, method and attribute lists
- */
- virtual bool Init();
-
- /*! \brief Deallocate all kinds of stuff
- */
- virtual void Exit();
-
-
- /*! \defgroup FLEXT_C_ATTR Attribute handling methods (object scope)
- @{
- */
-
- void AddAttrib(const t_symbol *attr,bool (*get)(flext_base *,float &),bool (*set)(flext_base *,float &)) { AddAttrib(attr,a_float,(methfun)get,(methfun)set); }
- void AddAttrib(const t_symbol *attr,bool (*get)(flext_base *,int &),bool (*set)(flext_base *,int &)) { AddAttrib(attr,a_int,(methfun)get,(methfun)set); }
- void AddAttrib(const t_symbol *attr,bool (*get)(flext_base *,bool &),bool (*set)(flext_base *,bool &)) { AddAttrib(attr,a_bool,(methfun)get,(methfun)set); }
- void AddAttrib(const t_symbol *attr,bool (*get)(flext_base *,const t_symbol *&),bool (*set)(flext_base *,const t_symbol *&)) { AddAttrib(attr,a_symbol,(methfun)get,(methfun)set); }
- void AddAttrib(const t_symbol *attr,bool (*get)(flext_base *,t_symptr &),bool (*set)(flext_base *,t_symptr &)) { AddAttrib(attr,a_symbol,(methfun)get,(methfun)set); }
- void AddAttrib(const t_symbol *attr,bool (*get)(flext_base *,AtomList *&),bool (*set)(flext_base *,AtomList *&)) { AddAttrib(attr,a_LIST,(methfun)get,(methfun)set); }
- void AddAttrib(const t_symbol *attr,bool (*get)(flext_base *,AtomAnything *&),bool (*set)(flext_base *,AtomAnything *&)) { AddAttrib(attr,a_ANY,(methfun)get,(methfun)set); }
- void AddAttrib(const char *attr,bool (*get)(flext_base *,float &),bool (*set)(flext_base *,float &)) { AddAttrib(MakeSymbol(attr),get,set); }
- void AddAttrib(const char *attr,bool (*get)(flext_base *,int &),bool (*set)(flext_base *,int &)) { AddAttrib(MakeSymbol(attr),get,set); }
- void AddAttrib(const char *attr,bool (*get)(flext_base *,bool &),bool (*set)(flext_base *,bool &)) { AddAttrib(MakeSymbol(attr),get,set); }
- void AddAttrib(const char *attr,bool (*get)(flext_base *,const t_symbol *&),bool (*set)(flext_base *,const t_symbol *&)) { AddAttrib(MakeSymbol(attr),get,set); }
- void AddAttrib(const char *attr,bool (*get)(flext_base *,t_symptr &),bool (*set)(flext_base *,t_symptr &)) { AddAttrib(MakeSymbol(attr),get,set); }
- void AddAttrib(const char *attr,bool (*get)(flext_base *,AtomList *&),bool (*set)(flext_base *,AtomList *&)) { AddAttrib(MakeSymbol(attr),get,set); }
- void AddAttrib(const char *attr,bool (*get)(flext_base *,AtomAnything *&),bool (*set)(flext_base *,AtomAnything *&)) { AddAttrib(MakeSymbol(attr),get,set); }
-
-//! @} FLEXT_C_ATTR
-
- /*! \defgroup FLEXT_C_CATTR Attribute handling methods (class scope)
- @{
- */
-
- static void AddAttrib(t_classid c,const t_symbol *attr,bool (*get)(flext_base *,float &),bool (*set)(flext_base *,float &)) { AddAttrib(c,attr,a_float,(methfun)get,(methfun)set); }
- static void AddAttrib(t_classid c,const t_symbol *attr,bool (*get)(flext_base *,int &),bool (*set)(flext_base *,int &)) { AddAttrib(c,attr,a_int,(methfun)get,(methfun)set); }
- static void AddAttrib(t_classid c,const t_symbol *attr,bool (*get)(flext_base *,bool &),bool (*set)(flext_base *,bool &)) { AddAttrib(c,attr,a_bool,(methfun)get,(methfun)set); }
- static void AddAttrib(t_classid c,const t_symbol *attr,bool (*get)(flext_base *,const t_symbol *&),bool (*set)(flext_base *,const t_symbol *&)) { AddAttrib(c,attr,a_symbol,(methfun)get,(methfun)set); }
- static void AddAttrib(t_classid c,const t_symbol *attr,bool (*get)(flext_base *,t_symptr &),bool (*set)(flext_base *,t_symptr &)) { AddAttrib(c,attr,a_symbol,(methfun)get,(methfun)set); }
- static void AddAttrib(t_classid c,const t_symbol *attr,bool (*get)(flext_base *,AtomList *&),bool (*set)(flext_base *,AtomList *&)) { AddAttrib(c,attr,a_LIST,(methfun)get,(methfun)set); }
- static void AddAttrib(t_classid c,const t_symbol *attr,bool (*get)(flext_base *,AtomAnything *&),bool (*set)(flext_base *,AtomAnything *&)) { AddAttrib(c,attr,a_ANY,(methfun)get,(methfun)set); }
- static void AddAttrib(t_classid c,const char *attr,bool (*get)(flext_base *,float &),bool (*set)(flext_base *,float &)) { AddAttrib(c,MakeSymbol(attr),get,set); }
- static void AddAttrib(t_classid c,const char *attr,bool (*get)(flext_base *,int &),bool (*set)(flext_base *,int &)) { AddAttrib(c,MakeSymbol(attr),get,set); }
- static void AddAttrib(t_classid c,const char *attr,bool (*get)(flext_base *,bool &),bool (*set)(flext_base *,bool &)) { AddAttrib(c,MakeSymbol(attr),get,set); }
- static void AddAttrib(t_classid c,const char *attr,bool (*get)(flext_base *,const t_symbol *&),bool (*set)(flext_base *,const t_symbol *&)) { AddAttrib(c,MakeSymbol(attr),get,set); }
- static void AddAttrib(t_classid c,const char *attr,bool (*get)(flext_base *,t_symptr &),bool (*set)(flext_base *,t_symptr &)) { AddAttrib(c,MakeSymbol(attr),get,set); }
- static void AddAttrib(t_classid c,const char *attr,bool (*get)(flext_base *,AtomList *&),bool (*set)(flext_base *,AtomList *&)) { AddAttrib(c,MakeSymbol(attr),get,set); }
- static void AddAttrib(t_classid c,const char *attr,bool (*get)(flext_base *,AtomAnything *&),bool (*set)(flext_base *,AtomAnything *&)) { AddAttrib(c,MakeSymbol(attr),get,set); }
-
-//! @} FLEXT_C_CATTR
-
- //! Dump an attribute to the attribute outlet
- bool DumpAttrib(const t_symbol *attr) const;
- //! Dump an attribute to the attribute outlet
- bool DumpAttrib(const char *attr) const { return DumpAttrib(MakeSymbol(attr)); }
-
- // check for attribute symbol @
- static int CheckAttrib(int argc,const t_atom *argv);
- // check for attribute symbol @
- static int CheckAttrib(const AtomList &args,int offset = 0) { return CheckAttrib(args.Count()-offset,args.Atoms()+offset)+offset; }
-
- //! List attributes
- bool ListAttrib() const;
- //! List attributes
- void ListAttrib(AtomList &a) const;
- //! Get an attribute value
- bool GetAttrib(const t_symbol *s,AtomList &a) const;
- //! Set an attribute value
- bool SetAttrib(const t_symbol *s,int argc,const t_atom *argv);
- //! Set an attribute value
- bool SetAttrib(const t_symbol *s,const AtomList &a) { return SetAttrib(s,a.Count(),a.Atoms()); }
-
- // get and set the attribute
- bool BangAttrib(const t_symbol *a);
- // get and set the attribute
- bool BangAttrib(const char *a) { return BangAttrib(MakeSymbol(a)); }
- // get and set all (both get- and settables)
- bool BangAttribAll();
- // show/hide the attribute
- bool ShowAttrib(const t_symbol *a,bool show) const;
- // show/hide the attribute
- bool ShowAttrib(const char *a,bool show) { return ShowAttrib(MakeSymbol(a),show); }
-
- //! List methods
- void ListMethods(AtomList &a,int inlet = 0) const;
-
-/*! \addtogroup FLEXT_C_INOUT
- @{
-*/
-
- //! \brief get a code for a list of inlets or outlets
- unsigned long XletCode(xlettype tp = xlet_none,...); // end list with 0 (= tp_none) !!
-
- /*! \brief Add some inlets by a special code representing the types
- \remark use XletCode function to get code value
- */
- void AddInlets(unsigned long code);
-
- //! \brief Add one or more inlet(s)
- void AddInlet(xlettype tp,int mult = 1,const char *desc = NULL);
-
- /*! \brief Add some inlets by a special code representing the types
- \remark use XletCode function to get code value
- */
- void AddOutlets(unsigned long code);
-
- //! \brief Add one or more outlet(s)
- void AddOutlet(xlettype tp,int mult = 1,const char *desc = NULL);
-
- //! \brief Set the description of an indexed inlet
- void DescInlet(int ix,const char *desc);
-
- //! \brief Set the description of an indexed outlet
- void DescOutlet(int ix,const char *desc);
-
-//! @} FLEXT_C_INOUT
-
-
-// method handling
-
- public:
-
- class AttrItem;
-
- class Item
- {
- public:
- Item(AttrItem *a): attr(a),nxt(NULL) {}
- virtual ~Item();
-
- bool IsAttr() const { return attr != NULL; }
-
- AttrItem *attr;
- Item *nxt;
- };
-
- class ItemSet
- :public TablePtrMap<const t_symbol *,Item *,8>
- {
- public:
- virtual ~ItemSet();
- virtual void clear();
- };
-
- /*! This class holds hashed item entries
- \note not thread-safe!
- */
- class FLEXT_SHARE ItemCont
- {
- public:
- ItemCont();
- ~ItemCont();
-
- int Min() const { return -1; }
- int Max() const { return size-2; }
-
- bool Contained(int i) const { return i+1 < size; }
-
- //! Add an entry
- void Add(Item *it,const t_symbol *tag,int inlet = 0);
- //! Remove an entry
- bool Remove(Item *it,const t_symbol *tag,int inlet,bool free);
- //! Find an entry list in the Item array
- Item *FindList(const t_symbol *tag,int inlet = 0);
-
- //! Get list for an inlet
- ItemSet &GetInlet(int inlet = 0)
- {
- FLEXT_ASSERT(inlet >= Min() && inlet <= Max());
- return *cont[inlet+1];
- }
-
- //! Get counter for total members (for index of new item)
- int Members() const { return members; }
-
- protected:
-
- void Resize(int nsz);
-
- int members;
- int memsize,size;
- ItemSet **cont;
- };
-
- //! \brief This represents an item of the method list
- class MethItem:
- public Item
- {
- public:
- MethItem(AttrItem *conn = NULL);
- virtual ~MethItem();
-
- void SetArgs(methfun fun,int argc,metharg *args);
-
- int index;
- int argc;
- metharg *args;
- methfun fun;
- };
-
- //! \brief This represents an item of the attribute list
- class AttrItem:
- public Item
- {
- public:
- AttrItem(const t_symbol *tag,metharg tp,methfun fun,int flags);
-
- enum {
- afl_get = 0x01, afl_set = 0x02,
- afl_getset = afl_get|afl_set,
- afl_shown = 0x08
- };
-
- bool IsGet() const { return (flags&afl_getset) == afl_get; }
- bool IsSet() const { return (flags&afl_getset) == afl_set; }
- bool IsShown() const { return (flags&afl_shown) != 0; }
- bool BothExist() const { return counter != NULL; }
- AttrItem *Counterpart() { return counter; }
-
- int index;
- int flags;
- metharg argtp;
- methfun fun;
- AttrItem *counter;
- const t_symbol *tag;
- };
-
- //! Represent a data value of an attribute
- class AttrData:
- public flext_root
- {
- public:
- AttrData(): flags(0) {}
-
- enum { afl_save = 0x01,afl_init = 0x02,afl_inited = 0x04 };
-
- void SetSave(bool s) { if(s) flags |= afl_save; else flags &= ~afl_save; }
- bool IsSaved() const { return (flags&afl_save) != 0; }
- void SetInit(bool s) { if(s) flags |= afl_init; else flags &= ~afl_init; }
- bool IsInit() const { return (flags&afl_init) != 0; }
- void SetInitValue(int argc,const t_atom *argv) { init(argc,argv); flags |= afl_inited; }
- void SetInitValue(const AtomList &l) { SetInitValue(l.Count(),l.Atoms()); }
- bool IsInitValue() const { return (flags&afl_inited) != 0; }
- const AtomList &GetInitValue() const { return init; }
-
- AtomList init;
- int flags;
- };
-
- class AttrDataCont
- :public TablePtrMap<const t_symbol *,AttrData *,8>
- {
- public:
- virtual ~AttrDataCont();
- virtual void clear();
- };
-
- // these outlet functions don't check for thread but send directly to the real-time system
- void ToSysBang(int n) const { outlet *o = GetOut(n); if(o) { CRITON(); outlet_bang((t_outlet *)o); CRITOFF(); } }
- void ToSysFloat(int n,float f) const { outlet *o = GetOut(n); if(o) { CRITON(); outlet_float((t_outlet *)o,f); CRITOFF(); } }
- void ToSysInt(int n,int f) const { outlet *o = GetOut(n); if(o) { CRITON(); outlet_flint((t_outlet *)o,f); CRITOFF(); } }
- void ToSysSymbol(int n,const t_symbol *s) const { outlet *o = GetOut(n); if(o) { CRITON(); outlet_symbol((t_outlet *)o,const_cast<t_symbol *>(s)); CRITOFF(); } }
- void ToSysString(int n,const char *s) const { ToSysSymbol(n,MakeSymbol(s)); }
- void ToSysList(int n,int argc,const t_atom *argv) const { outlet *o = GetOut(n); if(o) { CRITON(); outlet_list((t_outlet *)o,const_cast<t_symbol *>(sym_list),argc,(t_atom *)argv); CRITOFF(); } }
- void ToSysList(int n,const AtomList &list) const { ToSysList(n,list.Count(),list.Atoms()); }
- void ToSysAnything(int n,const t_symbol *s,int argc,const t_atom *argv) const { outlet *o = GetOut(n); if(o) { CRITON(); outlet_anything((t_outlet *)o,const_cast<t_symbol *>(s),argc,(t_atom *)argv); CRITOFF(); } }
- void ToSysAnything(int n,const AtomAnything &any) const { ToSysAnything(n,any.Header(),any.Count(),any.Atoms()); }
- void ToSysAnything(int n,const t_symbol *s,const AtomList &list) const { ToSysAnything(n,s,list.Count(),list.Atoms()); }
-
- void ToSysBool(int n,bool f) const { ToSysInt(n,f?1:0); }
- void ToSysAtom(int n,const t_atom &at) const;
-
- static void ToSysMsg(MsgBundle *mb);
-
- // add class method handlers
- static void AddMessageMethods(t_class *c,bool dsp,bool dspin);
-
-private:
- class pxbnd_object;
-public:
-
- //! \brief This represents an item of the symbol-bound method list
- class BindItem:
- public Item
- {
- public:
- BindItem(bool (*f)(flext_base *,t_symbol *s,int,t_atom *,void *),pxbnd_object *px);
- virtual ~BindItem();
-
- void Unbind(const t_symbol *s);
-
- bool (*fun)(flext_base *,t_symbol *s,int,t_atom *,void *);
- pxbnd_object *px;
- };
-
- ItemCont *ThMeths() { if(!methhead) methhead = new ItemCont; return methhead; }
- static ItemCont *ClMeths(t_classid c);
-
- //! \brief This is the central function to add message handlers. It is used by all other AddMethod incarnations.
- static void AddMethod(ItemCont *ma,int inlet,const t_symbol *tag,methfun fun,metharg tp,...);
-
- ItemCont *ThAttrs() { return attrhead; }
- static ItemCont *ClAttrs(t_classid c);
-
- static void AddAttrib(ItemCont *aa,ItemCont *ma,const t_symbol *attr,metharg tp,methfun gfun,methfun sfun);
- void AddAttrib(const t_symbol *attr,metharg tp,methfun gfun,methfun sfun);
- static void AddAttrib(t_classid c,const t_symbol *attr,metharg tp,methfun gfun,methfun sfun);
-
-private:
-
- static inline flext_base *thisObject(flext_hdr *c) { return FLEXT_CAST<flext_base *>(c->data); }
-
- static void Setup(t_classid c);
-
- //! \brief This represents either an inlet or outlet during construction
- class FLEXT_SHARE xlet {
- public:
- xlet();
- ~xlet();
-
- xlettype tp;
- char *desc;
-
- void Desc(const char *c);
- };
-
- static xlet inlist[];
- static xlet outlist[];
-
- //! current message tag
- static const t_symbol *curtag;
- //! number of message and signal inlets/outlets
- unsigned char incnt,outcnt,insigs,outsigs;
-
- outlet **outlets;
-
- union t_any {
- float ft;
- int it;
- bool bt;
- t_symbol *st;
-#if FLEXT_SYS == FLEXT_SYS_PD
- t_gpointer *pt;
-#endif
- void *vt;
- };
-
- typedef bool (*methfun_V)(flext_base *c,int argc,t_atom *argv);
- typedef bool (*methfun_A)(flext_base *c,const t_symbol *s,int argc,t_atom *argv);
- typedef bool (*methfun_0)(flext_base *c);
- typedef bool (*methfun_1)(flext_base *c,t_any &);
- typedef bool (*methfun_2)(flext_base *c,t_any &,t_any &);
- typedef bool (*methfun_3)(flext_base *c,t_any &,t_any &,t_any &);
- typedef bool (*methfun_4)(flext_base *c,t_any &,t_any &,t_any &,t_any &);
- typedef bool (*methfun_5)(flext_base *c,t_any &,t_any &,t_any &,t_any &,t_any &);
-
- mutable ItemCont *methhead;
- mutable ItemCont *bindhead;
-
- bool FindMeth(int inlet,const t_symbol *s,int argc,const t_atom *argv);
- bool FindMethAny(int inlet,const t_symbol *s,int argc,const t_atom *argv);
- bool TryMethTag(Item *lst,const t_symbol *tag,int argc,const t_atom *argv);
- bool TryMethSym(Item *lst,const t_symbol *s);
- bool TryMethAny(Item *lst,const t_symbol *s,int argc,const t_atom *argv);
-
- mutable ItemCont *attrhead;
- mutable AttrDataCont *attrdata;
-
- AttrItem *FindAttrib(const t_symbol *tag,bool get,bool msg = false) const;
-
- bool InitAttrib(int argc,const t_atom *argv);
-
- bool DumpAttrib(const t_symbol *tag,AttrItem *a) const;
- bool GetAttrib(const t_symbol *tag,AttrItem *a,AtomList &l) const;
- bool SetAttrib(const t_symbol *tag,AttrItem *a,int argc,const t_atom *argv);
- bool SetAttrib(const t_symbol *tag,AttrItem *a,const AtomList &l) { return SetAttrib(tag,a,l.Count(),l.Atoms()); }
- // get and set the attribute
- bool BangAttrib(const t_symbol *tag,AttrItem *a);
- // show/hide the attribute
- bool ShowAttrib(AttrItem *a,bool show) const;
-
- static bool cb_ListMethods(flext_base *c,int argc,const t_atom *argv);
- static bool cb_ListAttrib(flext_base *c) { return c->ListAttrib(); }
-
- // queue stuff
-
- //! Start message queue
- static void StartQueue();
-#if FLEXT_QMODE == 2
- //! Queue worker function
- static void QWorker(thr_params *);
-#endif
- //! Flush messages in the queue
- static void QFlush(flext_base *th = NULL);
-
-#if FLEXT_SYS == FLEXT_SYS_PD
-
- static void SetGfx(t_classid c);
-
-#ifndef FLEXT_NOATTREDIT
- // attribute editor
- static bool cb_AttrDialog(flext_base *c,int argc,const t_atom *argv);
- static void cb_GfxProperties(flext_hdr *c, t_glist *);
-#endif
-
-#ifdef FLEXT_ATTRHIDE
- static void cb_GfxVis(flext_hdr *c, t_glist *gl, int vis);
- static void cb_GfxSave(flext_hdr *c, t_binbuf *b);
- static void cb_GfxSelect(flext_hdr *x, struct _glist *glist, int state);
-
- void BinbufArgs(t_binbuf *b,t_binbuf *args,bool withname,bool transdoll);
- void BinbufAttr(t_binbuf *b,bool transdoll);
-#endif
-
- static void cb_bang(flext_hdr *c);
- static void cb_float(flext_hdr *c,t_float f);
- static void cb_symbol(flext_hdr *c,const t_symbol *s);
-// static void cb_pointer(fltext_hdr *c,const t_gpointer *p);
- static void cb_anything(flext_hdr *c,const t_symbol *s,int argc,t_atom *argv);
-
- // proxy object (for additional inlets)
- static t_class *px_class;
-
- struct px_object // no virtual table!
- {
- t_object obj; // MUST reside at memory offset 0
- flext_base *base;
- int index;
-
- void init(flext_base *b,int ix) { base = b; index = ix; }
- static void px_bang(px_object *c);
- static void px_float(px_object *c,t_float f);
- static void px_symbol(px_object *c,const t_symbol *s);
-// static void px_pointer(px_object *c,const t_gpointer *p);
- static void px_anything(px_object *c,const t_symbol *s,int argc,t_atom *argv);
- };
-
- static void cb_px_ft1(flext_hdr *c,t_float f);
- static void cb_px_ft2(flext_hdr *c,t_float f);
- static void cb_px_ft3(flext_hdr *c,t_float f);
- static void cb_px_ft4(flext_hdr *c,t_float f);
- static void cb_px_ft5(flext_hdr *c,t_float f);
- static void cb_px_ft6(flext_hdr *c,t_float f);
- static void cb_px_ft7(flext_hdr *c,t_float f);
- static void cb_px_ft8(flext_hdr *c,t_float f);
- static void cb_px_ft9(flext_hdr *c,t_float f);
-
-#elif FLEXT_SYS == FLEXT_SYS_MAX
- typedef object px_object;
- static void cb_bang(flext_hdr *c);
- static void cb_float(flext_hdr *c,double f);
- static void cb_int(flext_hdr *c,long v);
- static void cb_anything(flext_hdr *c,const t_symbol *s,short argc,t_atom *argv);
-
- static void cb_px_in1(flext_hdr *c,long v);
- static void cb_px_in2(flext_hdr *c,long v);
- static void cb_px_in3(flext_hdr *c,long v);
- static void cb_px_in4(flext_hdr *c,long v);
- static void cb_px_in5(flext_hdr *c,long v);
- static void cb_px_in6(flext_hdr *c,long v);
- static void cb_px_in7(flext_hdr *c,long v);
- static void cb_px_in8(flext_hdr *c,long v);
- static void cb_px_in9(flext_hdr *c,long v);
-
- static void cb_px_ft1(flext_hdr *c,double f);
- static void cb_px_ft2(flext_hdr *c,double f);
- static void cb_px_ft3(flext_hdr *c,double f);
- static void cb_px_ft4(flext_hdr *c,double f);
- static void cb_px_ft5(flext_hdr *c,double f);
- static void cb_px_ft6(flext_hdr *c,double f);
- static void cb_px_ft7(flext_hdr *c,double f);
- static void cb_px_ft8(flext_hdr *c,double f);
- static void cb_px_ft9(flext_hdr *c,double f);
-#endif
-
- px_object **inlets;
-
- // --------- symbol-bound proxy
-
- static t_class *pxbnd_class;
-
- class pxbnd_object:
- public flext_root
- // no virtual table!
- {
- public:
- t_object obj; // MUST reside at memory offset 0
- flext_base *base;
- BindItem *item;
- void *data;
-
- void init(flext_base *b,BindItem *it,void *d) { base = b; item = it; data = d; }
- static void px_method(pxbnd_object *c,const t_symbol *s,int argc,t_atom *argv);
- };
-
- //! create proxy class for symbol binding
- static void SetupBindProxy();
-
- // ---------
-
- //! set up inlet proxies
- static void SetProxies(t_class *c,bool dsp);
-
- //! initialize inlets (according to class or object constructor definitions)
- bool InitInlets();
-
- //! initialize outlets (according to class or object constructor definitions)
- bool InitOutlets();
-
- // callback functions
-
- static void cb_loadbang(flext_hdr *c);
-
-#if FLEXT_SYS == FLEXT_SYS_MAX
- char **indesc,**outdesc;
-
- static void cb_assist(flext_hdr *c,void *b,long msg,long arg,char *s);
- static void cb_click (flext_hdr *c, Point pt, short mods);
-
- static void cb_dsp(flext_hdr *c,t_signal **s,short *count);
-#elif FLEXT_SYS == FLEXT_SYS_PD
- static void cb_click(flext_hdr *z,t_floatarg xpos,t_floatarg ypos,t_floatarg shift,t_floatarg ctrl,t_floatarg alt);
-
- static void cb_dsp(flext_hdr *c,t_signal **s);
-#endif
-};
-
-#endif
diff --git a/externals/grill/flext/source/flcontainers.h b/externals/grill/flext/source/flcontainers.h
deleted file mode 100644
index 2b33c4e5..00000000
--- a/externals/grill/flext/source/flcontainers.h
+++ /dev/null
@@ -1,473 +0,0 @@
-/*
-
-flext - C++ layer for Max/MSP and pd (pure data) externals
-
-Copyright (c) 2001-2006 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-/*! \file flcontainers.h
- \brief Lock-free container classes
-
- This code has been adapted from the MidiShare project (c)Grame
- http://midishare.sourceforge.net
-*/
-
-#ifndef __FLCONTAINERS_H
-#define __FLCONTAINERS_H
-
-
-#include "flprefix.h"
-
-
-// define that precautiously...
-// it's faster without that but we can't really know...
-#define __SMP__
-
-
-class FLEXT_SHARE Lifo
-{
-public:
- class Cell
- {
- friend class Lifo;
- friend class Fifo;
- private:
- Cell *link;
- };
-
- inline Lifo() { Init(); }
-
- inline void Init() { ic = oc = 0; top = NULL; }
-
- inline Cell *Avail() { return (Cell *)top; }
-
-#if defined(_MSC_VER) && FLEXT_CPU == FLEXT_CPU_IA32
- #ifdef __SMP__
- #define LOCK lock
- #else
- #define LOCK
- #endif
-
- inline void Push(Cell *cell)
- {
- __asm
- {
- push eax
- push ebx
- push ecx
- push edx
- push esi
- mov esi, this
- mov eax, dword ptr [esi]
- mov ecx, cell
- mov edx, dword ptr [esi+4]
- _loop:
- mov ebx, eax
- inc ebx
- mov [ecx], edx
- LOCK cmpxchg8b qword ptr [esi]
- jnz _loop
- pop esi
- pop edx
- pop ecx
- pop ebx
- pop eax
- }
- }
-
- inline Cell *Pop()
- {
- __asm
- {
- push ebx
- push ecx
- push edx
- push esi
- mov esi, this
- add esi, 4 /* point to top */
- mov edx, dword ptr [esi+4]
- mov eax, dword ptr [esi]
- test eax, eax
- jz _end
- _loop:
- mov ebx, dword ptr [eax]
- mov ecx, edx
- inc ecx
- LOCK cmpxchg8b qword ptr [esi]
- jz _end
- test eax, eax
- jnz _loop
- _end:
- pop esi
- pop edx
- pop ecx
- pop ebx
- }
- }
-
- inline size_t Size() const { return ic-oc; }
-#elif defined(__GNUC__) && FLEXT_CPU == FLEXT_CPU_IA32
- #ifndef SMPLOCK
- # ifdef __SMP__
- # define SMPLOCK "lock ; "
- # else
- # define SMPLOCK ""
- # endif
- #endif
-
- inline void Push(Cell *cl)
- {
- __asm__ __volatile__ (
- "# LFPUSH \n\t"
- "pushl %%ebx \n\t"
- "pushl %%ecx \n\t"
- "movl 0(%%esi), %%eax \n\t"
- "movl 4(%%esi), %%edx \n"
- "1: \t"
- "movl %%eax, %%ebx \n\t"
- "incl %%ebx \n\t"
- "movl %%edx, (%%ecx) \n\t"
- SMPLOCK "cmpxchg8b (%%esi) \n\t"
- "jnz 1b \n\t"
- "popl %%ecx \n\t"
- "popl %%ebx \n\t"
- :/* no output */
- :"S" (this), "c" (cl)
- :"memory", "eax", "edx");
- }
-
- inline Cell *Pop()
- {
- Cell *v=0;
- __asm__ __volatile__ (
- "# LFPOP \n\t"
- "pushl %%ebx \n\t"
- "pushl %%ecx \n\t"
- "movl 4(%%esi), %%edx \n\t"
- "movl (%%esi), %%eax \n\t"
- "testl %%eax, %%eax \n\t"
- "jz 2f \n"
- "1: \t"
- "movl (%%eax), %%ebx \n\t"
- "movl %%edx, %%ecx \n\t"
- "incl %%ecx \n\t"
- SMPLOCK "cmpxchg8b (%%esi) \n\t"
- "jz 2f \n\t"
- "testl %%eax, %%eax \n\t"
- "jnz 1b \n"
- "2: \t"
- "popl %%ecx \n\t"
- "popl %%ebx \n\t"
- :"=a" (v)
- :"S" (&this->top)
- :"memory", "edx");
- return v;
- }
-
- inline size_t Size() const
- {
- size_t n;
- __asm__ __volatile__ (
- "# LFSIZE \n\t"
- "movl 8(%%esi), %%edx \n\t"
- "movl (%%esi), %%eax \n\t"
- "subl %%edx, %%eax \n\t"
- :"=a" (n)
- :"S" (this)
- :"memory", "edx");
- return n;
- }
-#elif 0 //defined(__GNUC__) && FLEXT_CPU == FLEXT_CPU_X86_64
-/* attention - this only works for EMT64 or newer revisions of AMD 64-bit cpus */
- #ifndef SMPLOCK
- # ifdef __SMP__
- # define SMPLOCK "lock ; "
- # else
- # define SMPLOCK ""
- # endif
- #endif
-
- inline void Push(Cell *cl)
- {
- __asm__ __volatile__ (
- "# LFPUSH \n\t"
- "push %%rbx \n\t"
- "push %%rcx \n\t"
- "mov 0(%%rsi), %%rax \n\t"
- "mov 8(%%rsi), %%rdx \n"
- "1: \t"
- "mov %%rax, %%rbx \n\t"
- "inc %%rbx \n\t"
- "mov %%rdx, (%%rcx) \n\t"
- SMPLOCK "cmpxchg16b (%%rsi) \n\t"
- "jnz 1b \n\t"
- "pop %%rcx \n\t"
- "pop %%rbx \n\t"
- :/* no output */
- :"S" (this), "c" (cl)
- :"memory", "rax", "rdx");
- }
-
- inline Cell *Pop()
- {
- Cell *v=0;
- __asm__ __volatile__ (
- "# LFPOP \n\t"
- "push %%rbx \n\t"
- "push %%rcx \n\t"
- "mov 8(%%rsi), %%rdx \n\t"
- "mov (%%rsi), %%rax \n\t"
- "test %%rax, %%rax \n\t"
- "jz 2f \n"
- "1: \t"
- "mov (%%rax), %%rbx \n\t"
- "mov %%rdx, %%rcx \n\t"
- "inc %%rcx \n\t"
- SMPLOCK "cmpxchg16b (%%rsi) \n\t"
- "jz 2f \n\t"
- "test %%rax, %%rax \n\t"
- "jnz 1b \n"
- "2: \t"
- "pop %%rcx \n\t"
- "pop %%rbx \n\t"
- :"=a" (v)
- :"S" (&this->top)
- :"memory", "rdx");
- return v;
- }
-
- inline size_t Size() const
- {
- size_t n;
- __asm__ __volatile__ (
- "# LFSIZE \n\t"
- "mov 16(%%rsi), %%rdx \n\t"
- "mov (%%rsi), %%rax \n\t"
- "sub %%rdx, %%rax \n\t"
- :"=a" (n)
- :"S" (this)
- :"memory", "rdx");
- return n;
- }
-
-#elif defined(__GNUC__) && FLEXT_CPU == FLEXT_CPU_PPC
- inline void Push(register Cell *cl)
- {
- register volatile long t1;
- register long t2=0;
- asm volatile (
- "# LFPUSH \n"
- "0: \n"
- " lwarx %0, %3, %1 \n"
- " stw %0, 0(%2) \n"
- " sync \n"
- " stwcx. %2, %3, %1 \n"
- " bne- 0b \n"
- "0: \n"
- " lwarx %0, %3, %4 \n"
- " addi %0, %0, 1 \n"
- " sync \n"
- " stwcx. %0, %3, %4 \n"
- " bne- 0b \n"
- : "=r" (t1)
- : "r" (&this->top), "r" (cl), "r" (t2), "r" (&this->oc), "0" (t1)
- : "r0" /* prevents using r0 because of the ambiguity of 'addi' coding: */
- /* gcc version 2.95.3 20010315 (release - Linux-Mandrake 8.0 for PPC) */
- /* compiles the instruction "addi 0, 0, n" as li 0, n */
- );
- }
-
- inline Cell *Pop()
- {
- register Cell *result;
- register volatile long a, b;
- register long c=0;
- asm volatile (
- "# LFPOP \n"
- "0: \n"
- " lwarx %4, %1, %2 \n" /* creates a reservation on lf */
- " cmpwi %4, 0 \n" /* test if the lifo is empty */
- " beq- 1f \n"
- " lwz %5, 0(%4) \n" /* next cell in b */
- " sync \n" /* synchronize instructions */
- " stwcx. %5, %1, %2 \n" /* if the reservation is not altered */
- /* modify lifo top */
- " bne- 0b \n" /* otherwise: loop and try again */
- "0: \n"
- " lwarx %5, %1, %3 \n" /* creates a reservation on lf->count */
- " addi %5, %5, -1 \n" /* dec count */
- " sync \n" /* synchronize instructions */
- " stwcx. %5, %1, %3 \n" /* conditionnal store */
- " bne- 0b \n"
- "1: \n"
- " mr %0, %4 \n"
- :"=r" (result), "=r" (c)
- : "r" (&this->top), "r" (&this->oc), "r" (a), "r" (b), "1" (c)
- : "r0" /* prevents using r0 because of the ambiguity of 'addi' coding: */
- /* gcc version 2.95.3 20010315 (release - Linux-Mandrake 8.0 for PPC) */
- /* compiles the instruction "addi 0, 0, n" as li 0, n */
- );
- return result;
- }
-
- inline size_t Size() const { return oc; }
-
-#else
- // no lock free code available for this compiler/platform
-
- inline void Push(Cell *c)
- {
-#ifdef FLEXT_THREADS
- mutex.Lock();
-#endif
- c->link = (Cell *)top;
- top = c;
- ++oc;
-#ifdef FLEXT_THREADS
- mutex.Unlock();
-#endif
- }
-
- inline Cell *Pop()
- {
- if(top) {
- Cell *r;
-#ifdef FLEXT_THREADS
- mutex.Lock();
-#endif
- r = (Cell *)top;
- top = r->link;
- --oc;
-#ifdef FLEXT_THREADS
- mutex.Unlock();
-#endif
- return r;
- }
- else
- return NULL;
- }
-
- inline size_t Size() const { return oc; }
-
-private:
-#ifdef FLEXT_THREADS
- flext::ThrMutex mutex;
-#endif
-
-#endif
-
-private:
- // don't change order!
- volatile size_t ic; // input (push) count
- volatile Cell *top; // top of the stack
- volatile size_t oc; // output (pop) count
-#ifdef __POWERPC__
- size_t unused[5]; // lifo size must be at least 32 bytes
- // to avoid livelock in multiprocessor
-#endif
-};
-
-template <typename T>
-class TypedLifo
- : public Lifo
-{
-public:
- inline T *Avail() { return static_cast<T *>(Lifo::Avail()); }
- inline void Push(T *c) { Lifo::Push(static_cast<T *>(c)); }
- inline T *Pop() { return static_cast<T *>(Lifo::Pop()); }
-};
-
-template <typename T,int M = 2,int O = 1>
-class PooledLifo
- : public TypedLifo<T>
-{
-public:
- inline T *New() { T *n = reuse.Pop(); return n?n:new T; }
- inline size_t Size() const { return TypedLifo<T>::Size(); }
- inline void Free(T *p) { if(reuse.Size() < Size()*M+O) reuse.Push(p); else delete p; }
-private:
- TypedLifo<T> reuse;
-};
-
-
-class FLEXT_SHARE Fifo
-{
-public:
- typedef Lifo::Cell Cell;
-
- void Init() { in.Init(); out.Init(); }
-
- inline size_t Size() const { return in.Size()+out.Size(); }
-
- inline void Put(Cell *cl) { in.Push(cl); }
-
- Cell *Get()
- {
- Cell *v1 = out.Pop();
- if(!v1) {
- v1 = in.Pop();
- if(v1)
- for(Cell *v2; (v2 = in.Pop()) != NULL; v1 = v2)
- out.Push(v1);
- }
- return v1;
- }
-
- Cell *Avail()
- {
- Cell *v1 = out.Avail();
- if(v1)
- return v1;
- else {
- for(Cell *v2; (v2 = in.Pop()) != NULL; )
- out.Push(v2);
- return out.Avail();
- }
- }
-
- Cell *Clear()
- {
- Cell *first = Get();
- if(!first) return NULL;
-
- Cell *next,*cur = first;
- while((next = Get()) != NULL) {
- cur->link = next;
- cur = next;
- }
- cur->link = NULL;
-
- Init();
- return first;
- }
-
- Lifo in,out;
-};
-
-template <typename T>
-class TypedFifo
- : public Fifo
-{
-public:
- inline T *Avail() { return static_cast<T *>(Fifo::Avail()); }
- inline void Put(T *c) { Fifo::Put(static_cast<T *>(c)); }
- inline T *Get() { return static_cast<T *>(Fifo::Get()); }
- inline T *Clear() { return static_cast<T *>(Fifo::Clear()); }
-};
-
-template <typename T,int M = 2,int O = 1>
-class PooledFifo
- : public TypedFifo<T>
-{
-public:
- inline T *New() { T *n = reuse.Pop(); return n?n:new T; }
- inline size_t Size() const { return TypedFifo<T>::Size(); }
- inline void Free(T *p) { if(reuse.Size() < Size()*M+O) reuse.Push(p); else delete p; }
-private:
- TypedLifo<T> reuse;
-};
-
-#endif
diff --git a/externals/grill/flext/source/flcwmax-thr.h b/externals/grill/flext/source/flcwmax-thr.h
deleted file mode 100644
index 4167be9f..00000000
--- a/externals/grill/flext/source/flcwmax-thr.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
-
-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.
-
-*/
-
-/*! \file flcwmax-thr.h
- \brief Prefix file for CodeWarrior projects - OS 9 threaded version.
-*/
-
-#ifndef _FLEXT_CW_MAX_THR_H
-#define _FLEXT_CW_MAX_THR_H
-
-#define FLEXT_THREADS
-
-/*
- old CodeWarrior version (<= 6) don't have sigset_t defined which
- is needed for pthreads
-*/
-#if defined(__MWERKS__) && (__MWERKS__ == 1) // read __MWERKS__ numbering starts with CW7
- typedef unsigned int sigset_t;
- #define _CW_NOPRECOMP // no precompiled headers
-#endif
-
-#include "flcwmax.h"
-
-#endif
diff --git a/externals/grill/flext/source/flcwmax-x-thr.h b/externals/grill/flext/source/flcwmax-x-thr.h
deleted file mode 100644
index 93b78289..00000000
--- a/externals/grill/flext/source/flcwmax-x-thr.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
-
-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.
-
-*/
-
-/*! \file flcwmax-x-thr.h
- \brief Prefix file for CodeWarrior projects - OS X threaded version.
-*/
-
-#ifndef _FLEXT_CW_MAX_X_THR_H
-#define _FLEXT_CW_MAX_X_THR_H
-
-#define FLEXT_THREADS
-
-/*
- old CodeWarrior version (<= 6) don't have sigset_t defined which
- is needed for pthreads
-*/
-#if defined(__MWERKS__) && (__MWERKS__ == 1) // read __MWERKS__ numbering starts with CW7
- typedef unsigned int sigset_t;
- #define _CW_NOPRECOMP // no precompiled headers
-#endif
-
-#include "flcwmax-x.h"
-
-#endif
diff --git a/externals/grill/flext/source/flcwmax-x.h b/externals/grill/flext/source/flcwmax-x.h
deleted file mode 100644
index e1e340d2..00000000
--- a/externals/grill/flext/source/flcwmax-x.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
-
-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.
-
-*/
-
-/*! \file flcwmax-x.h
- \brief Prefix file for CodeWarrior projects - OS X version.
-*/
-
-#ifndef _FLEXT_CW_MAX_X_H
-#define _FLEXT_CW_MAX_X_H
-
-//#define TARGET_API_MAC_CARBON 1
-#define _POSIX_C_SOURCE
-#define _POSIX_SOURCE
-
-#include "flcwmax.h"
-
-#endif
diff --git a/externals/grill/flext/source/flcwmax.h b/externals/grill/flext/source/flcwmax.h
deleted file mode 100644
index 4d108e2e..00000000
--- a/externals/grill/flext/source/flcwmax.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
-
-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.
-
-*/
-
-/*! \file flcwmax.h
- \brief Prefix file for CodeWarrior projects - OS 9 version.
-*/
-
-#ifndef _FLEXT_CW_MAX_H
-#define _FLEXT_CW_MAX_H
-
-#ifndef __MWERKS__
- #error "This header file is for CodeWarrior only."
-#endif
-
-#define FLEXT_SYS 1
-#define FLEXT_USE_SIMD
-
-#ifndef _CW_NOPRECOMP
- #include <MacHeaders.h>
-#endif
-
-#if /*__option(sym) ||*/ !__option(opt_dead_code)
- #pragma message("Optimization disabled -> Compiling a debug version (with FLEXT_DEBUG)")
- #define FLEXT_DEBUG
-#endif
-
-/* #define _LOG */
-
-#endif
diff --git a/externals/grill/flext/source/flcwpd-x-thr.h b/externals/grill/flext/source/flcwpd-x-thr.h
deleted file mode 100644
index d3075069..00000000
--- a/externals/grill/flext/source/flcwpd-x-thr.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
-
-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
deleted file mode 100644
index f6b5192b..00000000
--- a/externals/grill/flext/source/flcwpd-x.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
-
-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/fldefs.h b/externals/grill/flext/source/fldefs.h
deleted file mode 100644
index fd31506b..00000000
--- a/externals/grill/flext/source/fldefs.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
-
-flext - C++ layer for Max/MSP and pd (pure data) externals
-
-Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-/*! \file fldefs.h
- \brief This file includes all the #define header files
-*/
-
-#ifndef __FLEXT_DEFS_H
-#define __FLEXT_DEFS_H
-
-/*! \defgroup FLEXT_DEFS Definitions for basic flext functionality
- @{
-*/
-
-/*! \brief Switch for compilation of derived virtual classes
- \remark These need dynamic type casts (and RTTI, naturally)
- \ingroup FLEXT_GLOBALS
-*/
-#ifdef FLEXT_VIRT
-#define FLEXT_CAST dynamic_cast
-#else
-#define FLEXT_CAST static_cast
-#endif
-
-//! @} FLEXT_DEFS
-
-#include "fldefs_hdr.h"
-
-#include "fldefs_setup.h"
-
-
-// ====================================================================================
-
-/*! \defgroup FLEXT_D_METHOD Declarations for flext methods
- @{
-*/
-
-#include "fldefs_methcb.h"
-#include "fldefs_meththr.h"
-#include "fldefs_methadd.h"
-#include "fldefs_methbind.h"
-#include "fldefs_methcall.h"
-
-//! @} FLEXT_D_METHOD
-
-
-
-#ifdef FLEXT_ATTRIBUTES
-
-/*! \defgroup FLEXT_D_ATTRIB Attribute definition
- \note These have to reside inside the class declaration
- @{
-*/
-
-#include "fldefs_attrcb.h"
-#include "fldefs_attrvar.h"
-#include "fldefs_attradd.h"
-
-//! @} FLEXT_D_ATTRIB
-
-#endif // FLEXT_ATTRIBUTES
-
-#endif // __FLEXT_DEFS_H
diff --git a/externals/grill/flext/source/fldefs_attradd.h b/externals/grill/flext/source/fldefs_attradd.h
deleted file mode 100644
index de48b0a4..00000000
--- a/externals/grill/flext/source/fldefs_attradd.h
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
-
-flext - C++ layer for Max/MSP and pd (pure data) externals
-
-Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-/*! \file fldefs_attradd.h
- \brief This file contains all #defines for actual usage
-
-*/
-
-#ifndef __FLEXT_DEFS_ATTRADD_H
-#define __FLEXT_DEFS_ATTRADD_H
-
-
-/*! \defgroup FLEXT_D_CADDATTR Announce object attributes at class scope
- \ingroup FLEXT_D_ATTRIB
- \note These can only be used at class construction time
- @{
-*/
-
-//! Add handler for a gettable attribute
-#define FLEXT_CADDATTR_GET(CL,NAME,GFUN) \
-\
-AddAttrib(CL,flext::MakeSymbol(NAME),(FLEXT_GET_PRE(GFUN)),NULL)
-
-//! Add handler for a settable attribute
-#define FLEXT_CADDATTR_SET(CL,NAME,SFUN) \
-\
-AddAttrib(CL,flext::MakeSymbol(NAME),NULL,(FLEXT_SET_PRE(SFUN)))
-
-//! Add handlers for a both get- and settable attribute
-#define FLEXT_CADDATTR_VAR(CL,NAME,GFUN,SFUN) \
-\
-AddAttrib(CL,flext::MakeSymbol(NAME),(FLEXT_GET_PRE(GFUN)),(FLEXT_SET_PRE(SFUN)))
-
-//! Add handlers for a both get- and settable attribute
-#define FLEXT_CADDATTR_VAR1(CL,NAME,FUN) \
-\
-AddAttrib(CL,flext::MakeSymbol(NAME),(FLEXT_GET_PRE(FUN)),(FLEXT_SET_PRE(FUN)))
-
-
-//! Add handler for a gettable enum attribute
-#define FLEXT_CADDATTR_GET_E(CL,NAME,GFUN) \
-\
-AddAttrib(CL,flext::MakeSymbol(NAME),(bool (*)(flext_base *,int &))(FLEXT_GET_PRE(GFUN)),NULL)
-
-//! Add handler for a settable enum attribute
-#define FLEXT_CADDATTR_SET_E(CL,NAME,SFUN) \
-\
-AddAttrib(CL,flext::MakeSymbol(NAME),NULL,(bool (*)(flext_base *,int &))(FLEXT_SET_PRE(SFUN)))
-
-//! Add handlers for a both get- and settable enum attribute
-#define FLEXT_CADDATTR_VAR_E(CL,NAME,GFUN,SFUN) \
-\
-AddAttrib(CL,flext::MakeSymbol(NAME),(bool (*)(flext_base *,int &))(FLEXT_GET_PRE(GFUN)),(bool (*)(flext_base *,int &))(FLEXT_SET_PRE(SFUN)))
-
-//! Add handlers for a both get- and settable enum attribute
-#define FLEXT_CADDATTR_VAR1_E(CL,NAME,FUN) \
-\
-AddAttrib(CL,flext::MakeSymbol(NAME),(bool (*)(flext_base *,int &))(FLEXT_GET_PRE(FUN)),(bool (*)(flext_base *,int &))(FLEXT_SET_PRE(FUN)))
-
-//! @} FLEXT_D_CADDATTR
-
-
-/*! \defgroup FLEXT_D_ADDATTR Announce object attributes
- \ingroup FLEXT_D_ATTRIB
- \note These can only be used at object construction time
- \note (in constructor or in Init() function before call to parent's Init())
- @{
-*/
-
-//! Add handler for a gettable attribute
-#define FLEXT_ADDATTR_GET(NAME,GFUN) \
-\
-AddAttrib(flext::MakeSymbol(NAME),(FLEXT_GET_PRE(GFUN)),NULL)
-
-//! Add handler for a settable attribute
-#define FLEXT_ADDATTR_SET(NAME,SFUN) \
-\
-AddAttrib(flext::MakeSymbol(NAME),NULL,(FLEXT_SET_PRE(SFUN)))
-
-//! Add handlers for a both get- and settable attribute
-#define FLEXT_ADDATTR_VAR(NAME,GFUN,SFUN) \
-\
-AddAttrib(flext::MakeSymbol(NAME),(FLEXT_GET_PRE(GFUN)),(FLEXT_SET_PRE(SFUN)))
-
-//! Add handlers for a both get- and settable attribute
-#define FLEXT_ADDATTR_VAR1(NAME,FUN) \
-\
-AddAttrib(flext::MakeSymbol(NAME),(FLEXT_GET_PRE(FUN)),(FLEXT_SET_PRE(FUN)))
-
-
-//! Add handler for a gettable enum attribute
-#define FLEXT_ADDATTR_GET_E(NAME,GFUN) \
-\
-AddAttrib(flext::MakeSymbol(NAME),(bool (*)(flext_base *,int &))(FLEXT_GET_PRE(GFUN)),NULL)
-
-//! Add handler for a settable enum attribute
-#define FLEXT_ADDATTR_SET_E(NAME,SFUN) \
-\
-AddAttrib(flext::MakeSymbol(NAME),NULL,(bool (*)(flext_base *,int &))(FLEXT_SET_PRE(SFUN)))
-
-//! Add handlers for a both get- and settable enum attribute
-#define FLEXT_ADDATTR_VAR_E(NAME,GFUN,SFUN) \
-\
-AddAttrib(flext::MakeSymbol(NAME),(bool (*)(flext_base *,int &))(FLEXT_GET_PRE(GFUN)),(bool (*)(flext_base *,int &))(FLEXT_SET_PRE(SFUN)))
-
-//! Add handlers for a both get- and settable enum attribute
-#define FLEXT_ADDATTR_VAR1_E(NAME,FUN) \
-\
-AddAttrib(flext::MakeSymbol(NAME),(bool (*)(flext_base *,int &))(FLEXT_GET_PRE(FUN)),(bool (*)(flext_base *,int &))(FLEXT_SET_PRE(FUN)))
-
-//! @} FLEXT_D_ADDATTR
-
-
-#endif
diff --git a/externals/grill/flext/source/fldefs_attrcb.h b/externals/grill/flext/source/fldefs_attrcb.h
deleted file mode 100644
index 13ca8014..00000000
--- a/externals/grill/flext/source/fldefs_attrcb.h
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
-
-flext - C++ layer for Max/MSP and pd (pure data) externals
-
-Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-/*! \file fldefs_attrcb.h
- \brief This file contains all #defines for actual usage
-
-*/
-
-#ifndef __FLEXT_DEFS_ATTRCB_H
-#define __FLEXT_DEFS_ATTRCB_H
-
-
-
-/*! \brief Declare a attribute set function
- \internal
-*/
-#define FLEXT_CALLSET_(FUN,TP) \
-static bool FLEXT_SET_PRE(FUN)(flext_base *c,TP &arg) \
-{ FLEXT_CAST<thisType *>(c)->FUN(arg); return true; }
-
-/*! \brief Declare a attribute get function
- \internal
-*/
-#define FLEXT_CALLGET_(FUN,TP) \
-static bool FLEXT_GET_PRE(FUN)(flext_base *c,TP &arg) \
-{ FLEXT_CAST<thisType *>(c)->FUN(arg); return true; }
-
-
-
-/*! \defgroup FLEXT_DA_CALLSET Definition of attribute set handlers
- \ingroup FLEXT_D_ATTRIB
- @{
-*/
-
-//! Declare a set function for a float attribute
-#define FLEXT_CALLSET_F(SFUN) \
-\
-FLEXT_CALLSET_(SFUN,float)
-
-//! Declare a set function for an integer attribute
-#define FLEXT_CALLSET_I(SFUN) \
-\
-FLEXT_CALLSET_(SFUN,int)
-
-//! Declare a set function for a boolean attribute
-#define FLEXT_CALLSET_B(SFUN) \
-\
-FLEXT_CALLSET_(SFUN,bool)
-/*
-static bool FLEXT_SET_PRE(FUN)(flext_base *c,int &arg) \
-{ bool b = arg != 0; FLEXT_CAST<thisType *>(c)->FUN(b); return true; }
-*/
-
-//! Declare a set function for an enum attribute
-#define FLEXT_CALLSET_E(SFUN,TP) \
-\
-FLEXT_CALLSET_(SFUN,TP)
-
-//! Declare a set function for a symbol attribute
-#define FLEXT_CALLSET_S(FUN) \
-static bool FLEXT_SET_PRE(FUN)(flext_base *c,const t_symbol *&arg) \
-{ FLEXT_CAST<thisType *>(c)->FUN(arg); return true; }
-
-//! Declare a set function for a variable list attribute
-#define FLEXT_CALLSET_V(FUN) \
-static bool FLEXT_SET_PRE(FUN)(flext_base *c,AtomList *&arg) \
-{ FLEXT_CAST<thisType *>(c)->FUN(*arg); return true; }
-
-//! @} FLEXT_DA_CALLSET
-
-/*! \defgroup FLEXT_DA_CALLGET Definition of attribute get handlers
- \ingroup FLEXT_D_ATTRIB
- @{
-*/
-
-//! Declare a get function for a float attribute
-#define FLEXT_CALLGET_F(GFUN) \
-\
-FLEXT_CALLGET_(GFUN,float)
-
-//! Declare a get function for an integer attribute
-#define FLEXT_CALLGET_I(GFUN) \
-\
-FLEXT_CALLGET_(GFUN,int)
-
-//! Declare a get function for a boolean attribute
-#define FLEXT_CALLGET_B(GFUN) \
-\
-FLEXT_CALLGET_(GFUN,bool)
-/*
-static bool FLEXT_GET_PRE(FUN)(flext_base *c,int &arg) \
-{ bool b; FLEXT_CAST<thisType *>(c)->FUN(b); arg = b?1:0; return true; }
-*/
-
-//! Declare a get function for an enum attribute
-#define FLEXT_CALLGET_E(GFUN,TP) \
-\
-FLEXT_CALLGET_(GFUN,TP)
-
-//! Declare a get function for a symbol attribute
-#define FLEXT_CALLGET_S(FUN) \
-static bool FLEXT_GET_PRE(FUN)(flext_base *c,const t_symbol *&arg) \
-{ FLEXT_CAST<thisType *>(c)->FUN(arg); return true; }
-
-//! Declare a get function for a variable list attribute
-#define FLEXT_CALLGET_V(FUN) \
-static bool FLEXT_GET_PRE(FUN)(flext_base *c,AtomList *&arg) \
-{ FLEXT_CAST<thisType *>(c)->FUN(*arg); return true; }
-
-//! @} FLEXT_DA_CALLGET
-
-
-/*! \defgroup FLEXT_DA_CALLVAR Definition of attribute transfer handlers (both get and set)
- \ingroup FLEXT_D_ATTRIB
- @{
-*/
-
-//! Declare both get and set functions for a float attribute
-#define FLEXT_CALLVAR_F(GFUN,SFUN) \
-\
-FLEXT_CALLGET_F(GFUN) FLEXT_CALLSET_F(SFUN)
-
-//! Declare both get and set functions for an integer attribute
-#define FLEXT_CALLVAR_I(GFUN,SFUN) \
-\
-FLEXT_CALLGET_I(GFUN) FLEXT_CALLSET_I(SFUN)
-
-//! Declare both get and set functions for a symbol attribute
-#define FLEXT_CALLVAR_S(GFUN,SFUN) \
-\
-FLEXT_CALLGET_S(GFUN) FLEXT_CALLSET_S(SFUN)
-
-//! Declare both get and set functions for a boolean attribute
-#define FLEXT_CALLVAR_B(GFUN,SFUN) \
-\
-FLEXT_CALLGET_B(GFUN) FLEXT_CALLSET_B(SFUN)
-
-//! Declare both get and set functions for an enum attribute
-#define FLEXT_CALLVAR_E(GFUN,SFUN,TP) \
-\
-FLEXT_CALLGET_E(GFUN,TP) FLEXT_CALLSET_E(SFUN,TP)
-
-//! Declare both get and set functions for a variable list attribute
-#define FLEXT_CALLVAR_V(GFUN,SFUN) \
-\
-FLEXT_CALLGET_V(GFUN) FLEXT_CALLSET_V(SFUN)
-
-//! @} FLEXT_DA_CALLVAR
-
-
-#endif
diff --git a/externals/grill/flext/source/fldefs_attrvar.h b/externals/grill/flext/source/fldefs_attrvar.h
deleted file mode 100644
index e996b460..00000000
--- a/externals/grill/flext/source/fldefs_attrvar.h
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
-
-flext - C++ layer for Max/MSP and pd (pure data) externals
-
-Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-/*! \file fldefs_attrvar.h
- \brief This file contains all #defines for actual usage
-
-*/
-
-#ifndef __FLEXT_DEFS_ATTRVAR_H
-#define __FLEXT_DEFS_ATTRVAR_H
-
-
-/*! \brief Declare an implicit attribute set function
- \internal
-*/
-#define FLEXT_ATTRSET_(VAR,TP) \
-static bool FLEXT_SET_PRE(VAR)(flext_base *c,TP &arg) \
-{ FLEXT_CAST<thisType *>(c)->VAR = arg; return true; }
-
-/*! \brief Declare an implicit attribute get function
- \internal
-*/
-#define FLEXT_ATTRGET_(VAR,TP) \
-static bool FLEXT_GET_PRE(VAR)(flext_base *c,TP &arg) \
-{ arg = (TP)FLEXT_CAST<thisType *>(c)->VAR; return true; }
-
-
-
-/*! \defgroup FLEXT_DA_ATTRSET Definition of implicit attribute set handlers
- \ingroup FLEXT_D_ATTRIB
- @{
-*/
-
-//! Declare an implicit set function for a float attribute
-#define FLEXT_ATTRSET_F(VAR) \
-\
-FLEXT_ATTRSET_(VAR,float)
-
-//! Declare an implicit set function for an integer attribute
-#define FLEXT_ATTRSET_I(VAR) \
-\
-FLEXT_ATTRSET_(VAR,int)
-
-//! Declare an implicit set function for a symbol attribute
-#define FLEXT_ATTRSET_S(VAR) \
-\
-FLEXT_ATTRSET_(VAR,const t_symbol *)
-
-//! Declare an implicit set function for a boolean attribute
-#define FLEXT_ATTRSET_B(VAR) \
-\
-FLEXT_ATTRSET_(VAR,bool)
-/*
-static bool FLEXT_SET_PRE(VAR)(flext_base *c,int &arg) \
-{ FLEXT_CAST<thisType *>(c)->VAR = arg != 0; return true; }
-*/
-
-//! Declare an implicit set function for an enum attribute
-#define FLEXT_ATTRSET_E(VAR,TP) \
-\
-FLEXT_ATTRSET_(VAR,TP)
-
-//! Declare an implicit set function for a variable list attribute
-#define FLEXT_ATTRSET_V(VAR) \
-static bool FLEXT_SET_PRE(VAR)(flext_base *c,AtomList *&arg) \
-{ FLEXT_CAST<thisType *>(c)->VAR = *arg; return true; }
-
-//! @} FLEXT_DA_ATTRSET
-
-/*! \defgroup FLEXT_DA_ATTRGET Definition of implicit attribute get handlers
- \ingroup FLEXT_D_ATTRIB
- @{
-*/
-
-//! Declare an implicit get function for a float attribute
-#define FLEXT_ATTRGET_F(VAR) \
-\
-FLEXT_ATTRGET_(VAR,float)
-
-//! Declare an implicit get function for an integer attribute
-#define FLEXT_ATTRGET_I(VAR) \
-\
-FLEXT_ATTRGET_(VAR,int)
-
-//! Declare an implicit get function for a symbol attribute
-#define FLEXT_ATTRGET_S(VAR) \
-\
-FLEXT_ATTRGET_(VAR,const t_symbol *)
-
-//! Declare an implicit get function for a boolean attribute
-#define FLEXT_ATTRGET_B(VAR) \
-\
-FLEXT_ATTRGET_(VAR,bool)
-/*
-static bool FLEXT_GET_PRE(VAR)(flext_base *c,int &arg) \
-{ arg = FLEXT_CAST<thisType *>(c)->VAR?1:0; return true; }
-*/
-
-//! Declare an implicit get function for an enum attribute
-#define FLEXT_ATTRGET_E(VAR,TP) \
-\
-FLEXT_ATTRGET_(VAR,TP)
-
-//! Declare an implicit get function for a variable list attribute
-#define FLEXT_ATTRGET_V(VAR) \
-static bool FLEXT_GET_PRE(VAR)(flext_base *c,AtomList *&arg) \
-{ *arg = FLEXT_CAST<thisType *>(c)->VAR; return true; }
-
-//! @} FLEXT_DA_ATTRGET
-
-
-/*! \defgroup FLEXT_DA_ATTRVAR Definition of implicit attribute transfer handlers (both get and set)
- \ingroup FLEXT_D_ATTRIB
- @{
-*/
-
-//! Declare both implicit get and set functions for a float attribute
-#define FLEXT_ATTRVAR_F(VAR) \
-\
-FLEXT_ATTRGET_F(VAR) FLEXT_ATTRSET_F(VAR)
-
-//! Declare both implicit get and set functions for an integer attribute
-#define FLEXT_ATTRVAR_I(VAR) \
-\
-FLEXT_ATTRGET_I(VAR) FLEXT_ATTRSET_I(VAR)
-
-//! Declare both implicit get and set functions for a symbol attribute
-#define FLEXT_ATTRVAR_S(VAR) \
-\
-FLEXT_ATTRGET_S(VAR) FLEXT_ATTRSET_S(VAR)
-
-//! Declare both implicit get and set functions for a boolean attribute
-#define FLEXT_ATTRVAR_B(VAR) \
-\
-FLEXT_ATTRGET_B(VAR) FLEXT_ATTRSET_B(VAR)
-
-//! Declare both implicit get and set functions for an enum attribute
-#define FLEXT_ATTRVAR_E(VAR,TP) \
-\
-FLEXT_ATTRGET_(VAR,TP) FLEXT_ATTRSET_(VAR,TP)
-
-//! Declare both implicit get and set functions for a variable list attribute
-#define FLEXT_ATTRVAR_V(VAR) \
-\
-FLEXT_ATTRGET_V(VAR) FLEXT_ATTRSET_V(VAR)
-
-
-//! @} FLEXT_DA_ATTRVAR
-
-
-#endif
diff --git a/externals/grill/flext/source/fldefs_hdr.h b/externals/grill/flext/source/fldefs_hdr.h
deleted file mode 100644
index 01bcd477..00000000
--- a/externals/grill/flext/source/fldefs_hdr.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
-
-flext - C++ layer for Max/MSP and pd (pure data) externals
-
-Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-/*! \file fldefs_hdr.h
- \brief This file contains all #defines for actual usage
-
-*/
-
-#ifndef __FLEXT_DEFS_HEADER_H
-#define __FLEXT_DEFS_HEADER_H
-
-
-/*! \defgroup FLEXT_D_HEADER Flext class header
- \note One (and only one!) of these definitions is compulsory for the class declaration.
- \note It has to be placed somewhere in the class definition (not necessarily in a public section).
-
- @{
-*/
-
-/*! \brief Plain flext class header
- \param NEW_CLASS name of the current C++ class
- \param PARENT_CLASS name of the base C++ class (e.g. flext_base or flext_dsp)
-*/
-#define FLEXT_HEADER(NEW_CLASS,PARENT_CLASS) \
-\
-FLEXT_REALHDR(NEW_CLASS, PARENT_CLASS)
-
-#define FLEXT_HEADER_T(NEW_CLASS,PARENT_CLASS) \
-\
-FLEXT_REALHDR_T(NEW_CLASS, PARENT_CLASS)
-
-/*! \brief Flext class header with setup function
- \param NEW_CLASS name of the current C++ class
- \param PARENT_CLASS name of the base C++ class (e.g. flext_base or flext_dsp)
- \param SETUPFUN setup function, of type "void (*setupfn)(t_class *)"
-
- The setup function is called after class creation. It corresponds to the
- original PD "[object]_setup" function, apart from the
- fact that all necessary class initializations have already been taken care of by flext.
- The setup function can e.g. be used for a message to the console upon first creation of an object.
-*/
-#define FLEXT_HEADER_S(NEW_CLASS, PARENT_CLASS, SETUPFUN)\
-\
-FLEXT_REALHDR_S(NEW_CLASS, PARENT_CLASS, SETUPFUN)
-
-#define FLEXT_HEADER_TS(NEW_CLASS, PARENT_CLASS, SETUPFUN)\
-\
-FLEXT_REALHDR_TS(NEW_CLASS, PARENT_CLASS, SETUPFUN)
-
-
-//! @} FLEXT_D_HEADER
-
-
-#endif
diff --git a/externals/grill/flext/source/fldefs_methadd.h b/externals/grill/flext/source/fldefs_methadd.h
deleted file mode 100644
index 0798f702..00000000
--- a/externals/grill/flext/source/fldefs_methadd.h
+++ /dev/null
@@ -1,232 +0,0 @@
-/*
-
-flext - C++ layer for Max/MSP and pd (pure data) externals
-
-Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-/*! \file fldefs_methadd.h
- \brief This file contains all #defines for actual usage
-
-*/
-
-#ifndef __FLEXT_DEFS_METHADD_H
-#define __FLEXT_DEFS_METHADD_H
-
-
-/*! \defgroup FLEXT_D_CADDMETHOD Add flext methods within class scope
- \ingroup FLEXT_D_METHOD
- \note These can only be used at class construction time
- @{
-*/
-
-/*! Add a method handler for bang
- \note This is for compatibility - better use the method below
-*/
-#define FLEXT_CADDBANG(CL,IX,M_FUN) \
-\
-AddMethod(CL,IX,FLEXT_CALL_PRE(M_FUN))
-
-//! Add a handler for a method with either no, list or anything arguments
-#define FLEXT_CADDMETHOD(CL,IX,M_FUN) \
-\
-AddMethod(CL,IX,FLEXT_CALL_PRE(M_FUN))
-
-//! Add a a handler for a method with implicit arguments
-#define FLEXT_CADDMETHOD_(CL,IX,M_TAG,M_FUN) \
-\
-AddMethod(CL,IX,flext::MakeSymbol(M_TAG),FLEXT_CALL_PRE(M_FUN))
-
-//! Add a handler for a method with 1 enum type argument
-#define FLEXT_CADDMETHOD_E(CL,IX,M_TAG,M_FUN) \
-\
-AddMethod(ClMeths(CL),IX,flext::MakeSymbol(M_TAG),(methfun)(FLEXT_CALL_PRE(M_FUN)),a_int,a_null)
-
-//! Add a handler for a method with 1 argument
-#define FLEXT_CADDMETHOD_1(CL,IX,M_TAG,M_FUN,TP1) \
-\
-AddMethod(ClMeths(CL),IX,flext::MakeSymbol(M_TAG),(methfun)(FLEXT_CALL_PRE(M_FUN)),FLEXTARG(TP1),a_null)
-
-//! Add a handler for a method with 2 arguments
-#define FLEXT_CADDMETHOD_2(CL,IX,M_TAG,M_FUN,TP1,TP2) \
-\
-AddMethod(ClMeths(CL),IX,flext::MakeSymbol(M_TAG),(methfun)(FLEXT_CALL_PRE(M_FUN)),FLEXTARG(TP1),FLEXTARG(TP2),a_null)
-
-//! Add a handler for a method with 3 arguments
-#define FLEXT_CADDMETHOD_3(CL,IX,M_TAG,M_FUN,TP1,TP2,TP3) \
-\
-AddMethod(ClMeths(CL),IX,flext::MakeSymbol(M_TAG),(methfun)(FLEXT_CALL_PRE(M_FUN)),FLEXTARG(TP1),FLEXTARG(TP2),FLEXTARG(TP3),a_null)
-
-//! Add a handler for a method with 4 arguments
-#define FLEXT_CADDMETHOD_4(CL,IX,M_TAG,M_FUN,TP1,TP2,TP3,TP4) \
-\
-AddMethod(ClMeths(CL),IX,flext::MakeSymbol(M_TAG),(methfun)(FLEXT_CALL_PRE(M_FUN)),FLEXTARG(TP1),FLEXTARG(TP2),FLEXTARG(TP3),FLEXTARG(TP4),a_null)
-
-//! Add a handler for a method with 5 arguments
-#define FLEXT_CADDMETHOD_5(CL,IX,M_TAG,M_FUN,TP1,TP2,TP3,TP4,TP5) \
-\
-AddMethod(ClMeths(CL),IX,flext::MakeSymbol(M_TAG),(methfun)(FLEXT_CALL_PRE(M_FUN)),FLEXTARG(TP1),FLEXTARG(TP2),FLEXTARG(TP3),FLEXTARG(TP4),FLEXTARG(TP5),a_null)
-
-
-// Shortcuts
-
-//! Add a handler for a method with a boolean argument
-#define FLEXT_CADDMETHOD_B(CL,IX,M_TAG,M_FUN) \
-\
-FLEXT_CADDMETHOD_1(CL,IX,flext::MakeSymbol(M_TAG),M_FUN,bool)
-
-//! Add a handler for a method with 1 float argument
-#define FLEXT_CADDMETHOD_F(CL,IX,M_TAG,M_FUN) \
-\
-FLEXT_CADDMETHOD_1(CL,IX,flext::MakeSymbol(M_TAG),M_FUN,float)
-
-//! Add a handler for a method with 2 float arguments
-#define FLEXT_CADDMETHOD_FF(CL,IX,M_TAG,M_FUN) \
-\
-FLEXT_CADDMETHOD_2(CL,IX,flext::MakeSymbol(M_TAG),M_FUN,float,float)
-
-//! Add a handler for a method with 3 float arguments
-#define FLEXT_CADDMETHOD_FFF(CL,IX,M_TAG,M_FUN) \
-\
-FLEXT_CADDMETHOD_3(CL,IX,flext::MakeSymbol(M_TAG),M_FUN,float,float,float)
-
-//! Add a handler for a method with 1 integer argument
-#define FLEXT_CADDMETHOD_I(CL,IX,M_TAG,M_FUN) \
-\
-FLEXT_CADDMETHOD_1(CL,IX,flext::MakeSymbol(M_TAG),M_FUN,int)
-
-//! Add a handler for a method with 2 integer arguments
-#define FLEXT_CADDMETHOD_II(CL,IX,M_TAG,M_FUN) \
-\
-FLEXT_CADDMETHOD_2(CL,IX,flext::MakeSymbol(M_TAG),M_FUN,int,int)
-
-//! Add a handler for a method with 3 integer arguments
-#define FLEXT_CADDMETHOD_III(CL,IX,M_TAG,M_FUN) \
-\
-FLEXT_CADDMETHOD_3(CL,IX,flext::MakeSymbol(M_TAG),M_FUN,int,int,int)
-
-//! @} FLEXT_D_CADDMETHOD
-
-
-/*! \defgroup FLEXT_D_ADDMETHOD Add flext methods
- \ingroup FLEXT_D_METHOD
- \note These can only be used at object construction time
- \note (in constructor or in Init() function before call to parent's Init())
- @{
-*/
-
-//! Set timer callback
-#define FLEXT_ADDTIMER(TMR,M_FUN) \
-\
-TMR.SetCallback(*this,FLEXT_CALL_PRE(M_FUN))
-
-//! Enable list element distribution over inlets (if no better handler found)
-#define FLEXT_ADDDIST() \
-\
-SetDist(true)
-
-//! Add a method handler for bang
-#define FLEXT_ADDBANG(IX,M_FUN) \
-\
-AddMethod(IX,"bang",FLEXT_CALL_PRE(M_FUN))
-
-//! Add a handler for a method with either no, list or anything arguments
-#define FLEXT_ADDMETHOD(IX,M_FUN) \
-AddMethod(IX,FLEXT_CALL_PRE(M_FUN))
-
-/*! \brief Add a handler for a method with a (variable argument) list
- \deprecated This definition obscures that _ indicates the usage of a message tag - use FLEXT_ADDMETHOD instead
- \note This is already covered by FLEXT_ADDMETHOD, but here for the sake of clarity
-*/
-#define FLEXT_ADDMETHOD_V(IX,M_FUN) \
-\
-AddMethod(IX,FLEXT_CALL_PRE(M_FUN))
-
-/*! \brief Add a handler for a method with an anything argument
- \deprecated This definition obscures that _ indicates the usage of a message tag - use FLEXT_ADDMETHOD instead
- \note This is already covered by FLEXT_ADDMETHOD, but here for the sake of clarity
-*/
-#define FLEXT_ADDMETHOD_A(IX,M_FUN) \
-\
-AddMethod(IX,FLEXT_CALL_PRE(M_FUN))
-
-//! Add a a handler for a tagged method with implicit arguments
-#define FLEXT_ADDMETHOD_(IX,M_TAG,M_FUN) \
-\
-AddMethod(IX,flext::MakeSymbol(M_TAG),FLEXT_CALL_PRE(M_FUN))
-
-//! Add a handler for a method with 1 enum type argument
-#define FLEXT_ADDMETHOD_E(IX,M_TAG,M_FUN) \
-\
-AddMethod(ThMeths(),IX,flext::MakeSymbol(M_TAG),(methfun)(FLEXT_CALL_PRE(M_FUN)),a_int,a_null)
-
-//! Add a handler for a method with 1 argument
-#define FLEXT_ADDMETHOD_1(IX,M_TAG,M_FUN,TP1) \
-\
-AddMethod(ThMeths(),IX,flext::MakeSymbol(M_TAG),(methfun)(FLEXT_CALL_PRE(M_FUN)),FLEXTARG(TP1),a_null)
-
-//! Add a handler for a method with 2 arguments
-#define FLEXT_ADDMETHOD_2(IX,M_TAG,M_FUN,TP1,TP2) \
-\
-AddMethod(ThMeths(),IX,flext::MakeSymbol(M_TAG),(methfun)(FLEXT_CALL_PRE(M_FUN)),FLEXTARG(TP1),FLEXTARG(TP2),a_null)
-
-//! Add a handler for a method with 3 arguments
-#define FLEXT_ADDMETHOD_3(IX,M_TAG,M_FUN,TP1,TP2,TP3) \
-\
-AddMethod(ThMeths(),IX,flext::MakeSymbol(M_TAG),(methfun)(FLEXT_CALL_PRE(M_FUN)),FLEXTARG(TP1),FLEXTARG(TP2),FLEXTARG(TP3),a_null)
-
-//! Add a handler for a method with 4 arguments
-#define FLEXT_ADDMETHOD_4(IX,M_TAG,M_FUN,TP1,TP2,TP3,TP4) \
-\
-AddMethod(ThMeths(),IX,flext::MakeSymbol(M_TAG),(methfun)(FLEXT_CALL_PRE(M_FUN)),FLEXTARG(TP1),FLEXTARG(TP2),FLEXTARG(TP3),FLEXTARG(TP4),a_null)
-
-//! Add a handler for a method with 5 arguments
-#define FLEXT_ADDMETHOD_5(IX,M_TAG,M_FUN,TP1,TP2,TP3,TP4,TP5) \
-\
-AddMethod(ThMeths(),IX,flext::MakeSymbol(M_TAG),(methfun)(FLEXT_CALL_PRE(M_FUN)),FLEXTARG(TP1),FLEXTARG(TP2),FLEXTARG(TP3),FLEXTARG(TP4),FLEXTARG(TP5),a_null)
-
-
-// Shortcuts
-
-//! Add a handler for a method with a boolean argument
-#define FLEXT_ADDMETHOD_B(IX,M_TAG,M_FUN) \
-\
-FLEXT_ADDMETHOD_1(IX,flext::MakeSymbol(M_TAG),M_FUN,bool)
-
-//! Add a handler for a method with 1 float argument
-#define FLEXT_ADDMETHOD_F(IX,M_TAG,M_FUN) \
-\
-FLEXT_ADDMETHOD_1(IX,flext::MakeSymbol(M_TAG),M_FUN,float)
-
-//! Add a handler for a method with 2 float arguments
-#define FLEXT_ADDMETHOD_FF(IX,M_TAG,M_FUN) \
-\
-FLEXT_ADDMETHOD_2(IX,flext::MakeSymbol(M_TAG),M_FUN,float,float)
-
-//! Add a handler for a method with 3 float arguments
-#define FLEXT_ADDMETHOD_FFF(IX,M_TAG,M_FUN) \
-\
-FLEXT_ADDMETHOD_3(IX,flext::MakeSymbol(M_TAG),M_FUN,float,float,float)
-
-//! Add a handler for a method with 1 integer argument
-#define FLEXT_ADDMETHOD_I(IX,M_TAG,M_FUN) \
-\
-FLEXT_ADDMETHOD_1(IX,flext::MakeSymbol(M_TAG),M_FUN,int)
-
-//! Add a handler for a method with 2 integer arguments
-#define FLEXT_ADDMETHOD_II(IX,M_TAG,M_FUN) \
-\
-FLEXT_ADDMETHOD_2(IX,flext::MakeSymbol(M_TAG),M_FUN,int,int)
-
-//! Add a handler for a method with 3 integer arguments
-#define FLEXT_ADDMETHOD_III(IX,M_TAG,M_FUN) \
-\
-FLEXT_ADDMETHOD_3(IX,flext::MakeSymbol(M_TAG),M_FUN,int,int,int)
-
-
-//! @} FLEXT_D_ADDMETHOD
-
-#endif
diff --git a/externals/grill/flext/source/fldefs_methbind.h b/externals/grill/flext/source/fldefs_methbind.h
deleted file mode 100644
index 46dd8186..00000000
--- a/externals/grill/flext/source/fldefs_methbind.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
-
-flext - C++ layer for Max/MSP and pd (pure data) externals
-
-Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-/*! \file fldefs_methbind.h
- \brief This file contains all #defines for actual usage
-
-*/
-
-#ifndef __FLEXT_DEFS_METHBIND_H
-#define __FLEXT_DEFS_METHBIND_H
-
-
-/*! \defgroup FLEXT_D_BINDMETHOD Bind flext methods to symbols
- @{
-*/
-
-/*! \brief Bind a handler for a method with an anything argument to a symbol
-*/
-#define FLEXT_BINDMETHOD(SYM,M_FUN,DATA) \
-\
-BindMethod(SYM,FLEXT_CALL_PRE(M_FUN),DATA)
-
-/*! \brief Unbind any handler for a method from a symbol
- \note Memory associated to the DATA parameter of FLEXT_BINDMETHOD will *not* be freed here.
-*/
-#define FLEXT_UNBINDMETHOD(SYM) \
-\
-UnbindMethod(SYM)
-
-/*! \brief Unbind any handler for a method from a symbol and return user data pointer by DATA
- \note Memory associated to the DATA parameter of FLEXT_BINDMETHOD will *not* be freed here.
-*/
-#define FLEXT_UNBINDMETHOD_X(SYM,DATA) \
-\
-UnbindMethod(SYM,&DATA)
-
-
-//! @} FLEXT_D_BINDMETHOD
-
-
-#endif
diff --git a/externals/grill/flext/source/fldefs_methcall.h b/externals/grill/flext/source/fldefs_methcall.h
deleted file mode 100644
index 1602faf0..00000000
--- a/externals/grill/flext/source/fldefs_methcall.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
-
-flext - C++ layer for Max/MSP and pd (pure data) externals
-
-Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-/*! \file fldefs_methbind.h
- \brief This file contains all #defines for actual usage
-
-*/
-
-#ifndef __FLEXT_DEFS_METHCALL_H
-#define __FLEXT_DEFS_METHCALL_H
-
-
-/*! \defgroup FLEXT_D_CALLMETHOD Call flext methods manually
- \ingroup FLEXT_D_METHOD
- @{
-*/
-
-//! Call a (already defined) method with no arguments
-#define FLEXT_CALLMETHOD(M_FUN) \
-\
-FLEXT_CALL_PRE(M_FUN)(this)
-
-//! Call a (already defined) method with variable list arguments
-#define FLEXT_CALLMETHOD_V(M_FUN,ARGC,ARGV) \
-\
-FLEXT_CALL_PRE(M_FUN)(this,ARGC,(t_atom *)(ARGV))
-
-//! Call a (already defined) method with anything arguments
-#define FLEXT_CALLMETHOD_A(M_FUN,HDR,ARGC,ARGV) \
-\
-FLEXT_CALL_PRE(M_FUN)(this,(t_symbol *)(HDR),ARGC,(t_atom *)(ARGV))
-
-//! Call a (already defined) method with a data package (void *)
-#define FLEXT_CALLMETHOD_X(M_FUN,DATA) \
-\
-FLEXT_CALL_PRE(M_FUN)(this,DATA)
-
-//! Call a (already defined) method with 1 enum type argument
-#define FLEXT_CALLMETHOD_E(M_FUN,ARG) \
-\
-FLEXT_CALL_PRE(M_FUN)(this,ARG)
-
-//! Call a (already defined) method with 1 argument
-#define FLEXT_CALLMETHOD_1(M_FUN,ARG) \
-\
-FLEXT_CALL_PRE(M_FUN)(this,ARG)
-
-//! Call a (already defined) method with 2 arguments
-#define FLEXT_CALLMETHOD_2(M_FUN,ARG1,ARG2) \
-\
-FLEXT_CALL_PRE(M_FUN)(this,ARG1,ARG2)
-
-//! Call a (already defined) method with 3 arguments
-#define FLEXT_CALLMETHOD_3(M_FUN,ARG1,ARG2,ARG3) \
-\
-FLEXT_CALL_PRE(M_FUN)(this,ARG1,ARG2,ARG3)
-
-//! Call a (already defined) method with 4 arguments
-#define FLEXT_CALLMETHOD_4(M_FUN,ARG1,ARG2,ARG3,ARG4) \
-\
-FLEXT_CALL_PRE(M_FUN)(this,ARG1,ARG2,ARG3,ARG4)
-
-//! Call a (already defined) method with 5 arguments
-#define FLEXT_CALLMETHOD_5(M_FUN,ARG1,ARG2,ARG3,ARG4,ARG5) \
-\
-FLEXT_CALL_PRE(M_FUN)(this,ARG1,ARG2,ARG3,ARG4,ARG5)
-
-//! @} FLEXT_D_CALLMETHOD
-
-
-#endif
diff --git a/externals/grill/flext/source/fldefs_methcb.h b/externals/grill/flext/source/fldefs_methcb.h
deleted file mode 100644
index c1112b85..00000000
--- a/externals/grill/flext/source/fldefs_methcb.h
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
-
-flext - C++ layer for Max/MSP and pd (pure data) externals
-
-Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-/*! \file fldefs_methcb.h
- \brief This file contains all #defines for actual usage
-
-*/
-
-#ifndef __FLEXT_DEFS_METHCB_H
-#define __FLEXT_DEFS_METHCB_H
-
-
-/*! \defgroup FLEXT_D_CALLBACK Declare callbacks for class methods
- \ingroup FLEXT_D_METHOD
- @{
-*/
-
-//! Set up a method callback with no arguments
-#define FLEXT_CALLBACK(M_FUN) \
-static bool FLEXT_CALL_PRE(M_FUN)(flext_base *c) \
-{ FLEXT_CAST<thisType *>(c)->M_FUN(); return true; }
-
-//! Set up a method callback for an anything argument
-#define FLEXT_CALLBACK_A(M_FUN) \
-static bool FLEXT_CALL_PRE(M_FUN)(flext_base *c,t_symbol *s,int argc,t_atom *argv) \
-{ FLEXT_CAST<thisType *>(c)->M_FUN(s,argc,argv); return true; }
-
-//! Set up a method callback for a variable argument list
-#define FLEXT_CALLBACK_V(M_FUN) \
-static bool FLEXT_CALL_PRE(M_FUN)(flext_base *c,int argc,t_atom *argv) \
-{ FLEXT_CAST<thisType *>(c)->M_FUN(argc,argv); return true; }
-
-//! Set up a method callback for a data package (void *) argument
-#define FLEXT_CALLBACK_X(M_FUN) \
-static bool FLEXT_CALL_PRE(M_FUN)(flext_base *c,void *data) \
-{ FLEXT_CAST<thisType *>(c)->M_FUN(data); return true; }
-
-//! Set up a method callback for an anything argument and a data package (e.g. for symbol-bound methods).
-#define FLEXT_CALLBACK_AX(M_FUN) \
-static bool FLEXT_CALL_PRE(M_FUN)(flext_base *c,t_symbol *s,int argc,t_atom *argv,void *data) \
-{ FLEXT_CAST<thisType *>(c)->M_FUN(s,argc,argv,data); return true; }
-
-//! Set up a timer callback
-#define FLEXT_CALLBACK_T(M_FUN) \
-\
-FLEXT_CALLBACK_X(M_FUN)
-
-//! Set up a method callback for a boolean argument
-#define FLEXT_CALLBACK_B(M_FUN) \
-static bool FLEXT_CALL_PRE(M_FUN)(flext_base *c,int &arg1) \
-{ FLEXT_CAST<thisType *>(c)->M_FUN(arg1 != 0); return true; }
-
-//! Set up a method callback for 1 argument
-#define FLEXT_CALLBACK_1(M_FUN,TP1) \
-static bool FLEXT_CALL_PRE(M_FUN)(flext_base *c,TP1 &arg1) \
-{ FLEXT_CAST<thisType *>(c)->M_FUN(arg1); return true; }
-
-//! Set up a method callback for 2 arguments
-#define FLEXT_CALLBACK_2(M_FUN,TP1,TP2) \
-static bool FLEXT_CALL_PRE(M_FUN)(flext_base *c,TP1 &arg1,TP2 &arg2) \
-{ FLEXT_CAST<thisType *>(c)->M_FUN(arg1,arg2); return true; }
-
-//! Set up a method callback for 3 arguments
-#define FLEXT_CALLBACK_3(M_FUN,TP1,TP2,TP3) \
-static bool FLEXT_CALL_PRE(M_FUN)(flext_base *c,TP1 &arg1,TP2 &arg2,TP3 &arg3) \
-{ FLEXT_CAST<thisType *>(c)->M_FUN(arg1,arg2,arg3); return true; }
-
-//! Set up a method callback for 4 arguments
-#define FLEXT_CALLBACK_4(M_FUN,TP1,TP2,TP3,TP4) \
-static bool FLEXT_CALL_PRE(M_FUN)(flext_base *c,TP1 &arg1,TP2 &arg2,TP3 &arg3,TP4 &arg4) \
-{ FLEXT_CAST<thisType *>(c)->M_FUN(arg1,arg2,arg3,arg4); return true; }
-
-//! Set up a method callback for 5 arguments
-#define FLEXT_CALLBACK_5(M_FUN,TP1,TP2,TP3,TP4,TP5) \
-static bool FLEXT_CALL_PRE(M_FUN)(flext_base *c,TP1 &arg1,TP2 &arg2,TP3 &arg3,TP4 &arg4,TP5 &arg5) \
-{ FLEXT_CAST<thisType *>(c)->M_FUN(arg1,arg2,arg3,arg4,arg5); return true; }
-
-
-// Shortcuts
-
-//! Set up a method callback for 1 float argument
-#define FLEXT_CALLBACK_F(M_FUN) \
-\
-FLEXT_CALLBACK_1(M_FUN,float)
-
-//! Set up a method callback for 2 float arguments
-#define FLEXT_CALLBACK_FF(M_FUN) \
-\
-FLEXT_CALLBACK_2(M_FUN,float,float)
-
-//! Set up a method callback for 3 float arguments
-#define FLEXT_CALLBACK_FFF(M_FUN) \
-\
-FLEXT_CALLBACK_3(M_FUN,float,float,float)
-
-//! Set up a method callback for 1 integer argument
-#define FLEXT_CALLBACK_I(M_FUN) \
-\
-FLEXT_CALLBACK_1(M_FUN,int)
-
-//! Set up a method callback for 2 integer arguments
-#define FLEXT_CALLBACK_II(M_FUN) \
-\
-FLEXT_CALLBACK_2(M_FUN,int,int)
-
-//! Set up a method callback for 3 integer arguments
-#define FLEXT_CALLBACK_III(M_FUN) \
-\
-FLEXT_CALLBACK_3(M_FUN,int,int,int)
-
-//! Set up a method callback for 1 symbol argument
-#define FLEXT_CALLBACK_S(M_FUN) \
-\
-FLEXT_CALLBACK_1(M_FUN,t_symptr)
-
-
-//! \deprecated
-#define FLEXT_CALLBACK_G FLEXT_CALLBACK_V
-
-//! @} FLEXT_D_CALLBACK
-
-#endif
diff --git a/externals/grill/flext/source/fldefs_meththr.h b/externals/grill/flext/source/fldefs_meththr.h
deleted file mode 100644
index f68aa507..00000000
--- a/externals/grill/flext/source/fldefs_meththr.h
+++ /dev/null
@@ -1,273 +0,0 @@
-/*
-
-flext - C++ layer for Max/MSP and pd (pure data) externals
-
-Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-/*! \file fldefs_meththr.h
- \brief This file contains all #defines for actual usage
-
-*/
-
-#ifndef __FLEXT_DEFS_METHTHR_H
-#define __FLEXT_DEFS_METHTHR_H
-
-
-#ifdef FLEXT_THREADS
-
-
-/*! \defgroup FLEXT_D_THREAD Declare threaded method callbacks
- @{
-*/
-
-//! Set up a threaded method callback with no arguments
-#define FLEXT_THREAD(M_FUN) \
-static bool FLEXT_CALL_PRE(M_FUN)(flext_base *c) { \
- thr_params *p = new thr_params; \
- return c->StartThread(FLEXT_THR_PRE(M_FUN),p,#M_FUN); \
-} \
-static void FLEXT_THR_PRE(M_FUN)(thr_params *p) { \
- thisType *th = FLEXT_CAST<thisType *>(p->cl); \
- bool ok = th->PushThread(); \
- delete p; \
- if(ok) { \
- th->M_FUN(); \
- th->PopThread(); \
- } \
-}
-
-//! Set up a threaded method callback for an anything argument
-#define FLEXT_THREAD_A(M_FUN) \
-static bool FLEXT_CALL_PRE(M_FUN)(flext_base *c,t_symbol *s,int argc,t_atom *argv) { \
- thr_params *p = new thr_params; p->set_any(s,argc,argv); \
- return c->StartThread(FLEXT_THR_PRE(M_FUN),p,#M_FUN); \
-} \
-static void FLEXT_THR_PRE(M_FUN)(thr_params *p) { \
- thisType *th = FLEXT_CAST<thisType *>(p->cl); \
- bool ok = th->PushThread(); \
- AtomAnything *args = p->var[0]._any; \
- delete p; \
- if(ok) { \
- th->M_FUN(args->Header(),args->Count(),args->Atoms()); \
- th->PopThread(); \
- } \
- delete args; \
-}
-
-//! Set up a threaded method callback for a variable argument list
-#define FLEXT_THREAD_V(M_FUN) \
-static bool FLEXT_CALL_PRE(M_FUN)(flext_base *c,int argc,t_atom *argv) { \
- thr_params *p = new thr_params; p->set_list(argc,argv); \
- return c->StartThread(FLEXT_THR_PRE(M_FUN),p,#M_FUN); \
-} \
-static void FLEXT_THR_PRE(M_FUN)(thr_params *p) { \
- thisType *th = FLEXT_CAST<thisType *>(p->cl); \
- bool ok = th->PushThread(); \
- AtomList *args = p->var[0]._list; \
- delete p; \
- if(ok) { \
- th->M_FUN(args->Count(),args->Atoms()); \
- th->PopThread(); \
- } \
- delete args; \
-}
-
-/*! \brief Set up a threaded method callback for an arbitrary data struct.
- \note Data is pure... no destructor is called upon delete
-*/
-#define FLEXT_THREAD_X(M_FUN) \
-static bool FLEXT_CALL_PRE(M_FUN)(flext_base *c,void *data) { \
- thr_params *p = new thr_params; p->var[0]._ext = data; \
- return c->StartThread(FLEXT_THR_PRE(M_FUN),p,#M_FUN); \
-} \
-static void FLEXT_THR_PRE(M_FUN)(thr_params *p) { \
- thisType *th = FLEXT_CAST<thisType *>(p->cl); \
- bool ok = th->PushThread(); \
- void *data = p->var[0]._ext; \
- delete p; \
- if(ok) { \
- th->M_FUN(data); \
- th->PopThread(); \
- } \
- /* delete (char *)data; */ \
-}
-
-//! Set up a threaded method callback for a boolean argument
-#define FLEXT_THREAD_B(M_FUN) \
-static bool FLEXT_CALL_PRE(M_FUN)(flext_base *c,int &arg1) { \
- thr_params *p = new thr_params; p->var[0]._bool = arg1 != 0; \
- return c->StartThread(FLEXT_THR_PRE(M_FUN),p,#M_FUN); \
-} \
-static void FLEXT_THR_PRE(M_FUN)(thr_params *p) { \
- thisType *th = FLEXT_CAST<thisType *>(p->cl); \
- bool ok = th->PushThread(); \
- bool b = p->var[0]._bool; \
- delete p; \
- if(ok) { \
- th->M_FUN(b); \
- th->PopThread(); \
- } \
-}
-
-//! Set up a threaded method callback for 1 argument
-#define FLEXT_THREAD_1(M_FUN,TP1) \
-static bool FLEXT_CALL_PRE(M_FUN)(flext_base *c,TP1 &arg1) { \
- thr_params *p = new thr_params(1); \
- p->var[0]._ ## TP1 = arg1; \
- return c->StartThread(FLEXT_THR_PRE(M_FUN),p,#M_FUN); \
-} \
-static void FLEXT_THR_PRE(M_FUN)(thr_params *p) { \
- thisType *th = FLEXT_CAST<thisType *>(p->cl); \
- bool ok = th->PushThread(); \
- const TP1 v1 = p->var[0]._ ## TP1; \
- delete p; \
- if(ok) { \
- th->M_FUN(v1); \
- th->PopThread(); \
- } \
-}
-
-//! Set up a threaded method callback for 2 arguments
-#define FLEXT_THREAD_2(M_FUN,TP1,TP2) \
-static bool FLEXT_CALL_PRE(M_FUN)(flext_base *c,TP1 &arg1,TP2 &arg2) { \
- thr_params *p = new thr_params(2); \
- p->var[0]._ ## TP1 = arg1; \
- p->var[1]._ ## TP2 = arg2; \
- return c->StartThread(FLEXT_THR_PRE(M_FUN),p,#M_FUN); \
-} \
-static void FLEXT_THR_PRE(M_FUN)(thr_params *p) { \
- thisType *th = FLEXT_CAST<thisType *>(p->cl); \
- bool ok = th->PushThread(); \
- const TP1 v1 = p->var[0]._ ## TP1; \
- const TP1 v2 = p->var[1]._ ## TP2; \
- delete p; \
- if(ok) { \
- th->M_FUN(v1,v2); \
- th->PopThread(); \
- } \
-}
-
-//! Set up a threaded method callback for 3 arguments
-#define FLEXT_THREAD_3(M_FUN,TP1,TP2,TP3) \
-static bool FLEXT_CALL_PRE(M_FUN)(flext_base *c,TP1 &arg1,TP2 &arg2,TP3 &arg3) { \
- thr_params *p = new thr_params(3); \
- p->var[0]._ ## TP1 = arg1; \
- p->var[1]._ ## TP2 = arg2; \
- p->var[2]._ ## TP3 = arg3; \
- return c->StartThread(FLEXT_THR_PRE(M_FUN),p,#M_FUN); \
-} \
-static void FLEXT_THR_PRE(M_FUN)(thr_params *p) { \
- thisType *th = FLEXT_CAST<thisType *>(p->cl); \
- bool ok = th->PushThread(); \
- const TP1 v1 = p->var[0]._ ## TP1; \
- const TP2 v2 = p->var[1]._ ## TP2; \
- const TP3 v3 = p->var[2]._ ## TP3; \
- delete p; \
- if(ok) { \
- th->M_FUN(v1,v2,v3); \
- th->PopThread(); \
- } \
-}
-
-//! Set up a threaded method callback for 4 arguments
-#define FLEXT_THREAD_4(M_FUN,TP1,TP2,TP3,TP4) \
-static bool FLEXT_CALL_PRE(M_FUN)(flext_base *c,TP1 &arg1,TP2 &arg2,TP3 &arg3,TP4 &arg4) { \
- thr_params *p = new thr_params(4); \
- p->var[0]._ ## TP1 = arg1; \
- p->var[1]._ ## TP2 = arg2; \
- p->var[2]._ ## TP3 = arg3; \
- p->var[3]._ ## TP4 = arg4; \
- return c->StartThread(FLEXT_THR_PRE(M_FUN),p,#M_FUN); \
-} \
-static void FLEXT_THR_PRE(M_FUN)(thr_params *p) { \
- thisType *th = FLEXT_CAST<thisType *>(p->cl); \
- bool ok = th->PushThread(); \
- const TP1 v1 = p->var[0]._ ## TP1; \
- const TP2 v2 = p->var[1]._ ## TP2; \
- const TP3 v3 = p->var[2]._ ## TP3; \
- const TP4 v4 = p->var[3]._ ## TP4; \
- delete p; \
- if(ok) { \
- th->M_FUN(v1,v2,v3,v4); \
- th->PopThread(); \
- } \
-}
-
-//! Set up a threaded method callback for 5 arguments
-#define FLEXT_THREAD_5(M_FUN,TP1,TP2,TP3,TP4,TP5) \
-static bool FLEXT_CALL_PRE(M_FUN)(flext_base *c,TP1 &arg1,TP2 &arg2,TP3 &arg3,TP4 &arg4,TP5 &arg5) { \
- thr_params *p = new thr_params(5); \
- p->var[0]._ ## TP1 = arg1; \
- p->var[1]._ ## TP2 = arg2; \
- p->var[2]._ ## TP3 = arg3; \
- p->var[3]._ ## TP4 = arg4; \
- p->var[4]._ ## TP5 = arg5; \
- return c->StartThread(FLEXT_THR_PRE(M_FUN),p,#M_FUN); \
-} \
-static void FLEXT_THR_PRE(M_FUN)(thr_params *p) { \
- thisType *th = FLEXT_CAST<thisType *>(p->cl); \
- bool ok = th->PushThread(); \
- const TP1 v1 = p->var[0]._ ## TP1; \
- const TP2 v2 = p->var[1]._ ## TP2; \
- const TP3 v3 = p->var[2]._ ## TP3; \
- const TP4 v4 = p->var[3]._ ## TP4; \
- const TP5 v5 = p->var[4]._ ## TP5; \
- delete p; \
- if(ok) { \
- th->M_FUN(v1,v2,v3,v4,v5); \
- th->PopThread(); \
- } \
-}
-
-
-//! Shortcuts
-
-//! Set up a threaded method callback for 1 float argument
-#define FLEXT_THREAD_F(M_FUN) \
-\
-FLEXT_THREAD_1(M_FUN,float)
-
-//! Set up a threaded method callback for 2 float arguments
-#define FLEXT_THREAD_FF(M_FUN) \
-\
-FLEXT_THREAD_2(M_FUN,float,float)
-
-//! Set up a threaded method callback for 3 float arguments
-#define FLEXT_THREAD_FFF(M_FUN) \
-\
-FLEXT_THREAD_3(M_FUN,float,float,float)
-
-//! Set up a threaded method callback for 1 integer argument
-#define FLEXT_THREAD_I(M_FUN) \
-\
-FLEXT_THREAD_1(M_FUN,int)
-
-//! Set up a threaded method callback for 2 integer arguments
-#define FLEXT_THREAD_II(M_FUN) \
-\
-FLEXT_THREAD_2(M_FUN,int,int)
-
-//! Set up a threaded method callback for 3 integer arguments
-#define FLEXT_THREAD_III(M_FUN) \
-\
-FLEXT_THREAD_3(M_FUN,int,int,int)
-
-//! Set up a threaded method callback for 1 symbol argument
-#define FLEXT_THREAD_S(M_FUN) \
-\
-FLEXT_THREAD_1(M_FUN,t_symptr)
-
-// deprecated
-#define FLEXT_THREAD_G FLEXT_THREAD_V
-
-//! @} FLEXT_D_THREAD
-
-
-#endif // FLEXT_THREADS
-
-
-#endif
diff --git a/externals/grill/flext/source/fldefs_setup.h b/externals/grill/flext/source/fldefs_setup.h
deleted file mode 100644
index 17455b39..00000000
--- a/externals/grill/flext/source/fldefs_setup.h
+++ /dev/null
@@ -1,337 +0,0 @@
-/*
-
-flext - C++ layer for Max/MSP and pd (pure data) externals
-
-Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-/*! \file fldefs_setup.h
- \brief This file contains all #defines for actual usage
-
-*/
-
-#ifndef __FLEXT_DEFS_SETUP_H
-#define __FLEXT_DEFS_SETUP_H
-
-// ====================================================================================
-
-/*! \defgroup FLEXT_D_INSTANCE Class instantiation
- \note For stand-alone externals (not part of a library) the name of your class
- \note is of importance! It must be the same as the external (excluded an eventual ~ (tilde))
-
- There are additional parameters that can be included in the NAME field of FLEXT_NEW etc.:
-
- - There may be additional names (aliases) appened, separated by spaces
- - There may be a help path prepended, separated by a colon
- - This help path doesn't work for Max/MSP. There you'll have to use a object mapping file (Max/MSP version >= 4.2)
-
- @{
-*/
-
-
-/*! \defgroup FLEXT_D_NEW Stand-alone class instantiation
- Makes an actual instance of a stand-alone class.
-*/
-
-/*! \defgroup FLEXT_D_NEW_DSP Dsp class instantiation
- Makes an actual instance of a dsp (aka "tilde") class (with signal processing).
-*/
-
-/*! \defgroup FLEXT_D_LIB Library class instantiation
- Makes an actual instance of a class which is part of an object library (and not stand-alone).
-*/
-
-/*! \defgroup FLEXT_D_LIB_DSP Dsp library class instantiation
- Makes an actual instance of a dsp (aka "tilde") class with signal processing
- which is part of an object library (and not stand-alone).
-*/
-
-// NO ARGUMENTS
-// ----------------------------------------
-
-/*! \brief Implementation of a flext class with no arguments
- \ingroup FLEXT_D_NEW
- \param NAME the object's actual name(s) as a string (like "*", "trigger", "noise~", etc.)
- \param NEW_CLASS the object's C++ class name
-*/
-#define FLEXT_NEW(NAME,NEW_CLASS) \
-\
-REAL_NEW(NAME,NEW_CLASS,0,0,0)
-
-/*! \brief Implementation of a flext dsp class with no arguments
- \ingroup FLEXT_D_NEW_DSP
-*/
-#define FLEXT_NEW_DSP(NAME,NEW_CLASS) \
-\
-REAL_NEW(NAME,NEW_CLASS,1,0,0)
-
-/*! \brief Implementation of a flext dsp class with no arguments and no dsp inlet
- \ingroup FLEXT_D_NEW_DSP
-*/
-#define FLEXT_NEW_DSP0(NAME,NEW_CLASS) \
-\
-REAL_NEW(NAME,NEW_CLASS,1,1,0)
-
-/*! \brief Implementation of a flext class (part of a library) with no arguments
- \ingroup FLEXT_D_LIB
-*/
-#define FLEXT_LIB(NAME,NEW_CLASS) \
-\
-REAL_NEW(NAME,NEW_CLASS,0,0,1)
-
-/*! \brief Implementation of a flext dsp class (part of a library) with no arguments
- \ingroup FLEXT_D_LIB_DSP
-*/
-#define FLEXT_LIB_DSP(NAME,NEW_CLASS) \
-\
-REAL_NEW(NAME,NEW_CLASS,1,0,1)
-
-/*! \brief Implementation of a flext dsp class (part of a library) with no arguments and no dsp inlet
- \ingroup FLEXT_D_LIB_DSP
-*/
-#define FLEXT_LIB_DSP0(NAME,NEW_CLASS) \
-\
-REAL_NEW(NAME,NEW_CLASS,1,1,1)
-
-
-// VARIABLE ARGUMENT LIST
-// ----------------------------------------
-
-/*! \brief Implementation of a flext class with a variable argument list
- \ingroup FLEXT_D_NEW
-*/
-#define FLEXT_NEW_V(NAME,NEW_CLASS) \
-\
-REAL_NEW_V(NAME,NEW_CLASS,0,0,0)
-
-/*! \brief Implementation of a flext dsp class with a variable argument list
- \ingroup FLEXT_D_NEW_DSP
-*/
-#define FLEXT_NEW_DSP_V(NAME,NEW_CLASS) \
-\
-REAL_NEW_V(NAME,NEW_CLASS,1,0,0)
-
-/*! \brief Implementation of a flext dsp class with a variable argument list and no dsp inlet
- \ingroup FLEXT_D_NEW_DSP
-*/
-#define FLEXT_NEW_DSP0_V(NAME,NEW_CLASS) \
-\
-REAL_NEW_V(NAME,NEW_CLASS,1,1,0)
-
-/*! \brief Implementation of a flext class (part of a library) with a variable argument list
- \ingroup FLEXT_D_LIB
-*/
-#define FLEXT_LIB_V(NAME,NEW_CLASS) \
-\
-REAL_NEW_V(NAME,NEW_CLASS, 0,0,1)
-
-/*! \brief Implementation of a flext dsp class (part of a library) with a variable argument list
- \ingroup FLEXT_D_LIB_DSP
-*/
-#define FLEXT_LIB_DSP_V(NAME,NEW_CLASS) \
-\
-REAL_NEW_V(NAME,NEW_CLASS, 1,0,1)
-
-/*! \brief Implementation of a flext dsp class (part of a library) with a variable argument list and no dsp inlet
- \ingroup FLEXT_D_LIB_DSP
-*/
-#define FLEXT_LIB_DSP0_V(NAME,NEW_CLASS) \
-\
-REAL_NEW_V(NAME,NEW_CLASS, 1,1,1)
-
-
-// ONE ARGUMENT
-// ----------------------------------------
-
-/*! \brief Implementation of a flext class with one argument
- \ingroup FLEXT_D_NEW
-*/
-#define FLEXT_NEW_1(NAME,NEW_CLASS, TYPE) \
-\
-REAL_NEW_1(NAME,NEW_CLASS, 0,0,0, TYPE)
-
-/*! \brief Implementation of a flext dsp class with one argument
- \ingroup FLEXT_D_NEW_DSP
-*/
-#define FLEXT_NEW_DSP_1(NAME,NEW_CLASS, TYPE) \
-\
-REAL_NEW_1(NAME,NEW_CLASS, 1,0,0, TYPE)
-
-/*! \brief Implementation of a flext dsp class with one argument and no dsp inlet
- \ingroup FLEXT_D_NEW_DSP
-*/
-#define FLEXT_NEW_DSP0_1(NAME,NEW_CLASS, TYPE) \
-\
-REAL_NEW_1(NAME,NEW_CLASS, 1,1,0, TYPE)
-
-/*! \brief Implementation of a flext class (part of a library) with one argument
- \ingroup FLEXT_D_LIB
-*/
-#define FLEXT_LIB_1(NAME,NEW_CLASS, TYPE) \
-\
-REAL_NEW_1(NAME,NEW_CLASS, 0,0,1, TYPE)
-
-/*! \brief Implementation of a flext dsp class (part of a library) with one argument
- \ingroup FLEXT_D_LIB_DSP
-*/
-#define FLEXT_LIB_DSP_1(NAME,NEW_CLASS, TYPE) \
-\
-REAL_NEW_1(NAME,NEW_CLASS, 1,0,1, TYPE)
-
-/*! \brief Implementation of a flext dsp class (part of a library) with one argument and no dsp inlet
- \ingroup FLEXT_D_LIB_DSP
-*/
-#define FLEXT_LIB_DSP0_1(NAME,NEW_CLASS, TYPE) \
-\
-REAL_NEW_1(NAME,NEW_CLASS, 1,1,1, TYPE)
-
-
-// TWO ARGUMENTS
-// ----------------------------------------
-
-/*! \brief Implementation of a flext class with 2 arguments
- \ingroup FLEXT_D_NEW
-*/
-#define FLEXT_NEW_2(NAME,NEW_CLASS, TYPE1, TYPE2) \
-\
-REAL_NEW_2(NAME,NEW_CLASS, 0,0,0, TYPE1, TYPE2)
-
-/*! \brief Implementation of a flext dsp class with 2 arguments
- \ingroup FLEXT_D_NEW_DSP
-*/
-#define FLEXT_NEW_DSP_2(NAME,NEW_CLASS, TYPE1, TYPE2) \
-\
-REAL_NEW_2(NAME,NEW_CLASS, 1,0,0, TYPE1, TYPE2)
-
-/*! \brief Implementation of a flext dsp class with 2 arguments and no dsp inlet
- \ingroup FLEXT_D_NEW_DSP
-*/
-#define FLEXT_NEW_DSP0_2(NAME,NEW_CLASS, TYPE1, TYPE2) \
-\
-REAL_NEW_2(NAME,NEW_CLASS, 1,1,0, TYPE1, TYPE2)
-
-/*! \brief Implementation of a flext class (part of a library) with 2 arguments
- \ingroup FLEXT_D_LIB
-*/
-#define FLEXT_LIB_2(NAME,NEW_CLASS, TYPE1, TYPE2) \
-\
-REAL_NEW_2(NAME,NEW_CLASS, 0,0,1, TYPE1, TYPE2)
-
-/*! \brief Implementation of a flext dsp class (part of a library) with 2 arguments
- \ingroup FLEXT_D_LIB_DSP
-*/
-#define FLEXT_LIB_DSP_2(NAME,NEW_CLASS, TYPE1, TYPE2) \
-\
-REAL_NEW_2(NAME,NEW_CLASS, 1,0,1, TYPE1, TYPE2)
-
-/*! \brief Implementation of a flext dsp class (part of a library) with 2 arguments and no dsp inlet
- \ingroup FLEXT_D_LIB_DSP
-*/
-#define FLEXT_LIB_DSP0_2(NAME,NEW_CLASS, TYPE1, TYPE2) \
-\
-REAL_NEW_2(NAME,NEW_CLASS, 1,1,1, TYPE1, TYPE2)
-
-
-// THREE ARGUMENTS
-// ----------------------------------------
-
-/*! \brief Implementation of a flext class with 3 arguments
- \ingroup FLEXT_D_NEW
-*/
-#define FLEXT_NEW_3(NAME,NEW_CLASS, TYPE1, TYPE2, TYPE3) \
-\
-REAL_NEW_3(NAME,NEW_CLASS, 0,0,0, TYPE1, TYPE2, TYPE3)
-
-/*! \brief Implementation of a flext dsp class with 3 arguments
- \ingroup FLEXT_D_NEW_DSP
-*/
-#define FLEXT_NEW_DSP_3(NAME,NEW_CLASS, TYPE1, TYPE2, TYPE3) \
-\
-REAL_NEW_3(NAME,NEW_CLASS, 1,0,0, TYPE1, TYPE2, TYPE3)
-
-/*! \brief Implementation of a flext dsp class with 3 arguments and no dsp inlet
- \ingroup FLEXT_D_NEW_DSP
-*/
-#define FLEXT_NEW_DSP0_3(NAME,NEW_CLASS, TYPE1, TYPE2, TYPE3) \
-\
-REAL_NEW_3(NAME,NEW_CLASS, 1,1,0, TYPE1, TYPE2, TYPE3)
-
-/*! \brief Implementation of a flext class (part of a library) with 3 arguments
- \ingroup FLEXT_D_LIB
-*/
-#define FLEXT_LIB_3(NAME,NEW_CLASS, TYPE1, TYPE2, TYPE3) \
-\
-REAL_NEW_3(NAME,NEW_CLASS, 0,0,1, TYPE1, TYPE2, TYPE3)
-
-/*! \brief Implementation of a flext dsp class (part of a library) with 3 arguments
- \ingroup FLEXT_D_LIB_DSP
-*/
-#define FLEXT_LIB_DSP_3(NAME,NEW_CLASS, TYPE1, TYPE2, TYPE3) \
-\
-REAL_NEW_3(NAME,NEW_CLASS, 1,0,1, TYPE1, TYPE2, TYPE3)
-
-/*! \brief Implementation of a flext dsp class (part of a library) with 3 arguments and no dsp inlet
- \ingroup FLEXT_D_LIB_DSP
-*/
-#define FLEXT_LIB_DSP0_3(NAME,NEW_CLASS, TYPE1, TYPE2, TYPE3) \
-\
-REAL_NEW_3(NAME,NEW_CLASS, 1,1,1, TYPE1, TYPE2, TYPE3)
-
-
-// deprecated stuff
-
-/*! \defgroup FLEXT_D_DEPRECATED Deprecated definitions
- \deprecated
- @{
-*/
-
-#define FLEXT_NEW_G FLEXT_NEW_V
-
-#define FLEXT_NEW_TILDE FLEXT_NEW_DSP
-#define FLEXT_NEW_TILDE_G FLEXT_NEW_DSP_V
-#define FLEXT_NEW_TILDE_1 FLEXT_NEW_DSP_1
-#define FLEXT_NEW_TILDE_2 FLEXT_NEW_DSP_2
-#define FLEXT_NEW_TILDE_3 FLEXT_NEW_DSP_3
-
-#define FLEXT_LIB_G FLEXT_LIB_V
-
-#define FLEXT_LIB_TILDE FLEXT_LIB_DSP
-#define FLEXT_LIB_TILDE_G FLEXT_LIB_DSP_V
-#define FLEXT_LIB_TILDE_1 FLEXT_LIB_DSP_1
-#define FLEXT_LIB_TILDE_2 FLEXT_LIB_DSP_2
-#define FLEXT_LIB_TILDE_3 FLEXT_LIB_DSP_3
-
-#define FLEXT_TILDE_SETUP FLEXT_DSP_SETUP
-
-//! @} FLEXT_D_DEPRECATED
-
-
-/*! \defgroup FLEXT_D_LIBRARY Definitions for library objects
- @{
-*/
-
-/*! \brief Specify that to declare the library itself.
- \note If you have a library this is compulsory (to register all the objects of the library)
-*/
-#define FLEXT_LIB_SETUP(NAME,SETUPFUN) REAL_LIB_SETUP(NAME,SETUPFUN)
-
-/*! \brief Register an object in the library.
- \note This is used in the library setup function
-*/
-#define FLEXT_SETUP(cl) REAL_SETUP(cl,0)
-
-/*! \brief Register a DSP object in the library.
- \note This is used in the library setup function
-*/
-#define FLEXT_DSP_SETUP(cl) REAL_SETUP(cl,1)
-
-//! @} FLEXT_D_LIBRARY
-
-
-//! @} FLEXT_D_INSTANCE
-
-
-#endif
diff --git a/externals/grill/flext/source/fldoxygen.h b/externals/grill/flext/source/fldoxygen.h
deleted file mode 100644
index 96343528..00000000
--- a/externals/grill/flext/source/fldoxygen.h
+++ /dev/null
@@ -1,216 +0,0 @@
-#ifndef __FLEXT_DOXYGEN_H
-#define __FLEXT_DOXYGEN_H
-
-/*! \file fldoxygen.h
- \brief Doxygen definitions
- \remark There is no code in here, just documentation stuff.
-*/
-
-/*!
-
-\mainpage flext - a C++ layer for cross-platform development of PD and Max/MSP objects
-
-\section INTRO Introduction
-
-Currently there exist two widely used modular systems for real-time audio that can be
-extended by self-written objects (so called "externals"):<br>
-Max/MSP (http://www.cycling74.com) and Pure Data (http://www.pure-data.org) .
-
-Both come with APIs that are not very different (as they share their origin), but as well not quite the same.
-Flext seeks to provide a unifying interface for the APIs of those real-time systems while also
-concentrating on making use of the advantages of the object orientation of the C++ language.
-
-Consequently, flext allows to write externals (or libraries of a number of these), that can
-be compiled for both systems (with various compilers on a few platforms) without changes to the
-source code.
-Flext also tries to overcome some limitations of the real-time systems and introduces new features.
-
-The advantages of flext are:
-<ul>
-<li>Identical source code for PD and Max/MSP objects on a number of platforms
-<li>Better readability of code compared to straight C externals
-<li>Faster development, more robust coding
-<li>Sharing of common methods and data by using base classes
-<li>Transparent use of threads for methods
-<li>Libraries of externals in Max/MSP
-<li>More than 3 typed creation arguments possible for Max/MSP
-<li>Any input to any object's inlet (with the exception of signal streams)
-<li>Control of the object state by use of Max/Jitter-like "attributes"
-</ul>
-
-Naturally there are some cons, too:
-<ul>
-<li>Introduces a small overhead to speed of message handling
-<li>Overhead in object size (due to possibly unneeded library code) when statically linked
-</ul>
-
-Currently, flext supports
-<ul>
-<li>PD on Windows with Microsoft Visual C++, Borland C++ and gcc(cygwin) compilers
-<li>PD on Linux with gcc
-<li>PD on Mac OSX with gcc (makefile or Xcode)
-<li>Max/MSP on Mac OS9 and OSX with Metrowerks CodeWarrior
-</ul>
-
-\section LICENSE License
-
-Flext is covered by the GPL.
-
-flext - C++ layer for Max/MSP and pd (pure data) externals<BR>
-Copyright (C) 2001-2005 Thomas Grill
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.<BR>
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.<BR>
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-In the official flext distribution, the GNU General Public License is
-in the file gpl.txt<BR>
-Also see the file license.txt for notes on
-referenced works and their license texts.
-
-\section DOWNLOAD Download
-
-Download the latest flext version from http://grrrr.org/ext/flext .<br>
-Alternatively, you can check out the cvs version from http://sourceforge.net/projects/pure-data .
-
-\section USAGE Usage
-
-As a developer, you should know the C++ language, how to use a makefile (especially necessary for linux)
-and how to steer your compiler.<br>
-Flext can be compiled as a static library which has then to be linked to the code of your external.
-For most applications you won't have to use any of the native PD or Max/MSP API functions as they are all
-encapsulated by flext.
-
-So let's come to the point... how does a typical flext object look like?
-
-This is the object "attr1", one of the flext tutorial examples:
-
-\verbatim
-// enable attribute processing
-#define FLEXT_ATTRIBUTES 1
-
-// include flext header
-#include <flext.h>
-
-// check for appropriate flext version
-#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 400)
-#error You need at least flext version 0.4.0
-#endif
-\endverbatim
-
-With these lines, all the necessary definitions from the flext package have been included.
-
-\verbatim
-class attr1:
- public flext_base
-{
- FLEXT_HEADER(attr1,flext_base)
-\endverbatim
-
-A flext class is simply defined by inheriting from the flext_base (see also \ref FLEXT_CLASS)
-or flext_dsp (see also \ref FLEXT_DSP) classes.
-Additionally some information has to be added using FLEXT_HEADER (see \ref FLEXT_D_HEADER)
-
-\verbatim
-public:
- // constructor
- attr1();
-\endverbatim
-
-Normally the constructor takes the creation arguments of an object. Here there are none.
-
-\verbatim
-protected:
- void m_trigger(float f);
-
- // stored argument
- float arg;
-\endverbatim
-
-These are methods and data elements for internal class usage. Flext doesn't know about them
-as long as they are not registered.
-
-\verbatim
-private:
- // callback for method "m_trigger" (with one float argument)
- FLEXT_CALLBACK_F(m_trigger);
-
- // define attribute callbacks for variable "arg" (with GET and SET properties)
- FLEXT_ATTRVAR_F(arg);
-};
-\endverbatim
-
-For each method that shall be exposed to the realtime-system (for receiving messages) and
-every attribute (for setting and getting values) callbacks have to be set up.
-The functions in the groups \ref FLEXT_D_CALLBACK and \ref FLEXT_D_ATTRIB allow for their
-convenient definition.
-
-\verbatim
-// instantiate the class
-FLEXT_NEW("attr1",attr1)
-\endverbatim
-
-With FLEXT_NEW the class is registered for the real-time system.
-The number of creation arguments and their types must be taken into account here.
-There are several variants depending on whether a message oriented (see \ref FLEXT_D_NEW)
-or a DSP object (see \ref FLEXT_D_NEW_DSP) is created and whether it resides in a object library
-(see \ref FLEXT_D_LIB and \ref FLEXT_D_LIB_DSP).<BR>
-
-\verbatim
-attr1::attr1():
- arg(0) // initialize argument
-{
- // define inlets
- AddInAnything(); // first inlet of type anything (index 0)
-
- // define outlets
- AddOutFloat(); // one float outlet (has index 0)
-\endverbatim
-
-Every inlet and outlet that the object shall have has to be registered.
-This is done with the functions in \ref FLEXT_C_IO_ADD.
-
-\verbatim
- // register methods
- FLEXT_ADDMETHOD(0,m_trigger); // register method (for floats) "m_trigger" for inlet 0
-
- FLEXT_ADDATTR_VAR1("arg",arg); // register attribute "arg" with variable arg
-}
-\endverbatim
-
-Likewise, every method (called by a message) (see \ref FLEXT_D_ADDMETHOD) and every
-attribute (see \ref FLEXT_D_ADDATTR) exposed to the system has to be registered.
-Here the registration at instance creation is shown - there's another way by registering at
-class setup level, which is more efficient but can only be used if the methods or attributes
-used are known beforehand (see \ref FLEXT_D_CADDMETHOD and \ref FLEXT_D_CADDATTR).
-
-\verbatim
-void attr1::m_trigger(float f)
-{
- float res = arg+f;
-
- // output value to outlet
- ToOutFloat(0,res); // (0 stands for the outlet index 0)
-}
-\endverbatim
-
-This is a method that is triggered with a message. It does some calculation and then outputs
-a value to an outlet. There are numerous functions (see \ref FLEXT_C_IO_OUT) supporting
-that functionality.
-
-Be sure to work through the examples provided with the flext tutorial. These should give you
-an overview about the possibilities of flext.
-The "modules" link at the top of the page leads to a complete reference
-of flext functions and classes.
-
-*/
-
-#endif
diff --git a/externals/grill/flext/source/fldsp.cpp b/externals/grill/flext/source/fldsp.cpp
deleted file mode 100644
index e741c22a..00000000
--- a/externals/grill/flext/source/fldsp.cpp
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
-
-flext - C++ layer for Max/MSP and pd (pure data) externals
-
-Copyright (c) 2001-2006 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-/*! \file fldsp.cpp
- \brief Implementation of the flext dsp base class.
-*/
-
-#include "flext.h"
-#include "flinternal.h"
-#include <string.h>
-
-// === flext_dsp ==============================================
-
-void flext_dsp::Setup(t_classid id)
-{
-#if FLEXT_SYS == FLEXT_SYS_PD
-// add_method1(c,cb_enable,"enable",A_FLOAT);
- AddMethod(id,0,MakeSymbol("enable"),&cb_enable);
-#endif
-}
-
-flext_dsp::FLEXT_CLASSDEF(flext_dsp)()
- : srate(sys_getsr()),blksz(sys_getblksize())
- , vecs(NULL)
-#if FLEXT_SYS != FLEXT_SYS_MAX
- , dspon(true)
-#endif
-{}
-
-void flext_dsp::Exit()
-{
- flext_base::Exit();
-
- if(vecs) delete[] vecs;
-}
-
-
-t_int *flext_dsp::dspmeth(t_int *w)
-{
- flext_dsp *obj = (flext_dsp *)(size_t)w[1];
-
-#if FLEXT_SYS == FLEXT_SYS_MAX
- if(!obj->thisHdr()->z_disabled)
-#else
- if(LIKELY(obj->dspon))
-#endif
- {
- flext_base::indsp = true;
- obj->CbSignal();
- flext_base::indsp = false;
- }
- return w+2;
-}
-
-void flext_dsp::SetupDsp(t_signal **sp)
-{
- int i;
- int in = CntInSig();
- int out = CntOutSig();
-#if FLEXT_SYS == FLEXT_SYS_PD
- // min. 1 input channel! (CLASS_MAININLET in pd...)
- if(!in) in = 1;
-#endif
-
- // store current dsp parameters
- srate = sp[0]->s_sr;
- blksz = sp[0]->s_n; // is this guaranteed to be the same as sys_getblksize() ?
-
- // store in and out signal vectors
-
- if((in+out) && !vecs)
- vecs = new t_signalvec[in+out];
-
- for(i = 0; i < in; ++i)
- vecs[i] = sp[i]->s_vec;
- for(i = 0; i < out; ++i)
- vecs[in+i] = sp[in+i]->s_vec;
-
- // with the following call derived classes can do their eventual DSP setup
- if(CbDsp()) {
- // set the DSP function
- dsp_add((t_dspmethod)dspmeth,1,this);
- }
-}
-
-void flext_dsp::m_dsp(int /*n*/,t_signalvec const * /*insigs*/,t_signalvec const * /*outsigs*/) {}
-
-bool flext_dsp::CbDsp()
-{
- // invoke legacy method
- m_dsp(Blocksize(),InSig(),OutSig());
- return true;
-}
-
-// this function will be overridden anyway - the probably useless default is clearing all outputs
-void flext_dsp::m_signal(int n,t_sample *const * /*insigs*/,t_sample *const *outs)
-{
- for(int i = 0; i < CntOutSig(); ++i) ZeroSamples(outs[i],n);
-}
-
-void flext_dsp::CbSignal()
-{
- // invoke legacy method
- m_signal(Blocksize(),InSig(),OutSig());
-}
-
-
-#if FLEXT_SYS == FLEXT_SYS_PD
-//void flext_dsp::cb_enable(flext_hdr *c,t_float on) { thisObject(c)->dspon = on != 0; }
-bool flext_dsp::cb_enable(flext_base *b,float &on) { static_cast<flext_dsp *>(b)->dspon = on != 0; return true; }
-#endif
diff --git a/externals/grill/flext/source/fldsp.h b/externals/grill/flext/source/fldsp.h
deleted file mode 100644
index f4c6f470..00000000
--- a/externals/grill/flext/source/fldsp.h
+++ /dev/null
@@ -1,184 +0,0 @@
-/*
-
-flext - C++ layer for Max/MSP and pd (pure data) externals
-
-Copyright (c) 2001-2006 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-/*! \file fldsp.h
- \brief Declares the flext dsp class
-
-*/
-
-#ifndef __FLDSP_H
-#define __FLDSP_H
-
-// include the header file declaring the base classes
-#include "flext.h"
-
-
-// === flext_dsp ==================================================
-
-class FLEXT_SHARE FLEXT_CLASSDEF(flext_dsp);
-typedef class FLEXT_SHARE FLEXT_CLASSDEF(flext_dsp) flext_dsp;
-
-
-/*! \brief Flext dsp enabled base object
-*/
-class FLEXT_SHARE FLEXT_CLASSDEF(flext_dsp):
- public flext_base
-{
- FLEXT_HEADER_S(FLEXT_CLASSDEF(flext_dsp),flext_base,Setup)
-
- friend class FLEXT_SHARE FLEXT_CLASSDEF(flext_base);
-
-public:
-
-/*! \defgroup FLEXT_DSP Flext dsp class
-
- @{
-*/
-
-/*! \defgroup FLEXT_C_DSP Basic dsp functionality
-
- @{
-*/
-
- //! returns current sample rate
- float Samplerate() const { return srate; }
-
- //! returns current block (aka vector) size
- int Blocksize() const { return blksz; }
-
- //! returns array of input vectors (CntInSig() vectors)
- t_sample *const *InSig() const { return vecs; }
-
- //! returns input vector
- t_sample *InSig(int i) const { return InSig()[i]; }
-
- //! returns array of output vectors (CntOutSig() vectors)
- // \todo cache that returned pointer
- t_sample *const *OutSig() const
- {
- int i = CntInSig();
- // in PD we have at least one actual dsp in vector
-#if FLEXT_SYS == FLEXT_SYS_PD
- return vecs+(i?i:1);
-#elif FLEXT_SYS == FLEXT_SYS_MAX
- return vecs+i;
-#else
-#error
-#endif
- }
-
- //! returns output vector
- t_sample *OutSig(int i) const { return OutSig()[i]; }
-
- //! typedef describing a signal vector
- typedef t_sample *t_signalvec;
-
-//! @}
-
-// --- inheritable virtual methods --------------------------------
-
-/*! \defgroup FLEXT_C_DSP_VIRTUAL Flext virtual dsp functions
-
- @{
-*/
- /*! \brief Called on every dsp init.
- \note Don't expect any valid data in the signal vectors!
- flext_dsp::CbDsp should not be called by the derived class
-
- \return true (default)... use DSP, false, don't use DSP
- */
- virtual bool CbDsp();
-
- /*! \brief Called with every signal vector - here you do the dsp calculation
- flext_dsp::CbSignal fills all output vectors with silence
- */
- virtual void CbSignal();
-
-
- /*! \brief Deprecated method for CbSignal
- \deprecated
- \param n: frames (aka samples) in one signal vector
- \param insigs: array of input vectors (get number with function CntInSig())
- \param outsigs: array of output vectors (get number with function CntOutSig())
- */
- virtual void m_dsp(int n,t_signalvec const *insigs,t_signalvec const *outsigs);
-
- /*! \brief Deprecated method for CbSignal
- \deprecated
- \param n: frames (aka samples) in one signal vector
- \param insigs: array of input vectors (get number with function CntInSig())
- \param outsigs: array of output vectors (get number with function CntOutSig())
- */
- virtual void m_signal(int n,t_sample *const *insigs,t_sample *const *outsigs);
-
-//! @}
-
-
-/*! \defgroup FLEXT_C_DSP_INOUT Flext dsp in-/outlet functions
- \note These must be called in the class' constructor
-
- @{
-*/
-// --- inlet/outlet stuff -----------------------------------------
-
- /*! \brief Add signal inlet(s)
- \param m Number of inlets to add
- */
- void AddInSignal(int m = 1) { AddInlet(xlet_sig,m); }
-
- /*! \brief Add signal inlet (with description)
- \param desc Description of inlet
- */
- void AddInSignal(const char *desc) { AddInlet(xlet_sig,1,desc); }
-
- /*! \brief Add signal outlet(s)
- \param m Number of inlets to add
- */
- void AddOutSignal(int m = 1) { AddOutlet(xlet_sig,m); }
-
- /*! \brief Add signal outlet (with description)
- \param desc Description of outlet
- */
- void AddOutSignal(const char *desc) { AddOutlet(xlet_sig,1,desc); }
-
-//! @}
-
-//! @}
-
-protected:
-
- FLEXT_CLASSDEF(flext_dsp)();
-
- virtual void Exit();
-
-private:
-
- // not static, could be different in different patchers..
- float srate;
- int blksz;
- t_signalvec *vecs;
-
- // setup function
- static void Setup(t_classid c);
-
-#if FLEXT_SYS == FLEXT_SYS_PD
- static bool cb_enable(flext_base *c,float &on);
- bool dspon;
-#endif
-
- static inline flext_dsp *thisObject(flext_hdr *c) { return FLEXT_CAST<flext_dsp *>(c->data); }
-
- void SetupDsp(t_signal **sp);
-
- // dsp stuff
- static t_int *dspmeth(t_int *w);
-};
-
-#endif
diff --git a/externals/grill/flext/source/flext.cpp b/externals/grill/flext/source/flext.cpp
deleted file mode 100644
index 4a8e65e2..00000000
--- a/externals/grill/flext/source/flext.cpp
+++ /dev/null
@@ -1,261 +0,0 @@
-/*
-
-flext - C++ layer for Max/MSP and pd (pure data) externals
-
-Copyright (c) 2001-2006 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-/*! \file flext.cpp
- \brief Implementation of the flext base class.
-*/
-
-#include "flext.h"
-#include "flinternal.h"
-#include "fldsp.h"
-#include <string.h>
-
-// === flext_base ============================================
-
-const t_symbol *flext_base::curtag = NULL;
-
-flext_base::FLEXT_CLASSDEF(flext_base)()
- : incnt(0),outcnt(0)
- , insigs(0),outsigs(0)
-#if FLEXT_SYS == FLEXT_SYS_PD || FLEXT_SYS == FLEXT_SYS_MAX
- ,outlets(NULL),inlets(NULL)
-#endif
-#if FLEXT_SYS == FLEXT_SYS_MAX
- ,indesc(NULL),outdesc(NULL)
-#endif
-{
- FLEXT_LOG1("%s - flext logging is on",thisName());
-
- methhead = NULL;
- bindhead = NULL;
-
- if(HasAttributes()) {
- // initialize when attribute processing is enabled
- attrhead = new ItemCont;
- attrdata = new AttrDataCont;
- }
- else {
- attrhead = NULL;
- attrdata = NULL;
- }
-}
-
-/*! This virtual function is called after the object has been created, that is,
- after the constructor has been processed.
- It creates the inlets and outlets and the message and attribute lists.
- \note You can override it in your own class, but be sure to call it,
- \note otherwise no inlets/outlets will be created
- \note All inlet, outlets, method and attribute declarations must be made before a call to Init!
- \remark Creation of inlets/outlets can't be done upon declaration, as Max/MSP needs creation
- \remark in reverse.
-*/
-bool flext_base::Init()
-{
- bool ok = flext_obj::Init();
-
- if(ok) ok = InitInlets() && InitOutlets();
-
- if(ok) {
-#if FLEXT_SYS == FLEXT_SYS_MAX
- // according to the Max/MSP SDK this should be prior to any inlet creation, BUT
- // that doesn't seem to be true... multiple signal ins and additional inlets don't seem to work then
- if(NeedDSP()) dsp_setup(thisHdr(),CntInSig()); // signal inlets
-#endif
-
- if(HasAttributes() && m_holdaargc && m_holdaargv) {
- // initialize creation attributes
- ok = InitAttrib(m_holdaargc,m_holdaargv);
- }
- }
-
- return ok;
-}
-
-
-/*! This virtual function is called before the destructor.
- We do this because here we can still call virtual methods.
-*/
-void flext_base::Exit()
-{
-#if FLEXT_SYS == FLEXT_SYS_MAX
- // according to David Z. one should do that first...
- if(NeedDSP()) dsp_free(thisHdr());
-#endif
-
-#if FLEXT_SYS == FLEXT_SYS_PD && !defined(FLEXT_NOATTREDIT)
- // attribute editor window may still be open -> close it
- gfxstub_deleteforkey(thisHdr());
-#endif
-
-#ifdef FLEXT_THREADS
- StopThreads();
-#endif
-
- // send remaining pending messages for this object
- QFlush(this);
-
- // delete message lists
- if(bindhead) delete bindhead; // ATTENTION: the object must free all memory associated to bindings itself
- if(methhead) delete methhead;
- if(attrhead) delete attrhead;
- if(attrdata) delete attrdata;
-
-#if FLEXT_SYS == FLEXT_SYS_PD || FLEXT_SYS == FLEXT_SYS_MAX
- if(outlets) delete[] outlets;
-
- if(inlets) {
- FLEXT_ASSERT(incnt > 1);
- for(int ix = 1; ix < incnt; ++ix)
- if(inlets[ix-1]) {
- // release proxy object
-#if FLEXT_SYS == FLEXT_SYS_PD
- pd_free(&inlets[ix-1]->obj.ob_pd);
-#elif FLEXT_SYS == FLEXT_SYS_MAX
- freeobject((object *)inlets[ix-1]);
-#endif
- }
- delete[] inlets;
- }
-#endif
-
-#if FLEXT_SYS == FLEXT_SYS_MAX
- if(indesc) {
- for(int i = 0; i < incnt; ++i) if(indesc[i]) delete[] indesc[i];
- delete[] indesc;
- }
- if(outdesc) {
- for(int i = 0; i < outcnt; ++i) if(outdesc[i]) delete[] outdesc[i];
- delete[] outdesc;
- }
-#endif
-
- flext_obj::Exit();
-}
-
-
-void flext_base::AddMessageMethods(t_class *c,bool dsp,bool dspin)
-{
- add_loadbang(c,cb_loadbang);
-
-#if FLEXT_SYS == FLEXT_SYS_PD
- class_addmethod(c,(t_method)cb_click,gensym("click"),A_FLOAT,A_FLOAT,A_FLOAT,A_FLOAT,A_FLOAT,A_NULL);
-#elif FLEXT_SYS == FLEXT_SYS_MAX
- add_assist(c,cb_assist);
- add_dblclick(c,cb_click);
-#endif
-
- SetProxies(c,dsp);
- StartQueue();
-
- if(dsp) {
-#if FLEXT_SYS == FLEXT_SYS_MAX
- add_dsp(c,cb_dsp);
- dsp_initclass();
-#elif FLEXT_SYS == FLEXT_SYS_PD
- if(dspin)
- CLASS_MAINSIGNALIN(c,flext_hdr,defsig); // float messages going into the left inlet are converted to signal
- add_dsp(c,cb_dsp);
-#else
-#error Platform not supported!
-#endif
- }
-}
-
-
-/*! Set up proxy classes and basic methods at class creation time
- This ensures that they are processed before the registered flext messages
-*/
-void flext_base::Setup(t_classid id)
-{
- t_class *c = getClass(id);
-
-#if FLEXT_SYS == FLEXT_SYS_MAX
- if(!IsLib(id))
-#endif
- AddMessageMethods(c,IsDSP(id),HasDSPIn(id));
-
- if(HasAttributes(id)) {
- AddMethod(id,0,"getattributes",cb_ListAttrib);
- AddMethod(id,0,"getmethods",cb_ListMethods);
-
-#if FLEXT_SYS == FLEXT_SYS_PD && !defined(FLEXT_NOATTREDIT)
- AddMethod(id,0,"attributedialog",cb_AttrDialog);
-#endif
- }
-
-#if FLEXT_SYS == FLEXT_SYS_PD
- SetGfx(id);
-#endif
-}
-
-void flext_base::cb_loadbang(flext_hdr *c) { thisObject(c)->CbLoadbang(); }
-
-void flext_base::m_loadbang() {}
-void flext_base::CbLoadbang() { m_loadbang(); }
-
-void flext_base::CbClick() {}
-
-#if FLEXT_SYS == FLEXT_SYS_PD
-void flext_base::cb_click(flext_hdr *c,t_floatarg xpos,t_floatarg ypos,t_floatarg shift,t_floatarg ctrl,t_floatarg alt)
-{
- if(shift) thisObject(c)->CbClick();
-}
-#endif
-
-#if FLEXT_SYS == FLEXT_SYS_MAX
-void flext_base::cb_click(flext_hdr *c, Point pt, short mods)
-{
- thisObject(c)->CbClick();
-}
-
-void flext_base::cb_assist(flext_hdr *c,void * /*b*/,long msg,long arg,char *s)
-{
- flext_base *th = thisObject(c);
-
- switch(msg) {
- case 1: //ASSIST_INLET:
- if(arg < th->incnt && th->indesc[arg]) strcpy(s,th->indesc[arg]);
- break;
- case 2: //ASSIST_OUTLET:
- if(arg < th->outcnt) {
- if(th->outdesc[arg]) strcpy(s,th->outdesc[arg]);
- }
- else
- if(arg == th->outcnt && th->HasAttributes()) strcpy(s,"Attributes");
- break;
- }
-}
-#endif
-
-#if FLEXT_SYS == FLEXT_SYS_MAX
-void flext_base::cb_dsp(flext_hdr *c,t_signal **sp,short *count)
-#else
-void flext_base::cb_dsp(flext_hdr *c,t_signal **sp)
-#endif
-{
- flext_base *bobj = thisObject(c);
-
-#if FLEXT_SYS == FLEXT_SYS_MAX
- // we must extra-check here if it is really a DSP object
- // obviously, for objects that are part of a library, one dsp_initclass enables DSP for all
- if(!bobj->IsDSP()) return;
-#endif
-
- flext_dsp *obj;
-#ifdef FLEXT_DEBUG
- obj = dynamic_cast<flext_dsp *>(bobj);
-#else
- obj = static_cast<flext_dsp *>(bobj);
-#endif
-
- FLEXT_ASSERT(obj);
- obj->SetupDsp(sp);
-}
-
diff --git a/externals/grill/flext/source/flext.h b/externals/grill/flext/source/flext.h
deleted file mode 100644
index 71a35ea6..00000000
--- a/externals/grill/flext/source/flext.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
-
-flext - C++ layer for Max/MSP and pd (pure data) externals
-
-Copyright (c) 2001-2006 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-/*! \file flext.h
- \brief This is the main flext include file.
-
- The basic definitions are set here and the necessary header files are included
-*/
-
-#ifndef __FLEXT_H
-#define __FLEXT_H
-
-
-/*! \defgroup FLEXT_GLOBAL Flext global definitions
- @{
-*/
-
-//! \brief flext version number
-#define FLEXT_VERSION 501
-
-//! \brief flext version string
-#define FLEXT_VERSTR "0.5.1pre"
-
-//! @}
-
-
-// determine System/OS/CPU
-#include "flprefix.h"
-
-// include headers necessary for multi-threading
-#ifdef FLEXT_THREADS
- #if FLEXT_THREADS == FLEXT_THR_POSIX
- extern "C" {
- #include <pthread.h>
- #include <sched.h>
- }
- #elif FLEXT_THREADS == FLEXT_THR_MP
- #include <multiprocessing.h>
- #elif FLEXT_THREADS == FLEXT_THR_WIN32
- #if defined(_WIN32_WINNT) && _WIN32_WINNT >= 0x500
- #include <windows.h>
- #include <process.h>
- #else
- #error "Win32 threading model only supported for Win2000/XP or newer"
- #endif
- #else
- #error "Thread model not supported"
- #endif
-#endif
-
-
-// include all the flext interface definitions
-#include "fldefs.h"
-
-// include the basic flext object classes
-#include "flclass.h"
-
-// include the flext dsp class
-#include "fldsp.h"
-
-#endif // FLEXT_H
diff --git a/externals/grill/flext/source/flfeatures.h b/externals/grill/flext/source/flfeatures.h
deleted file mode 100644
index efb198d0..00000000
--- a/externals/grill/flext/source/flfeatures.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
-
-flext - C++ layer for Max/MSP and pd (pure data) externals
-
-Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-/*! \file flfeatures.h
- \brief Detect version-specific features.
-*/
-
-#ifndef __FLFEATURES_H
-#define __FLFEATURES_H
-
-// check if PD API supports buffer dirty time
-#if defined(PD_DEVEL_VERSION) && defined(PD_MAJOR_VERSION) && defined(PD_MINOR_VERSION)
-#if PD_MINOR_VERSION >= 36 && PD_MINOR_VERSION <= 38
-// array locks have been removed in devel_0_39
- #define _FLEXT_HAVE_PD_GARRAYLOCKS
-#endif
-#if PD_MINOR_VERSION >= 36
- #define _FLEXT_HAVE_PD_GARRAYUPDATETIME
-#endif
-#endif
-
-#if defined(MAC_VERSION) || defined(WIN_VERSION)
- // not for OS9
- #define _FLEXT_HAVE_MAX_INUSEFLAG
-#endif
-
-#endif
diff --git a/externals/grill/flext/source/flinternal.h b/externals/grill/flext/source/flinternal.h
deleted file mode 100644
index d0d76eba..00000000
--- a/externals/grill/flext/source/flinternal.h
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
-
-flext - C++ layer for Max/MSP and pd (pure data) externals
-
-Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-/*! \file flinternal.h
- \brief Definitions for internal flext usage
- \internal
-
- Here, a few shortcuts for common Max/MSP or PD library calls and type definitions
- are declared
-*/
-
-#ifndef __FLEXT_INTERNALS_H
-#define __FLEXT_INTERNALS_H
-
-#include "flstdc.h"
-
-
-#if FLEXT_SYS == FLEXT_SYS_PD
-
-#define object_new(clss) pd_new(clss)
-#define object_free(obj) pd_free(&(obj)->ob_pd)
-
-
-
-#define add_dsp(clss,meth) class_addmethod(clss, (t_method)meth,gensym("dsp"),A_NULL)
-#define add_bang(clss,meth) class_addbang(clss, (t_method)meth)
-#define add_float(clss,meth) class_addfloat(clss, (t_method)meth)
-#define add_floatn(clss,meth,n) class_addmethod(clss, (t_method)meth,gensym("ft" #n),A_FLOAT,A_NULL)
-#define add_flint(clss,meth) class_addfloat(clss, (t_method)meth)
-#define add_flintn(clss,meth,n) class_addmethod(clss, (t_method)meth,gensym("ft" #n),A_FLOAT,A_NULL)
-#define add_method(clss,meth,text) class_addmethod(clss, (t_method)meth, gensym(text), A_NULL)
-#define add_methodG(clss,meth,text) class_addmethod(clss, (t_method)meth, gensym(text), A_GIMME,A_NULL)
-#define add_method1(clss,meth,text,a1) class_addmethod(clss, (t_method)meth, gensym(text), a1,A_NULL)
-#define add_method2(clss,meth,text,a1,a2) class_addmethod(clss, (t_method)meth, gensym(text), a1,a2,A_NULL)
-#define add_method3(clss,meth,text,a1,a2,a3) class_addmethod(clss, (t_method)meth, gensym(text), a1,a2,a3,A_NULL)
-#define add_method4(clss,meth,text,a1,a2,a3,a4) class_addmethod(clss, (t_method)meth, gensym(text), a1,a2,a3,a4,A_NULL)
-#define add_method5(clss,meth,text,a1,a2,a3,a5) class_addmethod(clss, (t_method)meth, gensym(text), a1,a2,a3,a4,a5,A_NULL)
-#define add_loadbang(clss,meth) class_addmethod(clss,(t_method)meth, gensym("loadbang"), A_CANT, A_NULL)
-#define add_anything(clss,meth) class_addanything(clss,meth)
-
-
-#define newout_signal(clss) outlet_new(clss,const_cast<t_symbol *>(flext::sym_signal))
-#define newout_float(clss) outlet_new(clss,const_cast<t_symbol *>(flext::sym_float))
-#define newout_flint(clss) outlet_new(clss,const_cast<t_symbol *>(flext::sym_float))
-#define newout_list(clss) outlet_new(clss,const_cast<t_symbol *>(flext::sym_list))
-#define newout_symbol(clss) outlet_new(clss,const_cast<t_symbol *>(flext::sym_symbol))
-#define newout_anything(clss) outlet_new(clss,const_cast<t_symbol *>(flext::sym_anything))
-
-#define outlet_flint(o,v) outlet_float(o,(float)(v))
-
-typedef t_perfroutine t_dspmethod;
-
-#define qelem_new clock_new
-#define qelem_free clock_free
-#define qelem_set clock_delay
-#define qelem_front clock_delay
-#define qelem_unset clock_unset
-
-#define CRITON()
-#define CRITOFF()
-
-
-#elif FLEXT_SYS == FLEXT_SYS_MAX
-
-typedef void t_outlet;
-
-
-#define object_new(clss) newobject(clss)
-#define object_free(obj) freeobject((object *)(obj))
-
-#define add_dsp(clss,meth) addmess((method)meth,"dsp",A_CANT,A_NOTHING)
-#define add_bang(clss,meth) addbang((method)meth)
-#define add_float(clss,meth) addfloat((method)meth)
-#define add_floatn(clss,meth,n) addftx((method)meth,n)
-#define add_flint(clss,meth) addint((method)meth)
-#define add_flintn(clss,meth,n) addinx((method)meth,n)
-#define add_method(clss,meth,text) addmess((method)meth, text, A_NOTHING)
-#define add_methodG(clss,meth,text) addmess((method)meth, text, A_GIMME,A_NOTHING)
-#define add_method1(clss,meth,text,a1) addmess((method)meth, text, a1,A_NOTHING)
-#define add_method2(clss,meth,text,a1,a2) addmess((method)meth, text, a1,a2,A_NOTHING)
-#define add_method3(clss,meth,text,a1,a2,a3) addmess((method)meth, text, a1,a2,a3,A_NOTHING)
-#define add_method4(clss,meth,text,a1,a2,a3,a4) addmess((method)meth, text, a1,a2,a3,a4,A_NOTHING)
-#define add_method5(clss,meth,text,a1,a2,a3,a5) addmess((method)meth, text, a1,a2,a3,a4,a5,A_NOTHING)
-#define add_anything(clss,meth) addmess((method)meth, "anything", A_GIMME,A_NOTHING)
-
-#define add_assist(clss,meth) addmess((method)meth, "assist", A_CANT, A_NULL)
-#define add_loadbang(clss,meth) addmess((method)meth, "loadbang", A_CANT, A_NULL)
-#define add_dblclick(clss,meth) addmess((method)meth, "dblclick", A_CANT, A_NULL)
-
-#define newout_signal(clss) outlet_new(clss,"signal")
-#define newout_float(clss) outlet_new(clss,"float")
-#define newout_flint(clss) outlet_new(clss,"int")
-#define newout_list(clss) outlet_new(clss,"list")
-#define newout_symbol(clss) outlet_new(clss,"symbol")
-#define newout_anything(clss) outlet_new(clss,0)
-
-#define outlet_flint(o,v) outlet_int(o,(int)(v))
-#define outlet_symbol(o,s) outlet_anything(o,s,0,NULL)
-
-typedef t_perfroutine t_dspmethod;
-
-#define CRITON() short state = lockout_set(1)
-#define CRITOFF() lockout_set(state)
-
-
-#elif FLEXT_SYS == FLEXT_SYS_JMAX
-
-
-#endif
-
-
-#endif
diff --git a/externals/grill/flext/source/flitem.cpp b/externals/grill/flext/source/flitem.cpp
deleted file mode 100644
index 1ae65fa8..00000000
--- a/externals/grill/flext/source/flitem.cpp
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
-
-flext - C++ layer for Max/MSP and pd (pure data) externals
-
-Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-/*! \file flitem.cpp
- \brief Processing of method and attribute lists.
-*/
-
-#include "flext.h"
-#include <string.h>
-
-flext_base::ItemSet::~ItemSet() { clear(); }
-
-void flext_base::ItemSet::clear()
-{
- for(iterator it(*this); it; ++it) delete it.data();
- TablePtrMap<const t_symbol *,Item *,8>::clear();
-}
-
-
-flext_base::Item::~Item()
-{
- if(nxt) delete nxt;
-}
-
-flext_base::ItemCont::ItemCont():
- members(0),memsize(0),size(0),cont(NULL)
-{}
-
-flext_base::ItemCont::~ItemCont()
-{
- if(cont) {
- for(int i = 0; i < size; ++i) delete cont[i];
- delete[] cont;
- }
-}
-
-void flext_base::ItemCont::Resize(int nsz)
-{
- if(nsz > memsize) {
- int nmemsz = nsz+10; // increment maximum allocation size
- ItemSet **ncont = new ItemSet *[nmemsz]; // make new array
- if(cont) {
- memcpy(ncont,cont,size*sizeof(*cont)); // copy existing entries
- delete[] cont;
- }
- cont = ncont; // set current array
- memsize = nmemsz; // set new allocation size
- }
-
- // make new items
- while(size < nsz) cont[size++] = new ItemSet;
-}
-
-void flext_base::ItemCont::Add(Item *item,const t_symbol *tag,int inlet)
-{
- FLEXT_ASSERT(tag);
-
- if(!Contained(inlet)) Resize(inlet+2);
- ItemSet &set = GetInlet(inlet);
- Item *lst = set.find(tag);
- if(!lst) {
- Item *old = set.insert(tag,lst = item);
- FLEXT_ASSERT(!old);
- }
- else
- for(;;)
- if(!lst->nxt) { lst->nxt = item; break; }
- else lst = lst->nxt;
- members++;
-}
-
-bool flext_base::ItemCont::Remove(Item *item,const t_symbol *tag,int inlet,bool free)
-{
- FLEXT_ASSERT(tag);
-
- if(Contained(inlet)) {
- ItemSet &set = GetInlet(inlet);
- Item *lit = set.find(tag);
- for(Item *prv = NULL; lit; prv = lit,lit = lit->nxt) {
- if(lit == item) {
- if(prv) prv->nxt = lit->nxt;
- else if(lit->nxt) {
- Item *old = set.insert(tag,lit->nxt);
- FLEXT_ASSERT(!old);
- }
- else {
- Item *l = set.remove(tag);
- FLEXT_ASSERT(l == lit);
- }
-
- lit->nxt = NULL;
- if(free) delete lit;
- return true;
- }
- }
- }
- return false;
-}
-
-flext_base::Item *flext_base::ItemCont::FindList(const t_symbol *tag,int inlet)
-{
- FLEXT_ASSERT(tag);
- return Contained(inlet)?GetInlet(inlet).find(tag):NULL;
-}
-
-// --- class item lists (methods and attributes) ----------------
-
-/*
-typedef TablePtrMap<flext_base::t_classid,flext_base::ItemCont *,8> ClassMap;
-
-static ClassMap classarr[2];
-
-flext_base::ItemCont *flext_base::GetClassArr(t_classid c,int ix)
-{
- ClassMap &map = classarr[ix];
- ItemCont *cont = map.find(c);
- if(!cont) map.insert(c,cont = new ItemCont);
- return cont;
-}
-*/
diff --git a/externals/grill/flext/source/fllib.cpp b/externals/grill/flext/source/fllib.cpp
deleted file mode 100644
index 3b196f55..00000000
--- a/externals/grill/flext/source/fllib.cpp
+++ /dev/null
@@ -1,578 +0,0 @@
-/*
-
-flext - C++ layer for Max/MSP and pd (pure data) externals
-
-Copyright (c) 2001-2006 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-/*! \file fllib.cpp
- \brief Code for handling of object (and library) creation functions.
-*/
-
-#include "flext.h"
-#include "flinternal.h"
-
-#include <stdarg.h>
-#include <string.h>
-#include <ctype.h>
-#include <map>
-
-#define ALIASDEL ','
-
-#define ALIASSLASHES ":/\\"
-#if FLEXT_OS == FLEXT_OS_MAC
- #define ALIASSLASH ':'
-#elif FLEXT_OS == FLEXT_OS_WIN
- #if FLEXT_SYS == FLEXT_SYS_PD
- #define ALIASSLASH '/'
- #elif FLEXT_SYS == FLEXT_SYS_MAX
- #define ALIASSLASH '/'
- #else
- #error "Undefined"
- #endif
-#else
- // default to "/"
- #define ALIASSLASH '/'
-#endif
-
-//! Extract space-delimited words from a string
-static const char *extract(const char *name,int ix = 0)
-{
- char tmp[1024];
- const char *n = name;
-
- const char *del = strchr(name,ALIASDEL);
-
- if(del) {
-#if 0
- char *t = tmp;
- while(n < del && (isspace(*n) || strchr(ALIASSLASHES,*n))) ++n;
- while(n < del && !isspace(*n)) {
- char c = *(n++);
- *(t++) = strchr(ALIASSLASHES,c)?ALIASSLASH:c;
- }
- while(*t == ALIASSLASH && t > tmp) --t;
- *t = 0;
-#endif
- if(ix < 0) {
- // eat white space in front of help definition
- ++del;
- while(*del && isspace(*del)) ++del;
- return del;
- }
-
- strncpy(tmp,name,del-name);
- tmp[del-name] = 0;
- n = tmp;
- }
- else if(ix < 0)
- return NULL; // no explicit help name
-
- while(*n && isspace(*n)) ++n;
-
- for(int i = 0; n && *n; ++i) {
- if(i == ix) {
- char *t = tmp;
-
- for(; *n && !isspace(*n); ++t,++n) *t = *n;
- *t = 0;
- return *tmp?tmp:NULL;
- }
- else {
- while(*n && !isspace(*n)) ++n;
- while(*n && isspace(*n)) ++n;
- }
- }
-
- return NULL;
-}
-
-
-//! Check if object's name ends with a tilde
-bool flext::chktilde(const char *objname)
-{
-// int stplen = strlen(setupfun);
- bool tilde = true; //!strncmp(setupfun,"_tilde",6);
-
- if((objname[strlen(objname)-1] == '~'?1:0)^(tilde?1:0)) {
- if(tilde)
- error("flext: %s (no trailing ~) is defined as a tilde object",objname);
- else
- error("flext::check_tilde: %s is no tilde object",objname);
- return true;
- }
- else
- return false;
-}
-
-// this class stands for one library of objects
-// there can be more if flext is a shared library
-class flext_library
-{
-public:
- flext_library(const t_symbol *nm)
- : name(nm)
-#if FLEXT_SYS == FLEXT_SYS_MAX
- , clss(NULL),dsp(false)
-#endif
- {}
-
- const t_symbol *name;
-#if FLEXT_SYS == FLEXT_SYS_MAX
- t_class *clss;
- bool dsp;
-#endif
-};
-
-// this class stands for one registered object
-// it holds the class, type flags, constructor and destructor of the object and the creation arg types
-// it will never be destroyed
-class flext_class:
- public flext_root
-{
-public:
- flext_class(t_class *&cl,flext_obj *(*newf)(int,t_atom *),void (*freef)(flext_hdr *));
-
- t_class *const &clss;
-
- flext_obj *(*newfun)(int,t_atom *);
- void (*freefun)(flext_hdr *c);
-
- int argc;
- int *argv;
-
- flext_library *lib;
- bool dsp:1,noi:1,attr:1,dist:1;
-
- flext_base::ItemCont meths,attrs;
-};
-
-flext_class::flext_class(t_class *&cl,flext_obj *(*newf)(int,t_atom *),void (*freef)(flext_hdr *)):
- clss(cl),
- newfun(newf),freefun(freef),
- argc(0),argv(NULL)
- , dist(false)
-{}
-
-typedef TablePtrMap<const t_symbol *,flext_class *,8> LibMap;
-// static initialization (with constructor) doesn't work for Codewarrior
-static LibMap *libnames = NULL;
-
-//! Store or retrieve registered classes
-static flext_class *FindName(const t_symbol *s,flext_class *o = NULL)
-{
- if(!libnames) libnames = new LibMap;
- flext_class *cl = libnames->find(s);
- if(!cl && o)
- libnames->insert(s,cl = o);
- return cl;
-}
-
-
-t_class *flext_obj::getClass(t_classid cl) { return cl->clss; }
-bool flext_obj::HasAttributes(t_classid cl) { return cl->attr; }
-bool flext_obj::IsDSP(t_classid cl) { return cl->dsp; }
-bool flext_obj::HasDSPIn(t_classid cl) { return !cl->noi; }
-bool flext_obj::IsLib(t_classid cl) { return cl->lib != NULL; }
-
-bool flext_obj::HasAttributes() const { return clss->attr; }
-bool flext_obj::IsDSP() const { return clss->dsp; }
-bool flext_obj::HasDSPIn() const { return !clss->noi; }
-bool flext_obj::IsLib() const { return clss->lib != NULL; }
-
-#if FLEXT_SYS == FLEXT_SYS_MAX
-bool flext_obj::NeedDSP() const { return clss->dsp || (clss->lib && clss->lib->dsp); }
-#endif
-
-static flext_library *curlib = NULL;
-
-void flext_obj::lib_init(const char *name,void setupfun())
-{
- // make new library instance
- curlib = new flext_library(MakeSymbol(name));
-
- flext::Setup();
-
- // first register all classes
- try {
- setupfun();
- }
- catch(std::exception &x) {
- error("%s - %s",name,x.what());
- return;
- }
- catch(char *txt) {
- error("%s - %s",name,txt);
- return;
- }
- catch(...) {
- error("%s - Unknown exception at library setup",name);
- return;
- }
-
-#if FLEXT_SYS == FLEXT_SYS_MAX
- // then see if we got DSP classes
-
- // for Max/MSP, the library is represented by a special object (class) registered at startup
- // all objects in the library are clones of that library object - they share the same class
- ::setup(
- (t_messlist **)&curlib->clss,
- (t_newmethod)obj_new,(t_method)obj_free,
- sizeof(flext_hdr),NULL,A_GIMME,A_NULL);
-
- // for all classes in library add methods
- flext_base::AddMessageMethods(curlib->clss,curlib->dsp,true);
-#endif
-
- curlib = NULL;
-}
-
-void flext_obj::obj_add(bool lib,bool dsp,bool noi,bool attr,const char *idname,const char *names,void setupfun(t_classid),flext_obj *(*newfun)(int,t_atom *),void (*freefun)(flext_hdr *),int argtp1,...)
-{
- // get first possible object name
- const t_symbol *nsym = MakeSymbol(extract(names));
-
-#ifdef FLEXT_DEBUG
- if(dsp) chktilde(GetString(nsym));
-#endif
-
- if(lib) {
- FLEXT_ASSERT(curlib);
-#if FLEXT_SYS == FLEXT_SYS_MAX
- curlib->dsp |= dsp;
-#endif
- }
- else {
- FLEXT_ASSERT(!curlib);
-// process_attributes = attr;
- }
-
- // set dynamic class pointer
- t_class **cl =
-#if FLEXT_SYS == FLEXT_SYS_MAX
- lib?&curlib->clss:
-#endif
- new t_class *;
-
- // register object class
-#if FLEXT_SYS == FLEXT_SYS_PD
- *cl = ::class_new(
- (t_symbol *)nsym,
- (t_newmethod)obj_new,(t_method)obj_free,
- sizeof(flext_hdr),CLASS_DEFAULT,A_GIMME,A_NULL);
-#elif FLEXT_SYS == FLEXT_SYS_MAX
- if(!lib) {
- ::setup(
- (t_messlist **)cl,
- (t_newmethod)obj_new,(t_method)obj_free,
- sizeof(flext_hdr),NULL,A_GIMME,A_NULL);
- // attention: in Max/MSP the *cl variable is not initialized after that call.
- // just the address is stored, the initialization then occurs with the first object instance!
- }
-#else
-#error Platform not implemented
-#endif
-
- // make new dynamic object
- flext_class *lo = new flext_class(*cl,newfun,freefun);
- lo->lib = curlib;
- lo->dsp = dsp;
- lo->noi = noi;
- lo->attr = attr;
-
-// post("ADDCLASS %s,%s = %p -> LIBOBJ %p -> %p (lib=%i,dsp=%i)",idname,names,*cl,lo,lo->clss,lib?1:0,dsp?1:0);
-
- // parse the argument type list and store it with the object
- if(argtp1 == FLEXTTPN_VAR)
- lo->argc = -1;
- else {
- int argtp,i;
- va_list marker;
-
- // parse a first time and count only
- va_start(marker,argtp1);
- for(argtp = argtp1; argtp != FLEXTTPN_NULL; ++lo->argc) argtp = (int)va_arg(marker,int);
- va_end(marker);
-
- lo->argv = new int[lo->argc];
-
- // now parse and store
- va_start(marker,argtp1);
- for(argtp = argtp1,i = 0; i < lo->argc; ++i) {
- lo->argv[i] = argtp;
- argtp = (int)va_arg(marker,int);
- }
- va_end(marker);
- }
-
- // get unique class id
- t_classid clid = lo;
-
- // make help reference
- const char *helptxt = extract(names,-1);
- if(helptxt) {
- const char *sl = strchr(helptxt,'/');
- if(sl && !sl[1])
- // helptxt is only the path (path with trailing /)
- flext_obj::DefineHelp(clid,idname,helptxt,dsp);
- else
- // helptxt is path and patch name
- flext_obj::DefineHelp(clid,helptxt,NULL,dsp);
- }
-
- for(int ix = 0; ; ++ix) {
- // in this loop register all the possible aliases of the object
-
- const char *c = ix?extract(names,ix):GetString(nsym);
- if(!c || !*c) break;
-
- // add to name list
- const t_symbol *lsym = MakeSymbol(c);
- FindName(lsym,lo);
-
-#if FLEXT_SYS == FLEXT_SYS_PD
- if(ix > 0)
- // in PD the first name is already registered with class creation
- ::class_addcreator((t_newmethod)obj_new,(t_symbol *)lsym,A_GIMME,A_NULL);
-#elif FLEXT_SYS == FLEXT_SYS_MAX
- if(ix > 0 || lib)
- // in Max/MSP the first alias gets its name from the name of the object file,
- // unless it is a library (then the name can be different)
- ::alias(const_cast<char *>(c));
-#else
-#error
-#endif
- }
-
- try {
- // call class setup function
- setupfun(clid);
- }
- catch(std::exception &x) {
- error("%s: %s",idname,x.what());
- }
- catch(char *txt) {
- error("%s: %s",idname,txt);
- }
- catch(...) {
- error("%s - Unknown exception while initializing class",idname);
- }
-}
-
-
-#define NEWARGS 256 // must be larger than FLEXT_NEWARGS = 5
-
-typedef flext_obj *(*libfun)(int,t_atom *);
-
-#if FLEXT_SYS == FLEXT_SYS_MAX
-flext_hdr *flext_obj::obj_new(const t_symbol *s,short _argc_,t_atom *argv)
-#else
-flext_hdr *flext_obj::obj_new(const t_symbol *s,int _argc_,t_atom *argv)
-#endif
-{
- flext_hdr *obj = NULL;
- flext_class *lo = FindName(s);
- if(lo) {
-// post("NEWOBJ %s = %p -> %p",GetString(s),lo,lo->clss);
-
- bool ok = true;
- t_atom args[NEWARGS];
-
- int argc = _argc_;
- if(lo->attr) {
- argc = flext_base::CheckAttrib(argc,argv);
- }
-
- if(lo->argc >= 0) {
-#ifdef FLEXT_DEBUG
- if(lo->argc > FLEXT_MAXNEWARGS) { ERRINTERNAL(); ok = false; }
-#endif
-
- int misnum = 0;
- if(argc > lo->argc) { ok = false; misnum = 1; }
-
- for(int i = 0; ok && i < lo->argc; ++i) {
- switch(lo->argv[i]) {
-#if FLEXT_SYS != FLEXT_SYS_PD
- case FLEXTTPN_INT:
- case FLEXTTPN_DEFINT:
- if(i >= argc)
- if(lo->argv[i] == FLEXTTPN_DEFINT) SetInt(args[i],0);
- else { misnum = -1,ok = false; break; }
- else if(IsInt(argv[i])) args[i] = argv[i];
- else if(IsFloat(argv[i])) SetInt(args[i],(int)GetFloat(argv[i]));
- else ok = false;
- break;
-#endif
- case FLEXTTPN_FLOAT:
- case FLEXTTPN_DEFFLOAT:
- if(i >= argc)
- if(lo->argv[i] == FLEXTTPN_DEFFLOAT) SetFloat(args[i],0);
- else { misnum = -1,ok = false; break; }
- else if(IsInt(argv[i])) SetFloat(args[i],(float)GetInt(argv[i]));
- else if(IsFloat(argv[i])) args[i] = argv[i];
- else ok = false;
- break;
- case FLEXTTPN_SYM:
- case FLEXTTPN_DEFSYM:
- // \todo shall we analyze the patcher args????... should already be done!
- if(i >= argc)
- if(lo->argv[i] == FLEXTTPN_DEFSYM) SetSymbol(args[i],sym__);
- else { misnum = -1,ok = false; break; }
- else if(IsSymbol(argv[i]))
-// SetSymbol(args[i],GetParamSym(GetSymbol(argv[i]),NULL));
- args[i] = argv[i];
- else ok = false;
- break;
- }
- }
-
- if(!ok)
- if(misnum)
- error("%s: %s creation arguments",GetString(s),misnum < 0?"Not enough":"Too many");
- else
- error("%s: Creation arguments do not match",GetString(s));
- }
-
-
- if(ok) {
- try {
-#if FLEXT_SYS == FLEXT_SYS_PD
- obj = (flext_hdr *)::pd_new(lo->clss);
-#elif FLEXT_SYS == FLEXT_SYS_MAX
- obj = (flext_hdr *)::newobject(lo->clss);
-#else
-#error
-#endif
-
- flext_obj::m_holder = obj;
- flext_obj::m_holdclass = lo;
- flext_obj::m_holdname = s;
- flext_obj::initing = true;
- flext_obj::init_ok = true;
-
- // get actual flext object (newfun calls "new flext_obj()")
- if(lo->argc >= 0)
- obj->data = lo->newfun(lo->argc,args);
- else
- obj->data = lo->newfun(argc,argv);
-
- flext_obj::m_holder = NULL;
- flext_obj::m_holdclass = NULL;
- flext_obj::m_holdname = NULL;
-
- ok = obj->data &&
- // check constructor exit flag
- flext_obj::init_ok;
-
- if(ok) {
- if(lo->attr) {
- // DON'T convert eventual patcher args here... this is done by the actual attribute stuff
- // so that the initial $- or #- be preserved!
-
- // store creation args for attribute initialization (inside flext_base::Init())
- flext_obj::m_holdaargc = _argc_-argc;
- flext_obj::m_holdaargv = argv+argc;
- }
- else {
- flext_obj::m_holdaargc = 0;
- flext_obj::m_holdaargv = NULL;
- }
-
- // call virtual init function
- // here, inlets, outlets, methods and attributes can be set up
- ok = obj->data->Init();
-
- flext_obj::initing = false;
-
- // call another virtual init function
- if(ok) ok = obj->data->Finalize();
-
- flext_obj::m_holdaargc = 0;
- flext_obj::m_holdaargv = NULL;
- }
-
- } //try
- catch(std::exception &x) {
- error("%s - Exception while creating object: %s",GetString(s),x.what());
- ok = false;
- }
- catch(char *txt) {
- error("%s - Exception while creating object: %s",GetString(s),txt);
- ok = false;
- }
- catch(...) {
- error("%s - Unknown exception while creating object",GetString(s));
- ok = false;
- }
-
- flext_obj::initing = false;
-
- if(!ok) {
- // there was some init error, free object
- lo->freefun(obj);
- obj = NULL;
- }
- }
- }
-#ifdef FLEXT_DEBUG
- else
-#if FLEXT_SYS == FLEXT_SYS_MAX
- // in Max/MSP an object with the name of the library exists, even if not explicitly declared!
-// if(!lo->lib || s != lo->lib->name)
-#endif
- error("Class %s not found in library!",s->s_name);
-#endif
-
- return obj;
-}
-
-void flext_obj::obj_free(flext_hdr *h)
-{
- flext_hdr *hdr = (flext_hdr *)h;
- const t_symbol *name = hdr->data->thisNameSym();
- flext_class *lcl = FindName(name);
-
- if(lcl) {
- try {
- flext_obj::exiting = true;
-
- // call virtual exit function
- hdr->data->Exit();
-
- // now call object destructor and deallocate
- lcl->freefun(hdr);
- } //try
- catch(std::exception &x) {
- error("%s - Exception while destroying object: %s",GetString(name),x.what());
- }
- catch(char *txt) {
- error("%s - Exception while destroying object: %s",GetString(name),txt);
- }
- catch(...) {
- error("%s - Unknown exception while destroying object",GetString(name));
- }
-
- flext_obj::exiting = false;
- }
-#ifdef FLEXT_DEBUG
- else
-#if FLEXT_SYS == FLEXT_SYS_MAX
- // in Max/MSP an object with the name of the library exists, even if not explicitely declared!
-// if(!lo->lib || s != lo->lib->name)
-#endif
- error("Class %s not found in library!",name);
-#endif
-}
-
-
-t_class *flext_obj::thisClass() const { FLEXT_ASSERT(x_obj); return thisClassId()->clss; }
-
-void flext_base::SetDist(t_classid c,bool d) { c->dist = d; }
-bool flext_base::DoDist() const { return thisClassId()->dist; }
-
-flext_base::ItemCont *flext_base::ClMeths(t_classid c) { return &c->meths; }
-flext_base::ItemCont *flext_base::ClAttrs(t_classid c) { return &c->attrs; }
diff --git a/externals/grill/flext/source/flmap.cpp b/externals/grill/flext/source/flmap.cpp
deleted file mode 100644
index 5afcf51c..00000000
--- a/externals/grill/flext/source/flmap.cpp
+++ /dev/null
@@ -1,249 +0,0 @@
-/*
-
-flext - C++ layer for Max/MSP and pd (pure data) externals
-
-Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-/*! \file flmap.cpp
- \brief flext container classes.
-*/
-
-#include "flext.h"
-#include "flmap.h"
-
-TableAnyMap::~TableAnyMap() { clear(); }
-
-void TableAnyMap::clear()
-{
- if(left) { _delmap(left); left = NULL; }
- if(right) { _delmap(right); right = NULL; }
- n = 0;
-}
-
-
-void *TableAnyMap::_set(int tsize,size_t k,void *t)
-{
- FLEXT_ASSERT(n);
-
- if(n < tsize) {
- // fall through
- }
- else if(k < data[0].key)
- return _toleft(tsize,k,t);
- else if(k > data[tsize-1].key)
- return _toright(tsize,k,t);
-
- int ix = _tryix(k);
- if(ix >= n) {
- FLEXT_ASSERT(ix == n);
- // after last entry
- data[n++](k,t);
- return NULL;
- }
-
- size_t dk = data[ix].key;
- if(k == dk) {
- // update data in existing slot (same key)
- void *a = data[ix].value;
- data[ix] = t;
- return a;
- }
- else {
- // insert new slot by shifting the higher ones
- FLEXT_ASSERT(k < dk);
- void *a;
- if(n == tsize)
- a = _toright(tsize,data[tsize-1]);
- else {
- ++n;
- a = NULL;
- }
-
- Data *tg = data+ix;
- for(Data *d = data+n-1; d > tg; d--) d[0] = d[-1];
- (*tg)(k,t);
- return a;
- }
-}
-
-void *TableAnyMap::_find(int tsize,size_t k) const
-{
- FLEXT_ASSERT(n);
- if(n < tsize) {
- // fall through
- }
- else if(k < data[0].key)
- return left?left->_find(tsize,k):NULL;
- else if(k > data[n-1].key)
- return right?right->_find(tsize,k):NULL;
-
- const int ix = _tryix(k);
- return ix < n && data[ix].key == k?data[ix].value:NULL;
-}
-
-#ifdef FLEXT_DEBUG
-void TableAnyMap::_check(int tsize)
-{
- FLEXT_ASSERT(n);
-
- size_t k = data[0].key;
- for(int i = 1; i < n; ++i) {
- size_t k2 = data[i].key;
- FLEXT_ASSERT(k < k2);
- k = k2;
- }
-
- if(left || right) FLEXT_ASSERT(n == tsize);
-
- if(left) {
- FLEXT_ASSERT(flext::MemCheck(left));
- left->_check(tsize);
- }
- if(right) {
- FLEXT_ASSERT(flext::MemCheck(right));
- right->_check(tsize);
- }
-}
-#endif
-
-void *TableAnyMap::_remove(int tsize,size_t k)
-{
- FLEXT_ASSERT(n);
- if(n < tsize) {
- // fall through
- }
- else if(k < data[0].key) {
- void *r = left?left->_remove(tsize,k):NULL;
- if(r) _eraseempty(left);
- return r;
- }
- else if(k > data[n-1].key) {
- void *r = right?right->_remove(tsize,k):NULL;
- if(r) _eraseempty(right);
- return r;
- }
-
- const int ix = _tryix(k);
- if(ix >= n || data[ix].key != k)
- return NULL;
- else {
- // found key in this map
- void *ret = data[ix].value;
-
- Data dt;
- bool fnd,ins = false;
- if(n >= tsize) {
- // if this table is full get fill-in elements from branches
- if(left) {
- // try to get biggest element from left branch
- left->_getbig(dt);
- _eraseempty(left);
- fnd = true,ins = true;
- }
- else if(right) {
- // try to get smallest element from right branch
- right->_getsmall(dt);
- _eraseempty(right);
- fnd = true;
- }
- else
- fnd = false;
- }
- else fnd = false;
-
- if(ins) {
- // insert smaller element from left
- for(int i = ix; i; --i) data[i] = data[i-1];
- data[0] = dt;
- }
- else {
- // shift elements
- for(int i = ix+1; i < n; ++i) data[i-1] = data[i];
- // insert bigger element from right or reduce table size
- if(fnd)
- data[n-1] = dt;
- else
- --n;
- }
-
- return ret;
- }
-}
-
-void TableAnyMap::_getbig(Data &dt)
-{
- FLEXT_ASSERT(n);
-
- if(right) {
- right->_getbig(dt);
- _eraseempty(right);
- }
- else {
- dt = data[n-1];
- if(left) {
- for(int i = n-1; i; --i) data[i] = data[i-1];
- left->_getbig(data[0]);
- _eraseempty(left);
- }
- else
- --n;
- }
-}
-
-void TableAnyMap::_getsmall(Data &dt)
-{
- FLEXT_ASSERT(n);
-
- if(left) {
- left->_getsmall(dt);
- _eraseempty(left);
- }
- else {
- dt = data[0];
- for(int i = 1; i < n; ++i) data[i-1] = data[i];
- if(right) {
- right->_getsmall(data[n-1]);
- _eraseempty(right);
- }
- else
- --n;
- }
-}
-
-void TableAnyMap::iterator::forward()
-{
- FLEXT_ASSERT(map || ix >= map->n);
-
- if(++ix >= map->n) {
- TableAnyMap *nmap;
-
- // we reached the end of the slots
- if(map->right) {
- // climb up one
- map = map->right;
- leftmost();
- ix = 0;
- }
- else {
- // fall back
- for(;;) {
- nmap = map->parent;
- if(!nmap) break; // no parent
- if(nmap->left == map) {
- // ok, we are in front of the slots now
- ix = 0;
- map = nmap;
- break;
- }
- else {
- FLEXT_ASSERT(nmap->right == map);
- ix = (map = nmap)->n;
- }
- }
- }
- }
-}
diff --git a/externals/grill/flext/source/flmap.h b/externals/grill/flext/source/flmap.h
deleted file mode 100644
index 796e9549..00000000
--- a/externals/grill/flext/source/flmap.h
+++ /dev/null
@@ -1,255 +0,0 @@
-/*
-
-flext - C++ layer for Max/MSP and pd (pure data) externals
-
-Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-/*! \file flmap.h
- \brief special map class (faster and less memory-consuming than std::map)
-*/
-
-#ifndef __FLMAP_H
-#define __FLMAP_H
-
-#include "flprefix.h"
-
-/*! \defgroup FLEXT_SUPPORT Flext support classes
- @{
-*/
-
-class FLEXT_SHARE TableAnyMap
-{
-public:
-
- virtual TableAnyMap *_newmap(TableAnyMap *parent) = 0;
- virtual void _delmap(TableAnyMap *map) = 0;
-
- struct Data {
- void operator()(size_t k,void *v) { key = k,value = v; }
- void operator =(void *v) { value = v; }
-
- size_t key;
- void *value;
- };
-
-protected:
- // constructor and destructor are protected so that they can't be directly instantiated
-
- TableAnyMap(TableAnyMap *p,Data *dt)
- : data(dt)
- , parent(p),left(0),right(0)
- , n(0)
- {}
-
- virtual ~TableAnyMap();
-
-public:
-
-#if 0 // set 1 for asserting the map structure (very cpu-intensive!)
- void check(int tsize) { if(n) _check(tsize); }
-#else
-// void check(int tsize) {}
-#endif
-
- void *insert(int tsize,size_t k,void *t)
- {
- void *r;
- if(LIKELY(n))
- r = _set(tsize,k,t);
- else {
- data[n++](k,t);
- r = 0;
- }
-// check(tsize);
- return r;
- }
-
- void *find(int tsize,size_t k) const { return LIKELY(n)?_find(tsize,k):0; }
-
- void *remove(int tsize,size_t k)
- {
- void *r = LIKELY(n)?_remove(tsize,k):0;
-// check(tsize);
- return r;
- }
-
- virtual void clear();
-
- class FLEXT_SHARE iterator
- {
- public:
- iterator(): map(0) {}
- iterator(const TableAnyMap &m): map(&m),ix(0) { leftmost(); }
- iterator(const iterator &it): map(it.map),ix(it.ix) {}
-
- iterator &operator =(const iterator &it) { map = it.map,ix = it.ix; return *this; }
-
- operator bool() const { return map && ix < map->n; }
-
- // no checking here!
- void *data() const { return map->data[ix].value; }
- size_t key() const { return map->data[ix].key; }
-
- iterator &operator ++() { forward(); return *this; }
-
- protected:
- void leftmost()
- {
- // search smallest branch (go left as far as possible)
- const TableAnyMap *nmap;
- while((nmap = map->left) != 0) map = nmap;
- }
-
- void forward();
-
- // pointers to map and index within
- const TableAnyMap *map;
- int ix;
- };
-
- void _init(size_t k,void *t) { data[0](k,t); n = 1; }
-
- void *_toleft(int tsize,size_t k,void *t)
- {
- if(left)
- return left->_set(tsize,k,t);
- else {
- (left = _newmap(this))->_init(k,t);
- return 0;
- }
- }
-
- void *_toright(int tsize,size_t k,void *t)
- {
- if(right)
- return right->_set(tsize,k,t);
- else {
- (right = _newmap(this))->_init(k,t);
- return 0;
- }
- }
-
- void *_toleft(int tsize,Data &v) { return _toleft(tsize,v.key,v.value); }
- void *_toright(int tsize,Data &v) { return _toright(tsize,v.key,v.value); }
-
- void *_set(int tsize,size_t k,void *t);
- void *_find(int tsize,size_t k) const;
- void *_remove(int tsize,size_t k);
-
-#ifdef FLEXT_DEBUG
- void _check(int tsize);
-#endif
-
- Data *data;
- TableAnyMap *parent,*left,*right;
- int n;
-
- //! return index of data item with key <= k
- //! \note index can point past the last item!
- unsigned int _tryix(size_t k) const
- {
- unsigned int ix = 0,b = n;
- while(ix != b) {
- const unsigned int c = (ix+b)>>1;
- const size_t dk = data[c].key;
- if(k == dk)
- return c;
- else if(k < dk)
- b = c;
- else if(ix < c)
- ix = c;
- else
- return b;
- }
- return ix;
- }
-
- void _eraseempty(TableAnyMap *&b)
- {
- if(!b->n) {
- // remove empty branch
- _delmap(b); b = 0;
- }
- }
-
- void _getsmall(Data &dt);
- void _getbig(Data &dt);
-
-private:
- // hide, so that it can't be used.....
- explicit TableAnyMap(const TableAnyMap &): data(NULL) {}
- TableAnyMap &operator =(const TableAnyMap &) { return *this; }
-};
-
-template <typename K,typename T,int N = 8>
-class TablePtrMap
- :
-#if (defined(_MSC_VER) && _MSC_VER < 1300) || defined(__BORLANDC__) || defined(__MWERKS__)
- public // necessary for VC6
-#endif
- TableAnyMap
-{
-public:
- TablePtrMap(): TableAnyMap(0,slots),count(0) {}
- virtual ~TablePtrMap() { clear(); }
-
- virtual void clear() { TableAnyMap::clear(); count = 0; }
-
- inline int size() const { return count; }
-
- inline T insert(K k,T t)
- {
- void *d = TableAnyMap::insert(N,*(size_t *)&k,(void *)t);
- if(!d) ++count;
- return (T)d;
- }
-
- inline T find(K k) const { return (T)TableAnyMap::find(N,*(size_t *)&k); }
-
- inline T remove(K k)
- {
- void *d = TableAnyMap::remove(N,*(size_t *)&k);
- if(LIKELY(d)) --count;
- return (T)d;
- }
-
-
- class iterator
- : TableAnyMap::iterator
- {
- public:
- iterator() {}
- iterator(const TablePtrMap &m): TableAnyMap::iterator(m) {}
- iterator(const iterator &it): TableAnyMap::iterator(it) {}
-
- // this ugly syntax (cast to parent class) is needed for MSVC6
-
- inline iterator &operator =(const iterator &it) { ((TableAnyMap::iterator &)*this) = it; return *this; }
-
- inline operator bool() const { return (bool)((TableAnyMap::iterator &)*this); }
- inline T data() const { return (T)(((TableAnyMap::iterator &)*this).data()); }
- inline K key() const { return (K)(((TableAnyMap::iterator &)*this).key()); }
-
- inline iterator &operator ++() { ++((TableAnyMap::iterator &)*this); return *this; }
- };
-
-protected:
- TablePtrMap(TableAnyMap *p): TableAnyMap(p,slots),count(0) {}
-
- virtual TableAnyMap *_newmap(TableAnyMap *parent) { return new TablePtrMap(parent); }
- virtual void _delmap(TableAnyMap *map) { delete (TablePtrMap *)map; }
-
- int count;
- Data slots[N];
-
-private:
- explicit TablePtrMap(const TableAnyMap &p) {}
-};
-
-//! @} // FLEXT_SUPPORT
-
-#endif
diff --git a/externals/grill/flext/source/flmeth.cpp b/externals/grill/flext/source/flmeth.cpp
deleted file mode 100644
index 6355dd08..00000000
--- a/externals/grill/flext/source/flmeth.cpp
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
-
-flext - C++ layer for Max/MSP and pd (pure data) externals
-
-Copyright (c) 2001-2006 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-/*! \file flmeth.cpp
- \brief Method processing of flext base class.
-*/
-
-#include "flext.h"
-#include <string.h>
-#include <stdarg.h>
-#include "flinternal.h"
-
-flext_base::MethItem::MethItem(AttrItem *conn):
- Item(conn),index(0),
- argc(0),args(NULL)
- ,fun(NULL)
-{}
-
-flext_base::MethItem::~MethItem()
-{
- if(args) delete[] args;
-}
-
-void flext_base::MethItem::SetArgs(methfun _fun,int _argc,metharg *_args)
-{
- fun = _fun;
- if(args) delete[] args;
- argc = _argc,args = _args;
-}
-
-/*! \brief Add a method to the queue
-*/
-void flext_base::AddMethod(ItemCont *ma,int inlet,const t_symbol *tag,methfun fun,metharg tp,...)
-{
-#ifdef FLEXT_LOG_MSGS
- post("addmethod %i:%s",inlet,GetString(tag));
-#endif
-
- va_list marker;
-
- // at first just count the arg type list (in argc)
- int argc = 0;
- va_start(marker,tp);
- metharg *args = NULL,arg = tp;
- for(; arg != a_null; ++argc) arg = (metharg)va_arg(marker,int); //metharg);
- va_end(marker);
-
- if(argc > 0) {
- if(argc > FLEXT_MAXMETHARGS) {
- error("flext - method %s: only %i arguments are type-checkable: use variable argument list for more",tag?GetString(tag):"?",FLEXT_MAXMETHARGS);
- argc = FLEXT_MAXMETHARGS;
- }
-
- args = new metharg[argc];
-
- va_start(marker,tp);
- metharg a = tp;
- for(int ix = 0; ix < argc; ++ix) {
-#ifdef FLEXT_DEBUG
- if(a == a_list && ix > 0) {
- ERRINTERNAL();
- }
-#endif
-#if FLEXT_SYS == FLEXT_SYS_PD && defined(FLEXT_COMPATIBLE)
- if(a == a_pointer) {
- post("Pointer arguments are not allowed in compatibility mode");
- }
-#endif
- args[ix] = a;
- a = (metharg)va_arg(marker,int); //metharg);
- }
- va_end(marker);
- }
-
- MethItem *mi = new MethItem;
- mi->index = ma->Members();
- mi->SetArgs(fun,argc,args);
- ma->Add(mi,tag,inlet);
-}
-
-void flext_base::ListMethods(AtomList &la,int inlet) const
-{
- typedef TablePtrMap<int,const t_symbol *,32> MethList;
- MethList list[2];
- ItemCont *clmethhead = ClMeths(thisClassId());
-
- int i;
- for(i = 0; i <= 1; ++i) {
- ItemCont *a = i?methhead:clmethhead;
- if(a && a->Contained(inlet)) {
- ItemSet &ai = a->GetInlet(inlet);
- for(ItemSet::iterator as(ai); as; ++as) {
- for(Item *al = as.data(); al; al = al->nxt) {
- MethItem *aa = (MethItem *)al;
- // check it's not related to an attribute
- if(!aa->IsAttr()) {
- list[i].insert(aa->index,as.key());
- break;
- }
- }
- }
- }
- }
-
- la((int)list[0].size()+(int)list[1].size());
- int ix = 0;
- for(i = 0; i <= 1; ++i)
- for(MethList::iterator it(list[i]); it; ++it)
- SetSymbol(la[ix++],it.data());
-}
-
-bool flext_base::cb_ListMethods(flext_base *c,int argc,const t_atom *argv)
-{
- if(c->HasAttributes() && (argc == 0 || (argc == 1 && CanbeInt(argv[0])))) {
- // defined in flsupport.cpp
- int inlet = argc?GetAInt(argv[0]):0;
- AtomListStatic<32> la;
- c->ListMethods(la,inlet);
- c->ToOutAnything(c->GetOutAttr(),sym_methods,la.Count(),la.Atoms());
- return true;
- }
- else
- return false;
-}
-
diff --git a/externals/grill/flext/source/flmsg.cpp b/externals/grill/flext/source/flmsg.cpp
deleted file mode 100644
index 1d42b5fb..00000000
--- a/externals/grill/flext/source/flmsg.cpp
+++ /dev/null
@@ -1,295 +0,0 @@
-/*
-
-flext - C++ layer for Max/MSP and pd (pure data) externals
-
-Copyright (c) 2001-2006 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-/*! \file flmsg.cpp
- \brief Message processing of flext base class.
-*/
-
-#include "flext.h"
-
-
-bool flext_base::TryMethTag(Item *lst,const t_symbol *tag,int argc,const t_atom *argv)
-{
- for(; lst; lst = lst->nxt) {
- MethItem *m = (MethItem *)lst;
-
-// FLEXT_LOG3("found method tag %s: inlet=%i, argc=%i",GetString(tag),m->inlet,argc);
-
- if(m->attr) {
- // attributes are treated differently
-
- if(m->attr->IsGet())
- return DumpAttrib(tag,m->attr);
- else
- return SetAttrib(tag,m->attr,argc,argv);
- }
- else {
- if(m->argc == 1) {
- if(m->args[0] == a_list) {
- // try list
- if(((methfun_V)m->fun)(this,argc,const_cast<t_atom *>(argv))) return true;
- }
- else if(m->args[0] == a_any) {
- // try anything
- if(((methfun_A)m->fun)(this,tag,argc,const_cast<t_atom *>(argv))) return true;
- }
- }
-
- // try matching number of args
- if(m->argc == argc) {
- int ix;
- t_any aargs[FLEXT_MAXMETHARGS];
- bool ok = true;
- for(ix = 0; ix < argc && ok; ++ix) {
- switch(m->args[ix]) {
- case a_float: {
- if(IsFloat(argv[ix])) aargs[ix].ft = GetFloat(argv[ix]);
- else if(IsInt(argv[ix])) aargs[ix].ft = (float)GetInt(argv[ix]);
- else ok = false;
-
- if(ok) FLEXT_LOG2("int arg %i = %f",ix,aargs[ix].ft);
- break;
- }
- case a_int: {
- if(IsFloat(argv[ix])) aargs[ix].it = (int)GetFloat(argv[ix]);
- else if(IsInt(argv[ix])) aargs[ix].it = GetInt(argv[ix]);
- else ok = false;
-
- if(ok) FLEXT_LOG2("float arg %i = %i",ix,aargs[ix].it);
- break;
- }
- case a_symbol: {
- if(IsSymbol(argv[ix])) aargs[ix].st = GetSymbol(argv[ix]);
- else ok = false;
-
- if(ok) FLEXT_LOG2("symbol arg %i = %s",ix,GetString(aargs[ix].st));
- break;
- }
-#if FLEXT_SYS == FLEXT_SYS_PD
- case a_pointer: {
- if(IsPointer(argv[ix])) aargs[ix].pt = (t_gpointer *)GetPointer(argv[ix]);
- else ok = false;
- break;
- }
-#endif
- default:
- error("Argument type illegal");
- ok = false;
- }
- }
-
- if(ok && ix == argc) {
- switch(argc) {
- case 0: return ((methfun_0)m->fun)(this);
- case 1: return ((methfun_1)m->fun)(this,aargs[0]);
- case 2: return ((methfun_2)m->fun)(this,aargs[0],aargs[1]);
- case 3: return ((methfun_3)m->fun)(this,aargs[0],aargs[1],aargs[2]);
- case 4: return ((methfun_4)m->fun)(this,aargs[0],aargs[1],aargs[2],aargs[3]);
- case 5: return ((methfun_5)m->fun)(this,aargs[0],aargs[1],aargs[2],aargs[3],aargs[4]);
- default:
- FLEXT_ASSERT(false);
- }
- }
- }
- }
- }
- return false;
-}
-
-
-bool flext_base::TryMethAny(Item *lst,const t_symbol *s,int argc,const t_atom *argv)
-{
- for(; lst; lst = lst->nxt) {
- MethItem *m = (MethItem *)lst;
-
- if(!m->IsAttr() && m->argc == 1 && m->args[0] == a_any) {
-// FLEXT_LOG4("found any method for %s: inlet=%i, symbol=%s, argc=%i",GetString(m->tag),m->inlet,GetString(s),argc);
-
- if(((methfun_A)m->fun)(this,s,argc,const_cast<t_atom *>(argv))) return true;
- }
- }
- return false;
-}
-
-/*! \brief Find a method item for a specific tag and arguments
- \remark All attributes are also stored in the method list and retrieved by a member of the method item
-*/
-bool flext_base::FindMeth(int inlet,const t_symbol *s,int argc,const t_atom *argv)
-{
- Item *lst;
- ItemCont *clmethhead = ClMeths(thisClassId());
-
- // search for exactly matching tag
- if(UNLIKELY(methhead) && (lst = methhead->FindList(s,inlet)) != NULL && TryMethTag(lst,s,argc,argv)) return true;
- if((lst = clmethhead->FindList(s,inlet)) != NULL && TryMethTag(lst,s,argc,argv)) return true;
-
- // if nothing found try any inlet
- if(UNLIKELY(methhead) && (lst = methhead->FindList(s,-1)) != NULL && TryMethTag(lst,s,argc,argv)) return true;
- if((lst = clmethhead->FindList(s,-1)) != NULL && TryMethTag(lst,s,argc,argv)) return true;
-
- return false;
-}
-
-bool flext_base::FindMethAny(int inlet,const t_symbol *s,int argc,const t_atom *argv)
-{
- Item *lst;
- ItemCont *clmethhead = ClMeths(thisClassId());
-
- if(UNLIKELY(methhead) && (lst = methhead->FindList(sym_anything,inlet)) != NULL && TryMethAny(lst,s,argc,argv)) return true;
- if((lst = clmethhead->FindList(sym_anything,inlet)) != NULL && TryMethAny(lst,s,argc,argv)) return true;
-
- // if nothing found try any inlet
- if(UNLIKELY(methhead) && (lst = methhead->FindList(sym_anything,-1)) != NULL && TryMethAny(lst,s,argc,argv)) return true;
- if((lst = clmethhead->FindList(sym_anything,-1)) != NULL && TryMethAny(lst,s,argc,argv)) return true;
-
- return false;
-}
-
-/*! \brief All the message processing
- The messages of all the inlets go here and are promoted to the registered callback functions
-*/
-bool flext_base::CbMethodHandler(int inlet,const t_symbol *s,int argc,const t_atom *argv)
-{
- static bool trap = false;
- bool ret;
-
- curtag = s;
-
-#ifdef FLEXT_LOG_MSGS
- post("methodmain inlet:%i args:%i symbol:%s",inlet,argc,s?GetString(s):"");
-#endif
-
- try {
- ret = FindMeth(inlet,s,argc,argv);
-#ifdef FLEXT_LOG_MSGS
- if(ret) post("found %s message in %s,%i",GetString(s),__FILE__,__LINE__);
-#endif
- if(ret) goto end;
-
- if(argc == 1) {
- if(s == sym_list) {
- // for 1-element lists try the single atom (this is the format output by [route])
- if(IsFloat(argv[0]))
- ret = FindMeth(inlet,sym_float,1,argv);
- else if(IsInt(argv[0]))
- ret = FindMeth(inlet,sym_int,1,argv);
- else if(IsSymbol(argv[0]))
- ret = FindMeth(inlet,sym_symbol,1,argv);
- #if FLEXT_SYS == FLEXT_SYS_PD && !defined(FLEXT_COMPATIBLE)
- else if(IsPointer(argv[0]))
- ret = FindMeth(inlet,sym_pointer,1,argv);
- #endif
- if(ret) goto end;
- }
- else {
- if(s == sym_float) {
- #if FLEXT_SYS == FLEXT_SYS_MAX
- t_atom at;
- // If float message is not explicitly handled: try int handler instead
- SetInt(at,(int)GetFloat(argv[0]));
- ret = FindMeth(inlet,sym_int,1,&at);
- if(ret) goto end;
- #endif
- // If not explicitly handled: try list handler instead
- ret = FindMeth(inlet,sym_list,1,argv);
- if(ret) goto end;
- }
- #if FLEXT_SYS == FLEXT_SYS_MAX
- else if(s == sym_int) {
- t_atom at;
- // If int message is not explicitly handled: try float handler instead
- SetFloat(at,(float)GetInt(argv[0]));
- ret = FindMeth(inlet,sym_float,1,&at);
- if(ret) goto end;
- // If not explicitly handled: try list handler instead
- ret = FindMeth(inlet,sym_list,1,argv);
- if(ret) goto end;
- }
- #endif
- else if(s == sym_symbol) {
- ret = FindMeth(inlet,sym_list,1,argv);
- if(ret) goto end;
- }
- #if FLEXT_SYS == FLEXT_SYS_PD && !defined(FLEXT_COMPATIBLE)
- else if(s == sym_pointer) {
- ret = FindMeth(inlet,sym_list,1,argv);
- if(ret) goto end;
- }
- #endif
- }
- }
- else if(argc == 0) {
- // If symbol message (pure anything without args) is not explicitly handled: try list handler instead
- t_atom at;
- SetSymbol(at,s);
- ret = FindMeth(inlet,sym_list,1,&at);
-#ifdef FLEXT_LOG_MSGS
- if(ret) post("found %s message in %s,%i",GetString(sym_list),__FILE__,__LINE__);
-#endif
- if(ret) goto end;
- }
-
- // if distmsgs is switched on then distribute list elements over inlets (Max/MSP behavior)
- if(DoDist() && inlet == 0 && s == sym_list && insigs <= 1 && !trap) {
- int i = incnt;
- if(i > argc) i = argc;
- for(--i; i >= 0; --i) { // right to left distribution
- const t_symbol *sym = NULL;
- if(IsFloat(argv[i])) sym = sym_float;
- else if(IsInt(argv[i])) sym = sym_int;
- else if(IsSymbol(argv[i])) sym = sym_symbol;
- #if FLEXT_SYS == FLEXT_SYS_PD && !defined(FLEXT_COMPATIBLE)
- else if(IsPointer(argv[i])) sym = sym_pointer; // can pointer atoms occur here?
- #endif
-
- if(sym) {
- trap = true;
- CbMethodHandler(i,sym,1,argv+i);
- trap = false;
- }
- }
-
- goto end;
- }
-
- ret = FindMethAny(inlet,s,argc,argv);
-
- if(!ret) ret = CbMethodResort(inlet,s,argc,argv);
- }
- catch(std::exception &x) {
- error("%s - %s: %s",thisName(),GetString(s),x.what());
- ret = false;
- }
- catch(const char *txt) {
- error("%s - %s: %s",thisName(),GetString(s),txt);
- ret = false;
- }
- catch(...) {
- error("%s - %s : Unknown exception while processing method",thisName(),GetString(s));
- ret = false;
- }
-
-end:
- curtag = NULL;
-
- return ret; // true if appropriate handler was found and called
-}
-
-bool flext_base::m_method_(int inlet,const t_symbol *s,int argc,const t_atom *argv)
-{
- post("%s: message unhandled - inlet:%i args:%i symbol:%s",thisName(),inlet,argc,s?GetString(s):"");
- return false;
-}
-
-bool flext_base::CbMethodResort(int inlet,const t_symbol *s,int argc,const t_atom *argv)
-{
- // call deprecated version
- return m_method_(inlet,s,argc,argv);
-}
diff --git a/externals/grill/flext/source/flmspbuffer.h b/externals/grill/flext/source/flmspbuffer.h
deleted file mode 100644
index 7810e7bc..00000000
--- a/externals/grill/flext/source/flmspbuffer.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
-
-flext - C++ layer for Max/MSP and pd (pure data) externals
-
-Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-/*! \file flmspbuffer.h
- \brief Definition of the Max/MSP buffer structure
- \internal
-
- This file comes from David Zicarellis inofficial package index.sit
- The latter is not easily found so i included the original file buffer.h with flext
-*/
-
-#if (FLEXT_SYS == FLEXT_SYS_MAX) && !defined(__FLEXT_MSPBUFFER_H)
-#define __FLEXT_MSPBUFFER_H
-
-enum {
- MAXCHAN = 4
-};
-
-enum {
- bi_basefreq = 0,
- bi_detune,
- bi_lowfreq,
- bi_hifreq,
- bi_lowvel,
- bi_hivel,
- bi_gain,
- bi_numparams
-};
-
-typedef struct _buffer
-{
- t_object b_obj; // doesn't have any signals so it doesn't need to be pxobject
- long b_valid; // flag is off during read replacement or editing operation
- float *b_samples; // stored with interleaved channels if multi-channel
- long b_frames; // number of sample frames (each one is sizeof(float) * b_nchans bytes)
- long b_nchans; // number of channels
- long b_size; // size of buffer in floats
- float b_sr; // sampling rate of the buffer
- float b_1oversr; // 1 / sr
- float b_msr; // sr * .001
- // Mac-specific stuff
- float *b_memory; // pointer to where memory starts (initial padding for interp)
- t_symbol *b_name;
- short b_vol;
- short b_space;
- // looping info (from AIFF file)
- long b_susloopstart; // in samples
- long b_susloopend; // in samples
- long b_relloopstart; // in samples
- long b_relloopend; // in samples
- // instrument info (from AIFF file)
- short b_inst[bi_numparams];
- // window stuff
- void *b_wind;
- double b_pixperfr;
- double b_frperpix;
- long b_imagesize;
- Point b_scroll;
- long b_scrollscale;
- long b_selbegin[MAXCHAN];
- long b_selend[MAXCHAN];
- long b_zoom;
- long b_zim[11];
- void *b_mouseout;
- long b_format; // 'AIFF' or 'Sd2f'
- t_symbol *b_filename; // last file read (not written) for readagain message
- long b_oldnchans; // used for resizing window in case of # of channels change
- void *b_doneout;
- long b_outputbytes; // number of bytes used for output sample (1-4)
- long b_modtime; // last modified time ("dirty" method)
-} t_buffer;
-
-#define BUFWIND(x) ((t_wind *)(x->b_wind))
-
-
-#endif
diff --git a/externals/grill/flext/source/flout.cpp b/externals/grill/flext/source/flout.cpp
deleted file mode 100644
index dae256a7..00000000
--- a/externals/grill/flext/source/flout.cpp
+++ /dev/null
@@ -1,332 +0,0 @@
-/*
-
-flext - C++ layer for Max/MSP and pd (pure data) externals
-
-Copyright (c) 2001-2006 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-/*! \file flout.cpp
- \brief Implementation of the flext outlet functionality.
-*/
-
-#include "flext.h"
-#include "flinternal.h"
-#include <string.h>
-
-#if FLEXT_SYS == FLEXT_SYS_PD || FLEXT_SYS == FLEXT_SYS_MAX
-void flext_base::ToSysAtom(int n,const t_atom &at) const
-{
- outlet *o = GetOut(n);
- if(LIKELY(o)) {
- CRITON();
- if(IsSymbol(at))
- outlet_symbol((t_outlet *)o,const_cast<t_symbol *>(GetSymbol(at)));
- else if(IsFloat(at))
- outlet_float((t_outlet *)o,GetFloat(at));
-#if FLEXT_SYS == FLEXT_SYS_MAX
- else if(IsInt(at))
- outlet_flint((t_outlet *)o,GetInt(at));
-#endif
-#if FLEXT_SYS == FLEXT_SYS_PD
- else if(IsPointer(at))
- outlet_pointer((t_outlet *)o,GetPointer(at));
-#endif
- else
- error("Atom type not supported");
- CRITOFF();
- }
-}
-#else
-#error Not implemented
-#endif
-
-#if defined(FLEXT_THREADS)
- #if FLEXT_QMODE == 2
- #define CHKTHR() (LIKELY((IsSystemThread() || IsThread(flext::thrmsgid)) && !InDSP()))
- #else
- #define CHKTHR() (LIKELY(IsSystemThread() && !InDSP()))
- #endif
-#else
- #define CHKTHR() (LIKELY(!InDSP()))
-#endif
-
-void flext_base::ToOutBang(int n) const { if(CHKTHR()) ToSysBang(n); else ToQueueBang(n); }
-void flext_base::ToOutFloat(int n,float f) const { if(CHKTHR()) ToSysFloat(n,f); else ToQueueFloat(n,f); }
-void flext_base::ToOutInt(int n,int f) const { if(CHKTHR()) ToSysInt(n,f); else ToQueueInt(n,f); }
-void flext_base::ToOutSymbol(int n,const t_symbol *s) const { if(CHKTHR()) ToSysSymbol(n,s); else ToQueueSymbol(n,s); }
-void flext_base::ToOutAtom(int n,const t_atom &at) const { if(CHKTHR()) ToSysAtom(n,at); else ToQueueAtom(n,at); }
-void flext_base::ToOutList(int n,int argc,const t_atom *argv) const { if(CHKTHR()) ToSysList(n,argc,argv); else ToQueueList(n,argc,argv); }
-void flext_base::ToOutAnything(int n,const t_symbol *s,int argc,const t_atom *argv) const { if(CHKTHR()) ToSysAnything(n,s,argc,argv); else ToQueueAnything(n,s,argc,argv); }
-
-void flext::ToOutMsg(MsgBundle *mb) { if(CHKTHR()) ToSysMsg(mb); else ToQueueMsg(mb); }
-
-bool flext::Forward(const t_symbol *recv,const t_symbol *s,int argc,const t_atom *argv)
-{
- return CHKTHR()?SysForward(recv,s,argc,argv):QueueForward(recv,s,argc,argv);
-}
-
-
-bool flext_base::InitInlets()
-{
- bool ok = true;
-
- // incnt has number of inlets (any type)
- // insigs should be 0
-
- FLEXT_ASSERT(!insigs && !inlets);
-
- // ----------------------------------
- // create inlets
- // ----------------------------------
-
-#if FLEXT_SYS == FLEXT_SYS_MAX
- // copy inlet descriptions
- indesc = new char *[incnt];
- for(int i = 0; i < incnt; ++i) {
- xlet &x = inlist[i];
- indesc[i] = x.desc;
- x.desc = NULL;
- }
-#endif
-
-#if FLEXT_SYS == FLEXT_SYS_PD || FLEXT_SYS == FLEXT_SYS_MAX
- inlets = incnt > 1?new px_object *[incnt]:NULL;
-#endif
-
- // type info is now in list array
-#if FLEXT_SYS == FLEXT_SYS_PD
- {
- int cnt = 0;
- if(incnt >= 1) {
- xlet &xi = inlist[0]; // points to first inlet
- if(xi.tp == xlet_sig) ++insigs;
- // else leftmost inlet is already there...
- ++cnt;
-
-#if PD_MINOR_VERSION >= 37 && defined(PD_DEVEL_VERSION)
- // set tooltip
-// this is on a per-class basis... we cannot really use it here
-// if(xi.desc && *xi.desc) class_settip(thisClass(),gensym(xi.desc));
-#endif
- }
-
- for(int ix = 1; ix < incnt; ++ix,++cnt) {
- xlet &xi = inlist[ix]; // points to first inlet
- t_inlet *in = NULL;
- switch(xi.tp) {
- case xlet_float:
- case xlet_int: {
- if(ix > 9) {
- // proxy inlet needed
- (inlets[ix-1] = (px_object *)pd_new(px_class))->init(this,ix); // proxy for 2nd inlet messages
- in = inlet_new(&x_obj->obj,&inlets[ix-1]->obj.ob_pd, (t_symbol *)sym_float, (t_symbol *)sym_float);
- }
- else {
- inlets[ix-1] = NULL;
- static char sym[] = " ft ?";
- sym[4] = '0'+ix;
- in = inlet_new(&x_obj->obj, &x_obj->obj.ob_pd, (t_symbol *)sym_float, gensym(sym));
- }
- break;
- }
- case xlet_sym:
- (inlets[ix-1] = (px_object *)pd_new(px_class))->init(this,ix); // proxy for 2nd inlet messages
- in = inlet_new(&x_obj->obj,&inlets[ix-1]->obj.ob_pd, (t_symbol *)sym_symbol, (t_symbol *)sym_symbol);
- break;
- case xlet_list:
- (inlets[ix-1] = (px_object *)pd_new(px_class))->init(this,ix); // proxy for 2nd inlet messages
- in = inlet_new(&x_obj->obj,&inlets[ix-1]->obj.ob_pd, (t_symbol *)sym_list, (t_symbol *)sym_list);
- break;
- case xlet_any:
- (inlets[ix-1] = (px_object *)pd_new(px_class))->init(this,ix); // proxy for 2nd inlet messages
- in = inlet_new(&x_obj->obj,&inlets[ix-1]->obj.ob_pd, 0, 0);
- break;
- case xlet_sig:
- inlets[ix-1] = NULL;
-#ifdef FLEXT_COMPATIBLE
- if(inlist[ix-1].tp != xlet_sig) {
- post("%s: All signal inlets must be left-aligned in compatibility mode",thisName());
- ok = false;
- }
- else
-#endif
- {
- // pd is not able to handle signals and messages into the same inlet...
- in = inlet_new(&x_obj->obj, &x_obj->obj.ob_pd, (t_symbol *)sym_signal, (t_symbol *)sym_signal);
- ++insigs;
- }
- break;
- default:
- inlets[ix-1] = NULL;
- error("%s: Wrong type for inlet #%i: %i",thisName(),ix,(int)inlist[ix].tp);
- ok = false;
- }
-
-#if PD_MINOR_VERSION >= 37 && defined(PD_DEVEL_VERSION)
- // set tooltip
- if(in && xi.desc && *xi.desc) inlet_settip(in,gensym(xi.desc));
-#endif
- }
-
- incnt = cnt;
- }
-#elif FLEXT_SYS == FLEXT_SYS_MAX
- {
- int ix,cnt;
- // count leftmost signal inlets
- while(insigs < incnt && inlist[insigs].tp == xlet_sig) ++insigs;
-
- for(cnt = 0,ix = incnt-1; ix >= insigs; --ix,++cnt) {
- xlet &xi = inlist[ix];
- if(ix == 0) {
- if(xi.tp != xlet_any) {
- error("%s: Leftmost inlet must be of type signal or anything",thisName());
- ok = false;
- }
- }
- else {
- switch(xi.tp) {
- case xlet_sig:
- inlets[ix-1] = NULL;
- error("%s: All signal inlets must be left-aligned",thisName());
- ok = false;
- break;
- case xlet_float: {
- if(ix < 10) {
- inlets[ix-1] = NULL;
- floatin(x_obj,ix);
- break;
- }
- else
- goto makeproxy;
- }
- case xlet_int: {
- if(ix < 10) {
- inlets[ix-1] = NULL;
- intin(x_obj,ix);
- break;
- }
- else
- goto makeproxy;
- }
- makeproxy:
- case xlet_any: // non-leftmost
- case xlet_sym:
- case xlet_list:
- inlets[ix-1] = (px_object *)proxy_new(x_obj,ix,&((flext_hdr *)x_obj)->curinlet);
- break;
- default:
- inlets[ix-1] = NULL;
- error("%s: Wrong type for inlet #%i: %i",thisName(),ix,(int)xi.tp);
- ok = false;
- }
- }
- }
-
- while(ix > 0) inlets[ix--] = NULL;
- }
-#else
-#error
-#endif
-
- return ok;
-}
-
-bool flext_base::InitOutlets()
-{
- bool ok = true;
- int procattr = HasAttributes()?1:0;
-
- // outcnt has number of inlets (any type)
- // outsigs should be 0
-
- FLEXT_ASSERT(outsigs == 0);
-
- // ----------------------------------
- // create outlets
- // ----------------------------------
-
-#if FLEXT_SYS == FLEXT_SYS_MAX
- // for Max/MSP the rightmost outlet has to be created first
- outlet *attrtmp = NULL;
- if(procattr)
- attrtmp = (outlet *)newout_anything(thisHdr());
-#endif
-
-#if FLEXT_SYS == FLEXT_SYS_MAX
- // copy outlet descriptions
- outdesc = new char *[outcnt];
- for(int i = 0; i < outcnt; ++i) {
- xlet &xi = outlist[i];
- outdesc[i] = xi.desc;
- xi.desc = NULL;
- }
-#endif
-
-#if FLEXT_SYS == FLEXT_SYS_PD || FLEXT_SYS == FLEXT_SYS_MAX
- if(outcnt+procattr)
- outlets = new outlet *[outcnt+procattr];
- else
- outlets = NULL;
-
- // type info is now in list array
-#if FLEXT_SYS == FLEXT_SYS_PD
- for(int ix = 0; ix < outcnt; ++ix)
-#elif FLEXT_SYS == FLEXT_SYS_MAX
- for(int ix = outcnt-1; ix >= 0; --ix)
-#else
-#error
-#endif
- {
- switch(outlist[ix].tp) {
- case xlet_float:
- outlets[ix] = (outlet *)newout_float(&x_obj->obj);
- break;
- case xlet_int:
- outlets[ix] = (outlet *)newout_flint(&x_obj->obj);
- break;
- case xlet_sig:
- outlets[ix] = (outlet *)newout_signal(&x_obj->obj);
- ++outsigs;
- break;
- case xlet_sym:
- outlets[ix] = (outlet *)newout_symbol(&x_obj->obj);
- break;
- case xlet_list:
- outlets[ix] = (outlet *)newout_list(&x_obj->obj);
- break;
- case xlet_any:
- outlets[ix] = (outlet *)newout_anything(&x_obj->obj);
- break;
-#ifdef FLEXT_DEBUG
- default:
- ERRINTERNAL();
- ok = false;
-#endif
- }
- }
-#else
-#error
-#endif
-
-#if FLEXT_SYS == FLEXT_SYS_PD || FLEXT_SYS == FLEXT_SYS_MAX
- if(procattr) {
- // attribute dump outlet is the last one
- outlets[outcnt] =
-#if FLEXT_SYS == FLEXT_SYS_PD
- // attribute dump outlet is the last one
- (outlet *)newout_anything(&x_obj->obj);
-#elif FLEXT_SYS == FLEXT_SYS_MAX
- attrtmp;
-#endif
-
- }
-#endif
-
- return ok;
-}
-
-
diff --git a/externals/grill/flext/source/flprefix.h b/externals/grill/flext/source/flprefix.h
deleted file mode 100644
index 094dacf7..00000000
--- a/externals/grill/flext/source/flprefix.h
+++ /dev/null
@@ -1,433 +0,0 @@
-/*
-
-flext - C++ layer for Max/MSP and pd (pure data) externals
-
-Copyright (c) 2001-2006 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-/*! \file flprefix.h
- \brief Try to find out the platform.
-*/
-
-#ifndef __FLEXT_PREFIX_H
-#define __FLEXT_PREFIX_H
-
-// --- definitions for FLEXT_SYS ---------------------
-#define FLEXT_SYS_UNKNOWN 0
-
-#ifndef FLEXT_SYS_MAX
- #define FLEXT_SYS_MAX 1
-#else
- // already defined
- #undef FLEXT_SYS_MAX
- #define FLEXT_SYS_MAX 1
- #define FLEXT_SYS FLEXT_SYS_MAX
-#endif
-
-#ifndef FLEXT_SYS_PD
- #define FLEXT_SYS_PD 2
-#else
- // already defined
- #undef FLEXT_SYS_PD
- #define FLEXT_SYS_PD 2
- #define FLEXT_SYS FLEXT_SYS_PD
-#endif
-
-#ifndef FLEXT_SYS_JMAX
- #define FLEXT_SYS_JMAX 3
-#else
- // already defined
- #undef FLEXT_SYS_JMAX
- #define FLEXT_SYS_JMAX 3
- #define FLEXT_SYS FLEXT_SYS_JMAX
-#endif
-
-// --- definitions for FLEXT_OS ----------------------
-#define FLEXT_OS_UNKNOWN 0
-#define FLEXT_OS_WIN 1
-#define FLEXT_OS_MAC 2
-#define FLEXT_OS_LINUX 3
-#define FLEXT_OS_IRIX 4
-
-// --- definitions for FLEXT_OS_API ---------------------
-#define FLEXT_OSAPI_UNKNOWN 0
-
-#define FLEXT_OSAPI_UNIX_POSIX 1
-
-#define FLEXT_OSAPI_MAC_CLASSIC 2
-#define FLEXT_OSAPI_MAC_CARBON 3
-#define FLEXT_OSAPI_MAC_MACH 4
-
-#define FLEXT_OSAPI_WIN_NATIVE 5 // WIN32 Platform
-#define FLEXT_OSAPI_WIN_POSIX 6 // POSIX API (e.g. cygwin)
-
-// --- definitions for FLEXT_CPU ---------------------
-#define FLEXT_CPU_UNKNOWN 0
-#define FLEXT_CPU_IA32 1
-#define FLEXT_CPU_PPC 2
-#define FLEXT_CPU_MIPS 3
-#define FLEXT_CPU_ALPHA 4
-
-#define FLEXT_CPU_IA64 5 // Itanium
-#define FLEXT_CPU_X86_64 6 // AMD-K8, EMT64
-
-// compatibility
-#define FLEXT_CPU_INTEL FLEXT_CPU_IA32
-
-// --- definitions for FLEXT_THREADS -----------------
-#define FLEXT_THR_POSIX 1 // pthreads
-#define FLEXT_THR_WIN32 2 // Win32 native
-#define FLEXT_THR_MP 3 // MacOS MPThreads
-
-// ---------------------------------------------------
-// support old definitions
-
-#ifndef FLEXT_SYS
- #if defined(MAXMSP)
- #define FLEXT_SYS FLEXT_SYS_MAX
- // #undef MAXMSP
- #elif defined(PD)
- #define FLEXT_SYS FLEXT_SYS_PD
- // #undef PD
- // #undef NT
- #endif
-#endif
-
-#if defined(_DEBUG) && !defined(FLEXT_DEBUG)
- #define FLEXT_DEBUG
-#endif
-
-// ---------------------------------------------------
-
-// Definition of supported real-time systems
-#if FLEXT_SYS == FLEXT_SYS_MAX
-#elif FLEXT_SYS == FLEXT_SYS_PD
-#elif FLEXT_SYS == FLEXT_SYS_JMAX
-#else
- #error "System must be defined by either FLEXT_SYS_MAX, FLEXT_SYS_PD or FLEXT_SYS_JMAX"
-#endif
-
-// Definition of OS/CPU
-#if defined(_MSC_VER) || (defined(__ICC) && (FLEXT_OS == FLEXT_OS_WIN || defined(_WIN32)))
- // Microsoft C++
- // and Intel C++ (as guessed)
-
- #ifndef FLEXT_CPU
- #if defined(_M_AMD64)
- #define FLEXT_CPU FLEXT_CPU_X86_64
- #elif defined(_M_IA64)
- #define FLEXT_CPU FLEXT_CPU_IA64
- #elif defined(_M_IX86)
- #define FLEXT_CPU FLEXT_CPU_IA32
- #elif defined(_M_PPC)
- #define FLEXT_CPU FLEXT_CPU_PPC
- #elif defined(_M_MRX000)
- #define FLEXT_CPU FLEXT_CPU_MIPS
- #elif defined(_M_ALPHA)
- #define FLEXT_CPU FLEXT_CPU_ALPHA
- #else
- #define FLEXT_CPU FLEXT_CPU_UNKNOWN
- #endif
- #endif
-
- #ifndef FLEXT_OS
- #if defined(_WIN32) || defined(_WIN64)
- #define FLEXT_OS FLEXT_OS_WIN
- #define FLEXT_OSAPI FLEXT_OSAPI_WIN_NATIVE
- #else
- #define FLEXT_OS FLEXT_OS_UNKNOWN
- #define FLEXT_OSAPI FLEXT_OSAPI_UNKNOWN
- #endif
- #endif
-
-
-#elif defined(__BORLANDC__)
- // Borland C++
-
- #ifndef FLEXT_CPU
- #define FLEXT_CPU FLEXT_CPU_INTEL
- #endif
- #ifndef FLEXT_OS
- #define FLEXT_OS FLEXT_OS_WIN
- #define FLEXT_OSAPI FLEXT_OSAPI_WIN_NATIVE
- #else
- #define FLEXT_OSAPI FLEXT_OSAPI_UNKNOWN
- #endif
-
-
-#elif defined(__MWERKS__)
- // Metrowerks CodeWarrior
-
- #ifdef __MACH__
- // quick fix for OSX Mach-O
- #define TARGET_CPU_PPC 1
- #define TARGET_OS_MAC 1
- #define TARGET_API_MAC_OSX 1
- #else
- #ifndef __CONDITIONALMACROS__
- #include <ConditionalMacros.h>
- #endif
- #endif
-
- #ifndef FLEXT_CPU
- #if TARGET_CPU_X86
- #define FLEXT_CPU FLEXT_CPU_INTEL
- #elif TARGET_CPU_PPC
- #define FLEXT_CPU FLEXT_CPU_PPC
- #elif TARGET_CPU_MIPS
- #define FLEXT_CPU FLEXT_CPU_MIPS
- #elif TARGET_CPU_ALPHA
- #define FLEXT_CPU FLEXT_CPU_ALPHA
- #else
- #define FLEXT_CPU FLEXT_CPU_UNKNOWN
- #endif
- #endif
-
- #ifndef FLEXT_OS
- #if TARGET_OS_MAC
- #define FLEXT_OS FLEXT_OS_MAC
- #elif TARGET_OS_WIN32
- // assume Windows
- #define FLEXT_OS FLEXT_OS_WIN
- #else
- #define FLEXT_OS FLEXT_OS_UNKNOWN
- #endif
- #endif
-
- #ifndef FLEXT_OSAPI
- #if TARGET_API_MAC_MACH
- // this is for Mach-O
- // this has the precedence (MACH also supports Carbon, of course)
- #define FLEXT_OSAPI FLEXT_OSAPI_MAC_MACH
- #elif TARGET_API_MAC_CARBON
- // this is for CFM
- #define FLEXT_OSAPI FLEXT_OSAPI_MAC_CARBON
- #else
- #define FLEXT_OSAPI FLEXT_OSAPI_UNKNOWN
- #endif
- #endif
-
- // This is important for method and attribute callbacks
- #pragma enumsalwaysint on
- // This is important for everything
- #pragma bool on
-
-#elif defined(__GNUG__) || (defined(__ICC) && (FLEXT_OS == FLEXT_OS_LINUX || defined(linux) || defined(__linux__)))
-
- // GNU C++
- // and Intel (as suggested by Tim Blechmann)
-
- #ifndef FLEXT_CPU
- #if defined(__x86_64__) // not sure about this one
- #define FLEXT_CPU FLEXT_CPU_X86_64
- #elif defined(_X86_) || defined(__i386__) || defined(__i586__) || defined(__i686__)
- #define FLEXT_CPU FLEXT_CPU_IA32
- #elif defined(__POWERPC__)
- #define FLEXT_CPU FLEXT_CPU_PPC
- #elif defined(__MIPS__)
- #define FLEXT_CPU FLEXT_CPU_MIPS
- #else
- #define FLEXT_CPU FLEXT_CPU_UNKNOWN
- #endif
- #endif
-
- #ifndef FLEXT_OS
- #if defined(linux) || defined(__linux__)
- #define FLEXT_OS FLEXT_OS_LINUX
- #elif defined(__CYGWIN__) || defined(__CYGWIN32__) || defined(__MINGW32__)
- #define FLEXT_OS FLEXT_OS_WIN
- #elif defined(__APPLE__) && defined(__MACH__)
- #define FLEXT_OS FLEXT_OS_MAC
- // how about IRIX??
- #else
- #define FLEXT_OS FLEXT_OS_UNKNOWN
- #endif
- #endif
-
- #ifndef FLEXT_OSAPI
- #if FLEXT_OS == FLEXT_OS_MAC
- #define FLEXT_OSAPI FLEXT_OSAPI_MAC_MACH
- #elif FLEXT_OS == FLEXT_OS_WIN
- #if defined(__MINGW32__)
- #define FLEXT_OSAPI FLEXT_OSAPI_WIN_NATIVE
- #else
- #define FLEXT_OSAPI FLEXT_OSAPI_WIN_POSIX
- #endif
- #elif FLEXT_OS == FLEXT_OS_LINUX || FLEXT_OS == FLEXT_OS_IRIX
- #define FLEXT_OSAPI FLEXT_OSAPI_UNIX_POSIX
- #else
- #define FLEXT_OSAPI FLEXT_OSAPI_UNKNOWN
- #endif
- #endif
-
-#elif defined(__MRC__) && defined(MPW_CPLUS)
- // Apple MPW MrCpp
-
- #if __MRC__ < 0x500
- #error Apple MPW MrCpp v.5.0.0 or later compiler required
- #endif
-
- #ifndef FLEXT_CPU
- #if defined(__POWERPC__)
- #define FLEXT_CPU FLEXT_CPU_PPC
- #else
- #define FLEXT_CPU FLEXT_CPU_UNKNOWN
- #endif
- #endif
-
- #ifndef FLEXT_OS
- #if defined(macintosh)
- #define FLEXT_OS FLEXT_OS_MAC
- #else
- #define FLEXT_OS FLEXT_OS_UNKNOWN
- #endif
- #endif
-
- #ifndef FLEXT_OSAPI
- #if FLEXT_OS == FLEXT_OS_MAC
- #define FLEXT_OSAPI FLEXT_OSAPI_MAC_CLASSIC
- #else
- #define FLEXT_OSAPI FLEXT_OSAPI_UNKNOWN
- #endif
- #endif
-#endif
-
-
-
-#if FLEXT_OS == FLEXT_OS_WIN
-// #pragma message("Compiling for Windows")
-
- #if FLEXT_SYS == FLEXT_SYS_MAX
-// #define WIN_VERSION 1
- #elif FLEXT_SYS == FLEXT_SYS_PD
-// #define PD
-// #define NT
- #endif
-#elif FLEXT_OS == FLEXT_OS_LINUX
-// #pragma message("Compiling for Linux")
-
- #if FLEXT_SYS == FLEXT_SYS_PD
-// #define PD
- #else
- #error "Flext SYS/OS combination unknown"
- #endif
-#elif FLEXT_OS == FLEXT_OS_IRIX
-// #pragma message("Compiling for Irix")
-
- #if FLEXT_SYS == FLEXT_SYS_PD
-// #define PD
- #else
- #error "Flext SYS/OS combination unknown"
- #endif
-#elif FLEXT_OS == FLEXT_OS_MAC
-// #pragma message("Compiling for MacOS")
-
- #if FLEXT_SYS == FLEXT_SYS_PD
-// #define PD
- #endif
-#else
- #error "Operating system could not be determined"
-#endif
-
-#if FLEXT_SYS == FLEXT_SYS_MAX
-// #pragma message("Compiling for Max/MSP")
-#elif FLEXT_SYS == FLEXT_SYS_PD
-// #pragma message("Compiling for PD")
-#endif
-
-// ----- set threading model -----
-// shared builds are always threaded
-#ifdef FLEXT_SHARED
- #undef FLEXT_THREADS
- #define FLEXT_THREADS
-#endif
-
-#ifdef FLEXT_THREADS
- #undef FLEXT_THREADS
- #if FLEXT_SYS == FLEXT_SYS_MAX && FLEXT_OS == FLEXT_OS_MAC && FLEXT_OSAPI != FLEXT_OSAPI_MAC_MACH
- // Max for CFM doesn't like posix threads
- #define FLEXT_THREADS FLEXT_THR_MP
- #elif FLEXT_SYS == FLEXT_SYS_MAX && FLEXT_OS == FLEXT_OS_WIN
- // for wmax use native Windows threads
- #define FLEXT_THREADS FLEXT_THR_WIN32
- #else
- #define FLEXT_THREADS FLEXT_THR_POSIX
- #endif
-#endif
-
-// ----- macros for class names -----
-/*
- With linux (flat linker namespace) and more than one flext-based external loaded all calls to static
- exported functions refer to the first instance loaded!
- Therefore different class names are used so that the correct type of flext function is called.
-*/
-#ifdef __DOXYGEN__
- #define FLEXT_CLASSDEF(CL) CL
-#elif defined(FLEXT_DEBUG)
- #if defined(FLEXT_SHARED)
- #define FLEXT_CLASSDEF(CL) CL##_shared_d
- #elif defined(FLEXT_THREADS)
- #define FLEXT_CLASSDEF(CL) CL##_multi_d
- #else
- #define FLEXT_CLASSDEF(CL) CL##_single_d
- #endif
-#else
- #if defined(FLEXT_SHARED)
- #define FLEXT_CLASSDEF(CL) CL##_shared
- #elif defined(FLEXT_THREADS)
- #define FLEXT_CLASSDEF(CL) CL##_multi
- #else
- #define FLEXT_CLASSDEF(CL) CL##_single
- #endif
-#endif
-
-
-/* Set the right calling convention (and exporting) for the OS */
-
-#if defined(_WIN32)
- #ifdef FLEXT_SHARED
- // for compiling a shared flext library FLEXT_EXPORTS must be defined
- #ifdef FLEXT_EXPORTS
- #define FLEXT_SHARE __declspec(dllexport)
- #else
- #define FLEXT_SHARE __declspec(dllimport)
- #endif
- #else
- #define FLEXT_SHARE
- #endif
- #define FLEXT_EXT __declspec(dllexport)
-#else // other OS's
- #define FLEXT_SHARE
- #define FLEXT_EXT
-#endif
-
-
-// std namespace
-#ifdef __MWERKS__
-# define STD std
-#else
-# define STD
-#endif
-
-// branching hints
-#ifdef __GNUC__
-# ifndef LIKELY
-# define LIKELY(expression) (__builtin_expect(!!(expression), 1))
-# endif
-# ifndef UNLIKELY
-# define UNLIKELY(expression) (__builtin_expect(!!(expression), 0))
-# endif
-#else
-# ifndef LIKELY
-# define LIKELY(expression) (expression)
-# endif
-# ifndef UNLIKELY
-# define UNLIKELY(expression) (expression)
-# endif
-#endif
-
-
-#endif // __FLEXT_PREFIX_H
diff --git a/externals/grill/flext/source/flproxy.cpp b/externals/grill/flext/source/flproxy.cpp
deleted file mode 100644
index 6126d4b7..00000000
--- a/externals/grill/flext/source/flproxy.cpp
+++ /dev/null
@@ -1,222 +0,0 @@
-/*
-
-flext - C++ layer for Max/MSP and pd (pure data) externals
-
-Copyright (c) 2001-2006 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-/*! \file flproxy.cpp
- \brief Proxy classes for the flext base class.
-*/
-
-#include "flext.h"
-#include "flinternal.h"
-
-
-// === proxy class for flext_base ============================
-
-#if FLEXT_SYS == FLEXT_SYS_PD
-
-t_class *flext_base::px_class = NULL;
-
-void flext_base::px_object::px_bang(px_object *obj)
-{
- obj->base->CbMethodHandler(obj->index,sym_bang,0,NULL);
-}
-
-void flext_base::px_object::px_float(px_object *obj,t_float f)
-{
- t_atom a; SetFloat(a,f);
- obj->base->CbMethodHandler(obj->index,sym_float,1,&a);
-}
-
-void flext_base::px_object::px_symbol(px_object *obj,const t_symbol *s)
-{
- t_atom a; SetSymbol(a,s);
- obj->base->CbMethodHandler(obj->index,sym_symbol,1,&a);
-}
-
-/*
-void flext_base::px_object::px_pointer(px_object *obj,const t_gpointer *p)
-{
- t_atom a; SetPointer(a,p);
- obj->base->CbMethodHandler(obj->index,sym_pointer,1,&a);
-}
-*/
-
-void flext_base::px_object::px_anything(px_object *obj,const t_symbol *s,int argc,t_atom *argv)
-{
- obj->base->CbMethodHandler(obj->index,s,argc,argv);
-}
-
-void flext_base::cb_bang(flext_hdr *c)
-{
- thisObject(c)->CbMethodHandler(0,sym_bang,0,NULL);
-}
-
-void flext_base::cb_float(flext_hdr *c,t_float f)
-{
- t_atom a; SetFloat(a,f);
- thisObject(c)->CbMethodHandler(0,sym_float,1,&a);
-}
-
-void flext_base::cb_symbol(flext_hdr *c,const t_symbol *s)
-{
- t_atom a; SetSymbol(a,s);
- thisObject(c)->CbMethodHandler(0,sym_symbol,1,&a);
-}
-
-/*
-void flext_base::cb_pointer(flext_hdr *c,const t_gpointer *p)
-{
- t_atom a; SetPointer(a,p);
- thisObject(c)->CbMethodHandler(0,sym_pointer,1,&a);
-}
-*/
-
-void flext_base::cb_anything(flext_hdr *c,const t_symbol *s,int argc,t_atom *argv)
-{
- if(UNLIKELY(!s)) {
- // apparently, this happens only in one case... object is a DSP object, but has no main DSP inlet...
-
- // interpret tag from args
- if(!argc)
- s = sym_bang;
- else if(argc == 1) {
- if(IsFloat(*argv))
- s = sym_float;
- else if(IsSymbol(*argv))
- s = sym_symbol;
- else if(IsPointer(*argv))
- s = sym_pointer;
- else
- FLEXT_ASSERT(false);
- }
- else
- s = sym_list;
- }
-
- thisObject(c)->CbMethodHandler(0,s,argc,argv);
-}
-
-#define DEF_PROXYMSG(IX) \
-void flext_base::cb_px_ft ## IX(flext_hdr *c,t_float v) { t_atom atom; SetFloat(atom,v); thisObject(c)->CbMethodHandler(IX,sym_float,1,&atom); }
-
-#define ADD_PROXYMSG(c,IX) \
-add_method1(c,cb_px_ft ## IX," ft " #IX,A_FLOAT)
-
-//AddMethod(c,0,flext::MakeSymbol("ft" #IX),cb_px_ft ## IX)
-
-
-#elif FLEXT_SYS == FLEXT_SYS_MAX
-
-void flext_base::cb_anything(flext_hdr *c,const t_symbol *s,short argc,t_atom *argv)
-{
- int ci = ((flext_hdr *)c)->curinlet;
- thisObject(c)->CbMethodHandler(ci,s,argc,argv);
-}
-
-void flext_base::cb_int(flext_hdr *c,long v)
-{
- t_atom atom; SetInt(atom,v);
- int ci = ((flext_hdr *)c)->curinlet;
- thisObject(c)->CbMethodHandler(ci,sym_int,1,&atom);
-}
-
-void flext_base::cb_float(flext_hdr *c,double v)
-{
- t_atom atom; SetFloat(atom,v);
- int ci = ((flext_hdr *)c)->curinlet;
- thisObject(c)->CbMethodHandler(ci,sym_float,1,&atom);
-}
-
-void flext_base::cb_bang(flext_hdr *c)
-{
- int ci = ((flext_hdr *)c)->curinlet;
- thisObject(c)->CbMethodHandler(ci,sym_bang,0,NULL);
-}
-
-
-#define DEF_PROXYMSG(IX) \
-void flext_base::cb_px_in ## IX(flext_hdr *c,long v) { t_atom atom; SetInt(atom,v); thisObject(c)->CbMethodHandler(IX,sym_int,1,&atom); } \
-void flext_base::cb_px_ft ## IX(flext_hdr *c,double v) { t_atom atom; SetFloat(atom,v); thisObject(c)->CbMethodHandler(IX,sym_float,1,&atom); }
-
-/*
-void flext_base::cb_px_in ## IX(flext_hdr *c,long v) { t_atom atom; SetInt(atom,v); thisObject(c)->CbMethodHandler(IX,sym_int,1,&atom); } \
-void flext_base::cb_px_ft ## IX(flext_hdr *c,double v) { t_atom atom; SetFloat(atom,v); thisObject(c)->CbMethodHandler(IX,sym_float,1,&atom); }
-*/
-
-#define ADD_PROXYMSG(c,IX) \
-addinx((method)(cb_px_in ## IX),IX); \
-addftx((method)(cb_px_ft ## IX),IX)
-
-/*
-add_method1(c,cb_px_in ## IX,"in" #IX,A_INT); \
-add_method1(c,cb_px_ft ## IX,"ft" #IX,A_FLOAT)
-
-AddMethod(c,0,flext::MakeSymbol("in" #IX),cb_px_in ## IX); \
-AddMethod(c,0,flext::MakeSymbol("ft" #IX),cb_px_ft ## IX)
-*/
-
-#endif
-
-#if FLEXT_SYS == FLEXT_SYS_PD || FLEXT_SYS == FLEXT_SYS_MAX
-
-DEF_PROXYMSG(1)
-DEF_PROXYMSG(2)
-DEF_PROXYMSG(3)
-DEF_PROXYMSG(4)
-DEF_PROXYMSG(5)
-DEF_PROXYMSG(6)
-DEF_PROXYMSG(7)
-DEF_PROXYMSG(8)
-DEF_PROXYMSG(9)
-
-
-void flext_base::SetProxies(t_class *c,bool dsp)
-{
-#if FLEXT_SYS == FLEXT_SYS_PD
- // for leftmost inlet
- class_addbang(c,cb_bang);
- if(!dsp) class_addfloat(c,cb_float);
- class_addsymbol(c,cb_symbol);
-// class_addpointer(c,cb_pointer);
- class_addlist(c,cb_anything);
- class_addanything(c,cb_anything);
-
- // proxy for extra inlets
- if(!px_class) {
- // only once
- px_class = class_new(gensym(" flext_base proxy "),NULL,NULL,sizeof(px_object),CLASS_PD|CLASS_NOINLET, A_NULL);
- class_addbang(px_class,px_object::px_bang); // for other inlets
- class_addfloat(px_class,px_object::px_float); // for other inlets
- class_addsymbol(px_class,px_object::px_symbol); // for other inlets
-// class_addpointer(px_class,px_object::px_pointer); // for other inlets
- class_addlist(px_class,px_object::px_anything); // for other inlets
- class_addanything(px_class,px_object::px_anything); // for other inlets
- }
-#elif FLEXT_SYS == FLEXT_SYS_MAX
- addbang((method)cb_bang);
- addint((method)cb_int);
- addfloat((method)cb_float);
- addmess((method)cb_anything,"list",A_GIMME,A_NOTHING); // must be explicitly given, otherwise list elements are distributes over inlets
- addmess((method)cb_anything,"anything",A_GIMME,A_NOTHING);
-#else
-#error Not implemented!
-#endif
-
- // setup non-leftmost ints and floats
- ADD_PROXYMSG(c,1);
- ADD_PROXYMSG(c,2);
- ADD_PROXYMSG(c,3);
- ADD_PROXYMSG(c,4);
- ADD_PROXYMSG(c,5);
- ADD_PROXYMSG(c,6);
- ADD_PROXYMSG(c,7);
- ADD_PROXYMSG(c,8);
- ADD_PROXYMSG(c,9);
-}
-#endif
diff --git a/externals/grill/flext/source/flqueue.cpp b/externals/grill/flext/source/flqueue.cpp
deleted file mode 100644
index c3abbc52..00000000
--- a/externals/grill/flext/source/flqueue.cpp
+++ /dev/null
@@ -1,559 +0,0 @@
-/*
-
-flext - C++ layer for Max/MSP and pd (pure data) externals
-
-Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-/*! \file flqueue.cpp
- \brief Implementation of the flext message queuing functionality.
-
- \todo Let's see if queuing can be implemented for Max/MSP with defer_low
-
- if FLEXT_PDLOCK is defined, the new PD thread lock functions are used
-*/
-
-#include "flext.h"
-#include "flinternal.h"
-#include "flcontainers.h"
-#include <string.h> // for memcpy
-
-#ifdef FLEXT_THREADS
-//! Thread id of message queue thread
-flext::thrid_t flext::thrmsgid;
-#endif
-
-static bool qustarted = false;
-
-#ifdef FLEXT_SHARED
-/*
- For the shared version it _should_ be possible to have only one queue for all externals.
- Yet I don't know how to do this cross-platform
-*/
-#define PERMANENTIDLE
-#endif
-
-static void Trigger();
-
-
-class flext::MsgBundle;
-
-typedef PooledFifo<flext::MsgBundle> QueueFifo;
-
-class Queue:
- public flext,
- public QueueFifo
-{
-public:
- inline bool Empty() const { return Size() == 0; }
-
- inline void Push(MsgBundle *m); // defined after MsgBundle (gcc 3.3. won't take it otherwise...)
-};
-
-static Queue queue;
-
-
-#define STATSIZE 8
-
-class flext::MsgBundle:
- public flext,
- public Fifo::Cell
-{
-public:
- static MsgBundle *New()
- {
- MsgBundle *m = queue.New();
- m->msg.Init();
- return m;
- }
-
- static void Free(MsgBundle *m)
- {
- for(Msg *mi = m->msg.nxt; mi; ) {
- Msg *mn = mi->nxt;
- mi->Free();
- delete mi;
- mi = mn;
- }
- m->msg.Free();
- queue.Free(m);
- }
-
- inline MsgBundle &Add(flext_base *t,int o,const t_symbol *s,int ac,const t_atom *av)
- {
- Get()->Set(t,o,s,ac,av);
- return *this;
- }
-
- inline MsgBundle &Add(const t_symbol *r,const t_symbol *s,int ac,const t_atom *av)
- {
- Get()->Set(r,s,ac,av);
- return *this;
- }
-
- inline MsgBundle &Add(flext_base *th,int o) // bang
- {
- return Add(th,o,sym_bang,0,NULL);
- }
-
- inline MsgBundle &Add(flext_base *th,int o,float dt)
- {
- t_atom at;
- SetFloat(at,dt);
- return Add(th,o,sym_float,1,&at);
- }
-
- inline MsgBundle &Add(flext_base *th,int o,int dt)
- {
- t_atom at;
- SetInt(at,dt);
- const t_symbol *sym;
-#if FLEXT_SYS == FLEXT_SYS_PD
- sym = sym_float;
-#elif FLEXT_SYS == FLEXT_SYS_MAX
- sym = sym_int;
-#else
-#error Not implemented!
-#endif
- return Add(th,o,sym,1,&at);
- }
-
- inline MsgBundle &Add(flext_base *th,int o,const t_symbol *dt)
- {
- t_atom at;
- SetSymbol(at,dt);
- return Add(th,o,sym_symbol,1,&at);
- }
-
- inline MsgBundle &Add(flext_base *th,int o,const t_atom &a)
- {
- const t_symbol *sym;
- if(IsSymbol(a))
- sym = sym_symbol;
- else if(IsFloat(a))
- sym = sym_float;
-#if FLEXT_SYS == FLEXT_SYS_MAX
- else if(IsInt(a))
- sym = sym_int;
-#endif
-#if FLEXT_SYS == FLEXT_SYS_PD
- else if(IsPointer(a))
- sym = sym_pointer;
-#endif
- else {
- error("atom type not supported");
- return *this;
- }
- return Add(th,o,sym,1,&a);
- }
-
- inline MsgBundle &Add(flext_base *th,int o,int argc,const t_atom *argv)
- {
- return Add(th,o,sym_list,argc,argv);
- }
-
- // \note PD sys lock must already be held by caller
- inline void Send() const
- {
- if(!msg.Ok()) return; // Empty!
-
- const Msg *m = &msg;
- do {
- m->Send();
- m = m->nxt;
- } while(m);
- }
-
-private:
-
- class Msg {
- public:
- inline bool Ok() const { return th || recv; }
-
- void Init()
- {
- th = NULL;
- recv = NULL;
- nxt = NULL;
- argc = 0;
- }
-
- void Free()
- {
- if(argc > STATSIZE) {
- FLEXT_ASSERT(argv);
- delete[] argv;
- }
- }
-
- void Set(flext_base *t,int o,const t_symbol *s,int ac,const t_atom *av)
- {
- FLEXT_ASSERT(t);
- th = t;
- out = o;
- SetMsg(s,ac,av);
-}
-
- void Set(const t_symbol *r,const t_symbol *s,int ac,const t_atom *av)
- {
- FLEXT_ASSERT(r);
- th = NULL;
- recv = r;
- SetMsg(s,ac,av);
- }
-
- void Send() const
- {
- if(th) {
- if(UNLIKELY(out < 0))
- // message to self
- th->CbMethodHandler(-1-out,sym,argc,argc > STATSIZE?argv:argl);
- else
- // message to outlet
- th->ToSysAnything(out,sym,argc,argc > STATSIZE?argv:argl);
- }
- else
- flext::SysForward(recv,sym,argc,argc > STATSIZE?argv:argl);
- }
-
- Msg *nxt;
-
- protected:
- flext_base *th;
- union {
- int out;
- const t_symbol *recv;
- };
- const t_symbol *sym;
- int argc;
- union {
- t_atom *argv;
- t_atom argl[STATSIZE];
- };
-
- void SetMsg(const t_symbol *s,int cnt,const t_atom *lst)
- {
- sym = s;
- argc = cnt;
- if(UNLIKELY(cnt > STATSIZE)) {
- argv = new t_atom[cnt];
- flext::CopyAtoms(cnt,argv,lst);
- }
- else
- flext::CopyAtoms(cnt,argl,lst);
- }
-
- } msg;
-
- Msg *Get()
- {
- Msg *m = &msg;
- if(LIKELY(m->Ok())) {
- for(; m->nxt; m = m->nxt) {}
- m = m->nxt = new Msg;
- m->Init();
- }
- return m;
- }
-};
-
-inline void Queue::Push(MsgBundle *m)
-{
- if(LIKELY(m)) {
- Put(m);
- Trigger();
- }
-}
-
-#if FLEXT_QMODE == 2
-static flext::ThrCond qthrcond;
-#elif FLEXT_QMODE == 0
-//static t_qelem *qclk = NULL;
-static t_clock *qclk = NULL;
-#endif
-
-
-#define CHUNK 10
-
-static void QWork(bool syslock)
-{
- for(;;) {
- // Since qcnt can only be increased from any other function than QWork
- // qc will be a minimum guaranteed number of present queue elements.
- // On the other hand, if new queue elements are added by the methods called
- // in the loop, these will be sent in the next tick to avoid recursion overflow.
- size_t qc = queue.Size();
- if(!qc) break;
-
- #if FLEXT_QMODE == 2
- if(syslock) flext::Lock();
- #endif
-
- flext::MsgBundle *q;
- while((q = queue.Get()) != NULL) {
- q->Send();
- flext::MsgBundle::Free(q);
- }
-
- #if FLEXT_QMODE == 2
- if(syslock) flext::Unlock();
- #endif
-
- }
-}
-
-#if FLEXT_QMODE == 0
-#if FLEXT_SYS == FLEXT_SYS_JMAX
-static void QTick(fts_object_t *c,int winlet, fts_symbol_t s, int ac, const fts_atom_t *at)
-{
-#else
-static void QTick(flext_base *c)
-{
-#endif
-#ifdef FLEXT_THREADS
- FLEXT_ASSERT(flext::IsSystemThread());
-#endif
- QWork(false);
-}
-
-#elif FLEXT_QMODE == 1
-#ifndef PERMANENTIDLE
-static bool qtickactive = false;
-#endif
-static t_int QTick(t_int *)
-{
-#ifndef PERMANENTIDLE
- qtickactive = false;
-#endif
-
- QWork(false);
-
-#ifdef PERMANENTIDLE
- // will be run in the next idle cycle
- return 2;
-#else
- // won't be run again
- // for non-shared externals assume that there's rarely a message waiting
- // so it's better to delete the callback meanwhile
- return 0;
-#endif
-}
-#endif
-
-/*
-It would be sufficient to only flush messages belonging to object th
-But then the order of sent messages is not as intended
-*/
-void flext_base::QFlush(flext_base *th)
-{
-#ifdef FLEXT_THREADS
- if(!IsSystemThread()) {
- error("flext - Queue flush called by wrong thread!");
- return;
- }
-#endif
-
- while(!queue.Empty()) QWork(false);
-}
-
-static void Trigger()
-{
-#if FLEXT_SYS == FLEXT_SYS_PD
- #if FLEXT_QMODE == 2
- // wake up worker thread
- qthrcond.Signal();
- #elif FLEXT_QMODE == 1 && !defined(PERMANENTIDLE)
- if(!qtickactive) {
- sys_callback(QTick,NULL,0);
- qtickactive = true;
- }
- #elif FLEXT_QMODE == 0
- clock_delay(qclk,0);
- #endif
-#elif FLEXT_SYS == FLEXT_SYS_MAX
- #if FLEXT_QMODE == 0
-// qelem_front(qclk);
- clock_delay(qclk,0);
- #endif
-#else
-#error Not implemented
-#endif
-}
-
-#if FLEXT_QMODE == 2
-void flext_base::QWorker(thr_params *)
-{
- thrmsgid = GetThreadId();
- qustarted = true;
- for(;;) {
- qthrcond.Wait();
- QWork(true);
- }
-}
-#endif
-
-void flext_base::StartQueue()
-{
- if(qustarted) return;
-#if FLEXT_QMODE == 1
-#ifdef PERMANENTIDLE
- sys_callback(QTick,NULL,0);
- qustarted = true;
-#endif
-#elif FLEXT_QMODE == 2
- LaunchThread(QWorker,NULL);
- // very unelegant... but waiting should be ok, since happens only on loading
- while(!qustarted) Sleep(0.001);
-#elif FLEXT_QMODE == 0 && (FLEXT_SYS == FLEXT_SYS_PD || FLEXT_SYS == FLEXT_SYS_MAX)
-// qclk = (t_qelem *)(qelem_new(NULL,(t_method)QTick));
- qclk = (t_clock *)(clock_new(NULL,(t_method)QTick));
- qustarted = true;
-#else
-#error Not implemented!
-#endif
-}
-
-
-flext::MsgBundle *flext::MsgNew()
-{
- return MsgBundle::New();
-}
-
-void flext::MsgFree(MsgBundle *m)
-{
- MsgBundle::Free(m);
-}
-
-void flext::ToSysMsg(MsgBundle *m)
-{
- m->Send();
- queue.Free(m);
-}
-
-void flext::ToQueueMsg(MsgBundle *m)
-{
- queue.Push(m);
-}
-
-
-
-void flext_base::ToQueueBang(int o) const
-{
- MsgBundle *m = MsgBundle::New();
- m->Add(const_cast<flext_base *>(this),o);
- queue.Push(m);
-}
-
-void flext_base::ToQueueFloat(int o,float f) const
-{
- MsgBundle *m = MsgBundle::New();
- m->Add(const_cast<flext_base *>(this),o,f);
- queue.Push(m);
-}
-
-void flext_base::ToQueueInt(int o,int f) const
-{
- MsgBundle *m = MsgBundle::New();
- m->Add(const_cast<flext_base *>(this),o,f);
- queue.Push(m);
-}
-
-void flext_base::ToQueueSymbol(int o,const t_symbol *s) const
-{
- MsgBundle *m = MsgBundle::New();
- m->Add(const_cast<flext_base *>(this),o,s);
- queue.Push(m);
-}
-
-void flext_base::ToQueueAtom(int o,const t_atom &at) const
-{
- MsgBundle *m = MsgBundle::New();
- m->Add(const_cast<flext_base *>(this),o,at);
- queue.Push(m);
-}
-
-void flext_base::ToQueueList(int o,int argc,const t_atom *argv) const
-{
- MsgBundle *m = MsgBundle::New();
- m->Add(const_cast<flext_base *>(this),o,argc,argv);
- queue.Push(m);
-}
-
-void flext_base::ToQueueAnything(int o,const t_symbol *s,int argc,const t_atom *argv) const
-{
- MsgBundle *m = MsgBundle::New();
- m->Add(const_cast<flext_base *>(this),o,s,argc,argv);
- queue.Push(m);
-}
-
-
-void flext_base::MsgAddBang(MsgBundle *m,int n) const
-{
- m->Add(const_cast<flext_base *>(this),n);
-}
-
-void flext_base::MsgAddFloat(MsgBundle *m,int n,float f) const
-{
- m->Add(const_cast<flext_base *>(this),n,f);
-}
-
-void flext_base::MsgAddInt(MsgBundle *m,int n,int f) const
-{
- m->Add(const_cast<flext_base *>(this),n,f);
-}
-
-void flext_base::MsgAddSymbol(MsgBundle *m,int n,const t_symbol *s) const
-{
- m->Add(const_cast<flext_base *>(this),n,s);
-}
-
-void flext_base::MsgAddAtom(MsgBundle *m,int n,const t_atom &at) const
-{
- m->Add(const_cast<flext_base *>(this),n,at);
-}
-
-void flext_base::MsgAddList(MsgBundle *m,int n,int argc,const t_atom *argv) const
-{
- m->Add(const_cast<flext_base *>(this),n,argc,argv);
-}
-
-void flext_base::MsgAddAnything(MsgBundle *m,int n,const t_symbol *s,int argc,const t_atom *argv) const
-{
- m->Add(const_cast<flext_base *>(this),n,s,argc,argv);
-}
-
-
-
-
-bool flext::SysForward(const t_symbol *recv,const t_symbol *s,int argc,const t_atom *argv)
-{
- void *cl = recv->s_thing;
- if(UNLIKELY(!cl)) return false;
-
-#if FLEXT_SYS == FLEXT_SYS_PD
- pd_typedmess((t_class **)cl,(t_symbol *)s,argc,(t_atom *)argv);
-#elif FLEXT_SYS == FLEXT_SYS_MAX
- typedmess(recv->s_thing,(t_symbol *)s,argc,(t_atom *)argv);
-#else
-#error Not implemented
-#endif
- return true;
-}
-
-bool flext::QueueForward(const t_symbol *recv,const t_symbol *s,int argc,const t_atom *argv)
-{
- MsgBundle *m = MsgBundle::New();
- m->Add(recv,s,argc,argv);
- // send over queue
- queue.Push(m);
- return true;
-}
-
-bool flext::MsgForward(MsgBundle *m,const t_symbol *recv,const t_symbol *s,int argc,const t_atom *argv)
-{
- m->Add(recv,s,argc,argv);
- return true;
-}
diff --git a/externals/grill/flext/source/flsimd.cpp b/externals/grill/flext/source/flsimd.cpp
deleted file mode 100644
index 8ed13a4a..00000000
--- a/externals/grill/flext/source/flsimd.cpp
+++ /dev/null
@@ -1,2002 +0,0 @@
-/*
-
-flext - C++ layer for Max/MSP and pd (pure data) externals
-
-Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-/*! \file flsimd.cpp
- \brief flext SIMD support functions
-
- If FLEXT_USE_SIMD is defined at compilation, SIMD instructions are used wherever feasible.
- If used with MSVC++ 6 the "Processor Pack" must be installed.
-
- If FLEXT_USE_IPP is defined the Intel Performance Package is used.
-*/
-
-#include "flext.h"
-#include <string.h>
-
-#if FLEXT_OS == FLEXT_OS_WIN
-#include <windows.h>
-#endif
-
-#ifdef FLEXT_USE_IPP
-#include <ipps.h>
-#endif
-
-#ifdef FLEXT_USE_SIMD
- #ifdef _MSC_VER
- // include MSVC SIMD header files
- #include <mmintrin.h> // MMX
- #include <xmmintrin.h> // SSE
- #include <emmintrin.h> // SSE2
- #include <mm3dnow.h> // 3DNow!
- #elif FLEXT_CPU == FLEXT_CPU_PPC && defined(__MWERKS__) && defined(__VEC__)
- #if FLEXT_OSAPI == FLEXT_OSAPI_MAC_MACH
- #include <sys/sysctl.h>
- #include <vDSP.h>
- #else
- #include <Gestalt.h>
- #endif
-
- #pragma altivec_model on
-
- #include <altivec.h>
- #include <vectorOps.h>
- #elif FLEXT_CPU == FLEXT_CPU_PPC && defined(__GNUC__) && defined(__VEC__)
- #include <sys/sysctl.h>
- #include <vecLib/vecLib.h>
- #endif
-
-#endif // FLEXT_USE_SIMD
-
-static unsigned long setsimdcaps();
-
-/*! \brief Holds SIMD capability flags
- \internal
-*/
-unsigned long flext::simdcaps = setsimdcaps();
-
-unsigned long flext::GetSIMDCapabilities() { return simdcaps; }
-
-
-#ifdef FLEXT_USE_SIMD
-
-#if FLEXT_CPU == FLEXT_CPU_IA32 || FLEXT_CPU == FLEXT_CPU_X84_64
-
-#define _CPU_FEATURE_MMX 0x0001
-#define _CPU_FEATURE_SSE 0x0002
-#define _CPU_FEATURE_SSE2 0x0004
-#define _CPU_FEATURE_3DNOW 0x0008
-
-typedef struct _processor_info {
- int family; // family of the processor
- // e.g. 6 = Pentium-Pro architecture
- int model; // model of processor
- // e.g. 1 = Pentium-Pro for family = 6
- int stepping; // processor revision number
- int feature; // processor feature
- // (same as return value from _cpuid)
- int os_support; // does OS Support the feature?
- int checks; // mask of checked bits in feature
- // and os_support fields
-} _p_info;
-
-// These are the bit flags that get set on calling cpuid
-// with register eax set to 1
-#define _MMX_FEATURE_BIT 0x00800000
-#define _SSE_FEATURE_BIT 0x02000000
-#define _SSE2_FEATURE_BIT 0x04000000
-
-// This bit is set when cpuid is called with
-// register set to 80000001h (only applicable to AMD)
-#define _3DNOW_FEATURE_BIT 0x80000000
-
-#ifdef _MSC_VER
-static int IsCPUID()
-{
- __try {
- _asm {
- xor eax, eax
- cpuid
- }
- }
- __except (EXCEPTION_EXECUTE_HANDLER) {
- return 0;
- }
- return 1;
-}
-
-static int _os_support(int feature)
-{
- __try {
- switch (feature) {
- case _CPU_FEATURE_SSE:
- __asm {
- xorps xmm0, xmm0 // executing SSE instruction
- }
- break;
- case _CPU_FEATURE_SSE2:
- __asm {
- xorpd xmm0, xmm0 // executing SSE2 instruction
- }
- break;
- case _CPU_FEATURE_3DNOW:
- __asm {
- pfrcp mm0, mm0 // executing 3DNow! instruction
- emms
- }
- break;
- case _CPU_FEATURE_MMX:
- __asm {
- pxor mm0, mm0 // executing MMX instruction
- emms
- }
- break;
- }
- }
- __except (EXCEPTION_EXECUTE_HANDLER) {
- if (_exception_code() == STATUS_ILLEGAL_INSTRUCTION) {
- return 0;
- }
- return 0;
- }
- return 1;
-}
-
-static int _cpuid (_p_info *pinfo)
-{
- DWORD dwStandard = 0;
- DWORD dwFeature = 0;
- DWORD dwMax = 0;
- DWORD dwExt = 0;
- int feature = 0;
- int os_support = 0;
- union {
- struct {
- DWORD dw0;
- DWORD dw1;
- DWORD dw2;
- } s;
- } Ident;
-
- if (!IsCPUID()) {
- return 0;
- }
-
- _asm {
- push ebx
- push ecx
- push edx
-
- // get the vendor string
- xor eax, eax
- cpuid
- mov dwMax, eax
- mov Ident.s.dw0, ebx
- mov Ident.s.dw1, edx
- mov Ident.s.dw2, ecx
-
- // get the Standard bits
- mov eax, 1
- cpuid
- mov dwStandard, eax
- mov dwFeature, edx
-
- // get AMD-specials
- mov eax, 80000000h
- cpuid
- cmp eax, 80000000h
- jc notamd
- mov eax, 80000001h
- cpuid
- mov dwExt, edx
-
-notamd:
- pop ecx
- pop ebx
- pop edx
- }
-
- if (dwFeature & _MMX_FEATURE_BIT) {
- feature |= _CPU_FEATURE_MMX;
- if (_os_support(_CPU_FEATURE_MMX))
- os_support |= _CPU_FEATURE_MMX;
- }
- if (dwExt & _3DNOW_FEATURE_BIT) {
- feature |= _CPU_FEATURE_3DNOW;
- if (_os_support(_CPU_FEATURE_3DNOW))
- os_support |= _CPU_FEATURE_3DNOW;
- }
- if (dwFeature & _SSE_FEATURE_BIT) {
- feature |= _CPU_FEATURE_SSE;
- if (_os_support(_CPU_FEATURE_SSE))
- os_support |= _CPU_FEATURE_SSE;
- }
- if (dwFeature & _SSE2_FEATURE_BIT) {
- feature |= _CPU_FEATURE_SSE2;
- if (_os_support(_CPU_FEATURE_SSE2))
- os_support |= _CPU_FEATURE_SSE2;
- }
-
- if (pinfo) {
- memset(pinfo, 0, sizeof(_p_info));
-
- pinfo->os_support = os_support;
- pinfo->feature = feature;
- pinfo->family = (dwStandard >> 8) & 0xF; // retrieve family
- if (pinfo->family == 15) { // retrieve extended family
- pinfo->family |= (dwStandard >> 16) & 0xFF0;
- }
- pinfo->model = (dwStandard >> 4) & 0xF; // retrieve model
- if (pinfo->model == 15) { // retrieve extended model
- pinfo->model |= (dwStandard >> 12) & 0xF;
- }
- pinfo->stepping = (dwStandard) & 0xF; // retrieve stepping
-
- pinfo->checks = _CPU_FEATURE_MMX |
- _CPU_FEATURE_SSE |
- _CPU_FEATURE_SSE2 |
- _CPU_FEATURE_3DNOW;
- }
-
- return feature;
-}
-
-inline bool IsVectorAligned(const void *where)
-{
- return (reinterpret_cast<size_t>(where)&(__alignof(__m128)-1)) == 0;
-}
-
-inline bool VectorsAligned(const void *v1,const void *v2)
-{
- return (
- (reinterpret_cast<size_t>(v1)|reinterpret_cast<size_t>(v2))
- &(__alignof(__m128)-1)
- ) == 0;
-}
-
-inline bool VectorsAligned(const void *v1,const void *v2,const void *v3)
-{
- return (
- (reinterpret_cast<size_t>(v1)|reinterpret_cast<size_t>(v2)|reinterpret_cast<size_t>(v3))
- &(__alignof(__m128)-1)
- ) == 0;
-}
-
-inline bool VectorsAligned(const void *v1,const void *v2,const void *v3,const void *v4)
-{
- return (
- (reinterpret_cast<size_t>(v1)|reinterpret_cast<size_t>(v2)|reinterpret_cast<size_t>(v3)|reinterpret_cast<size_t>(v4))
- &(__alignof(__m128)-1)
- ) == 0;
-}
-
-#else
-// not MSVC
-static int _cpuid (_p_info *pinfo)
-{
- if(pinfo) memset(pinfo,0,sizeof *pinfo);
- return 0;
-}
-#endif
-
-#endif
-
-
-/*! \brief Determine SIMD capabilities
- \internal
-*/
-static unsigned long setsimdcaps()
-{
- unsigned long simdflags = flext::simd_none;
-#if FLEXT_CPU == FLEXT_CPU_IA32 || FLEXT_CPU == FLEXT_CPU_AMD64
- _p_info cpuinfo;
- int feature = _cpuid(&cpuinfo);
- if(cpuinfo.os_support&_CPU_FEATURE_MMX) simdflags += flext::simd_mmx;
- if(cpuinfo.os_support&_CPU_FEATURE_3DNOW) simdflags += flext::simd_3dnow;
- if(cpuinfo.os_support&_CPU_FEATURE_SSE) simdflags += flext::simd_sse;
- if(cpuinfo.os_support&_CPU_FEATURE_SSE2) simdflags += flext::simd_sse2;
-#elif FLEXT_CPU == FLEXT_CPU_PPC && defined(__VEC__)
- #if FLEXT_OSAPI == FLEXT_OSAPI_MAC_MACH
-
- int selectors[2] = { CTL_HW, HW_VECTORUNIT };
- int hasVectorUnit = 0;
- size_t length = sizeof(hasVectorUnit);
- int error = sysctl(selectors, 2, &hasVectorUnit, &length, NULL, 0);
-
- if(!error && hasVectorUnit != 0) simdflags += flext::simd_altivec;
-
- #else
-
- long cpuAttributes;
- Boolean hasAltiVec = false;
- OSErr err = Gestalt( gestaltPowerPCProcessorFeatures, &cpuAttributes );
-
- if( noErr == err )
- if(( 1 << gestaltPowerPCHasVectorInstructions) & cpuAttributes) simdflags += flext::simd_altivec;
-
- #endif
-#endif
- return simdflags;
-}
-
-
-#if FLEXT_CPU == FLEXT_CPU_PPC && defined(__VEC__)
-
-/* functions for misaligned vector data - taken from the Altivec tutorial of Ian Ollmann, Ph.D. */
-
-//! Load a vector from an unaligned location in memory
-inline vector unsigned char LoadUnaligned( vector unsigned char *v )
-{
- vector unsigned char permuteVector = vec_lvsl( 0, (int*) v );
- vector unsigned char low = vec_ld( 0, v );
- vector unsigned char high = vec_ld( 15, v );
- return vec_perm( low, high, permuteVector );
-}
-
-/*
-//! Store a vector to an unaligned location in memory
-inline void StoreUnaligned( vector unsigned char v, vector unsigned char *where)
-{
- // Load the surrounding area
- vector unsigned char low = vec_ld( 0, where );
- vector unsigned char high = vec_ld( 16, where );
- // Prepare the constants that we need
- vector unsigned char permuteVector = vec_lvsr( 0, (int*) where );
-
- vector unsigned char oxFF = (vector unsigned char)vec_splat_s8( -1 );
- vector unsigned char ox00 = (vector unsigned char)vec_splat_s8( 0 );
- // Make a mask for which parts of the vectors to swap out
- vector unsigned char mask = vec_perm( ox00, oxFF, permuteVector );
- // Right rotate our input data
- v = vec_perm( v, v, permuteVector );
- // Insert our data into the low and high vectors
- low = vec_sel( v, low, mask );
- high = vec_sel( high, v, mask );
- // Store the two aligned result vectors
- vec_st( low, 0, where );
- vec_st( high, 16, where );
-}
-*/
-
-inline vector float LoadUnaligned(const float *v )
-{
- return (vector float)LoadUnaligned((vector unsigned char *)v);
-}
-
-/*
-inline void StoreUnaligned( vector float v,float *where)
-{
- return StoreUnaligned((vector unsigned char)v,(vector unsigned char *)where);
-}
-*/
-
-inline bool IsVectorAligned(const void *where)
-{
- return (reinterpret_cast<size_t>(where)&(sizeof(vector float)-1)) == 0;
-}
-
-inline bool VectorsAligned(const void *v1,const void *v2)
-{
- return (
- (reinterpret_cast<size_t>(v1)|reinterpret_cast<size_t>(v2))
- &(sizeof(vector float)-1)
- ) == 0;
-}
-
-inline bool VectorsAligned(const void *v1,const void *v2,const void *v3)
-{
- return (
- (reinterpret_cast<size_t>(v1)|reinterpret_cast<size_t>(v2)|reinterpret_cast<size_t>(v3))
- &(sizeof(vector float)-1)
- ) == 0;
-}
-
-inline bool VectorsAligned(const void *v1,const void *v2,const void *v3,const void *v4)
-{
- return (
- (reinterpret_cast<size_t>(v1)|reinterpret_cast<size_t>(v2)|reinterpret_cast<size_t>(v3)|reinterpret_cast<size_t>(v4))
- &(sizeof(vector float)-1)
- ) == 0;
-}
-
-inline vector float LoadValue(const float &f)
-{
- return vec_splat(IsVectorAligned(&f)?vec_ld(0,(vector float *)&f):LoadUnaligned(&f),0);
-}
-#endif
-
-
-#else // FLEXT_USE_SIMD
-static unsigned long setsimdcaps() { return 0; }
-#endif // FLEXT_USE_SIMD
-
-
-void flext::CopySamples(t_sample *dst,const t_sample *src,int cnt)
-{
-#ifdef FLEXT_USE_IPP
- if(sizeof(t_sample) == 4)
- ippsCopy_32f((const float *)src,(float *)dst,cnt);
- else if(sizeof(t_sample) == 8)
- ippsCopy_64f((const double *)src,(double *)dst,cnt);
- else
- ERRINTERNAL();
-#else
-#ifdef FLEXT_USE_SIMD
-#ifdef _MSC_VER
- if(GetSIMDCapabilities()&simd_sse) {
- // single precision
-
- int n = cnt>>4;
- if(!n) goto zero;
- cnt -= n<<4;
-
- __asm {
- mov eax,dword ptr [src]
- prefetcht0 [eax+0]
- prefetcht0 [eax+32]
- }
-
- if(IsVectorAligned(src)) {
- if(IsVectorAligned(dst)) {
- // aligned src, aligned dst
- __asm {
- mov eax,dword ptr [src]
- mov edx,dword ptr [dst]
- mov ecx,[n]
-loopaa:
- prefetcht0 [eax+64]
- prefetcht0 [eax+96]
- movaps xmm0,xmmword ptr[eax]
- movaps xmmword ptr[edx],xmm0
- movaps xmm1,xmmword ptr[eax+4*4]
- movaps xmmword ptr[edx+4*4],xmm1
- movaps xmm2,xmmword ptr[eax+8*4]
- movaps xmmword ptr[edx+8*4],xmm2
- movaps xmm3,xmmword ptr[eax+12*4]
- movaps xmmword ptr[edx+12*4],xmm3
-
- add eax,16*4
- add edx,16*4
- loop loopaa
- }
- }
- else {
- // aligned src, unaligned dst
- __asm {
- mov eax,dword ptr [src]
- mov edx,dword ptr [dst]
- mov ecx,[n]
-loopau:
- prefetcht0 [eax+64]
- prefetcht0 [eax+96]
- movaps xmm0,xmmword ptr[eax]
- movups xmmword ptr[edx],xmm0
- movaps xmm1,xmmword ptr[eax+4*4]
- movups xmmword ptr[edx+4*4],xmm1
- movaps xmm2,xmmword ptr[eax+8*4]
- movups xmmword ptr[edx+8*4],xmm2
- movaps xmm3,xmmword ptr[eax+12*4]
- movups xmmword ptr[edx+12*4],xmm3
-
- add eax,16*4
- add edx,16*4
- loop loopau
- }
- }
- }
- else {
- if(IsVectorAligned(dst)) {
- // unaligned src, aligned dst
- __asm {
- mov eax,dword ptr [src]
- mov edx,dword ptr [dst]
- mov ecx,[n]
-loopua:
- prefetcht0 [eax+64]
- prefetcht0 [eax+96]
- movups xmm0,xmmword ptr[eax]
- movaps xmmword ptr[edx],xmm0
- movups xmm1,xmmword ptr[eax+4*4]
- movaps xmmword ptr[edx+4*4],xmm1
- movups xmm2,xmmword ptr[eax+8*4]
- movaps xmmword ptr[edx+8*4],xmm2
- movups xmm3,xmmword ptr[eax+12*4]
- movaps xmmword ptr[edx+12*4],xmm3
-
- add eax,16*4
- add edx,16*4
- loop loopua
- }
- }
- else {
- // unaligned src, unaligned dst
- __asm {
- mov eax,dword ptr [src]
- mov edx,dword ptr [dst]
- mov ecx,[n]
-loopuu:
- prefetcht0 [eax+64]
- prefetcht0 [eax+96]
- movups xmm0,xmmword ptr[eax]
- movups xmmword ptr[edx],xmm0
- movups xmm1,xmmword ptr[eax+4*4]
- movups xmmword ptr[edx+4*4],xmm1
- movups xmm2,xmmword ptr[eax+8*4]
- movups xmmword ptr[edx+8*4],xmm2
- movups xmm3,xmmword ptr[eax+12*4]
- movups xmmword ptr[edx+12*4],xmm3
-
- add eax,16*4
- add edx,16*4
- loop loopuu
- }
- }
- }
-
- src += n<<4,dst += n<<4;
-zero:
- while(cnt--) *(dst++) = *(src++);
- }
- else
-#elif FLEXT_CPU == FLEXT_CPU_PPC && defined(__VECTOROPS__)
- if(true) {
- int n = cnt>>2,n4 = n<<2;
- vScopy(n4,(vector float *)src,(vector float *)dst);
- cnt -= n4,src += n4,dst += n4;
- while(cnt--) *(dst++) = *(src++);
- }
- else
-#endif // _MSC_VER
-#endif // FLEXT_USE_SIMD
- {
- int n = cnt>>3;
- cnt -= n<<3;
- while(n--) {
- dst[0] = src[0]; dst[1] = src[1]; dst[2] = src[2]; dst[3] = src[3];
- dst[4] = src[4]; dst[5] = src[5]; dst[6] = src[6]; dst[7] = src[7];
- src += 8,dst += 8;
- }
- while(cnt--) *(dst++) = *(src++);
- }
-#endif
-}
-
-#if defined(FLEXT_USE_SIMD) && FLEXT_CPU == FLEXT_CPU_PPC && defined(__VEC__)
-// because of some frame code Altivec stuff should be in seperate functions....
-
-static const vector float zero = (vector float)(0);
-
-static void SetAltivec(t_sample *dst,int cnt,t_sample s)
-{
- 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 += 16;
- }
-
- while(cnt--) *(dst++) = s;
-}
-
-static void MulAltivec(t_sample *dst,const t_sample *src,t_sample op,int cnt)
-{
- 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_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;
-}
-
-static void MulAltivec(t_sample *dst,const t_sample *src,const t_sample *op,int cnt)
-{
- 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++);
-}
-
-static void AddAltivec(t_sample *dst,const t_sample *src,t_sample op,int cnt)
-{
- 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;
-}
-
-static void AddAltivec(t_sample *dst,const t_sample *src,const t_sample *op,int cnt)
-{
- 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++);
-}
-
-static void ScaleAltivec(t_sample *dst,const t_sample *src,t_sample opmul,t_sample opadd,int cnt)
-{
- 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) {
- vec_st(vec_madd(vec_ld( 0,src),argmul,argadd), 0,dst);
- vec_st(vec_madd(vec_ld(16,src),argmul,argadd),16,dst);
- vec_st(vec_madd(vec_ld(32,src),argmul,argadd),32,dst);
- vec_st(vec_madd(vec_ld(48,src),argmul,argadd),48,dst);
- }
-
- while(cnt--) *(dst++) = *(src++)*opmul+opadd;
-}
-
-static void ScaleAltivec(t_sample *dst,const t_sample *src,t_sample opmul,const t_sample *add,int cnt)
-{
- const vector float argmul = LoadValue(opmul);
- int n = cnt>>4;
- cnt -= n<<4;
-
- for(; n--; src += 16,dst += 16,add += 16) {
- vec_st(vec_madd(vec_ld( 0,src),argmul,vec_ld( 0,add)), 0,dst);
- vec_st(vec_madd(vec_ld(16,src),argmul,vec_ld(16,add)),16,dst);
- vec_st(vec_madd(vec_ld(32,src),argmul,vec_ld(32,add)),32,dst);
- vec_st(vec_madd(vec_ld(48,src),argmul,vec_ld(48,add)),48,dst);
- }
-
- while(cnt--) *(dst++) = *(src++) * opmul + *(add++);
-}
-
-static void ScaleAltivec(t_sample *dst,const t_sample *src,const t_sample *mul,const t_sample *add,int cnt)
-{
- int n = cnt>>4;
- cnt -= n<<4;
-
- for(; n--; src += 16,dst += 16,mul += 16,add += 16) {
- vec_st(vec_madd(vec_ld( 0,src),vec_ld( 0,mul),vec_ld( 0,add)), 0,dst);
- vec_st(vec_madd(vec_ld(16,src),vec_ld(16,mul),vec_ld(16,add)),16,dst);
- vec_st(vec_madd(vec_ld(32,src),vec_ld(32,mul),vec_ld(32,add)),32,dst);
- vec_st(vec_madd(vec_ld(48,src),vec_ld(48,mul),vec_ld(48,add)),48,dst);
- }
-
- while(cnt--) *(dst++) = *(src++) * *(mul++) + *(add++);
-}
-#endif
-
-void flext::SetSamples(t_sample *dst,int cnt,t_sample s)
-{
-#ifdef FLEXT_USE_IPP
- if(sizeof(t_sample) == 4)
- ippsSet_32f((float)s,(float *)dst,cnt);
- else if(sizeof(t_sample) == 8)
- ippsSet_64f((double)s,(double *)dst,cnt);
- else
- ERRINTERNAL();
-#else
-#ifdef FLEXT_USE_SIMD
-#ifdef _MSC_VER
- if(GetSIMDCapabilities()&simd_sse) {
- // single precision
-
- int n = cnt>>4;
- if(!n) goto zero;
- cnt -= n<<4;
-
- __asm {
- movss xmm0,xmmword ptr [s]
- shufps xmm0,xmm0,0
- }
-
- if(IsVectorAligned(dst)) {
- // aligned version
- __asm {
- mov ecx,[n]
- mov edx,dword ptr [dst]
-loopa:
- movaps xmmword ptr[edx],xmm0
- movaps xmmword ptr[edx+4*4],xmm0
- movaps xmmword ptr[edx+8*4],xmm0
- movaps xmmword ptr[edx+12*4],xmm0
-
- add edx,16*4
- loop loopa
- }
- }
- else {
- // unaligned version
- __asm {
- mov ecx,[n]
- mov edx,dword ptr [dst]
-loopu:
- movups xmmword ptr[edx],xmm0
- movups xmmword ptr[edx+4*4],xmm0
- movups xmmword ptr[edx+8*4],xmm0
- movups xmmword ptr[edx+12*4],xmm0
-
- add edx,16*4
- loop loopu
- }
- }
-
- dst += n<<4;
-zero:
- while(cnt--) *(dst++) = s;
- }
- else
-#elif FLEXT_CPU == FLEXT_CPU_PPC && defined(__VEC__)
- if(GetSIMDCapabilities()&simd_altivec && IsVectorAligned(dst))
- SetAltivec(dst,cnt,s);
- else
-#endif
-#endif // FLEXT_USE_SIMD
- {
- int n = cnt>>3;
- cnt -= n<<3;
- while(n--) {
- dst[0] = dst[1] = dst[2] = dst[3] = dst[4] = dst[5] = dst[6] = dst[7] = s;
- dst += 8;
- }
-
- while(cnt--) *(dst++) = s;
- }
-#endif
-}
-
-
-void flext::MulSamples(t_sample *dst,const t_sample *src,t_sample op,int cnt)
-{
-#ifdef FLEXT_USE_IPP
- if(sizeof(t_sample) == 4) {
- ippsMulC_32f((const float *)src,(float)op,(float *)dst,cnt);
- }
- else if(sizeof(t_sample) == 8) {
- ippsMulC_64f((const double *)src,(double)op,(double *)dst,cnt);
- }
- else
- ERRINTERNAL();
-#else
-#ifdef FLEXT_USE_SIMD
-#ifdef _MSC_VER
- if(GetSIMDCapabilities()&simd_sse) {
- // single precision
- __m128 a = _mm_load1_ps(&op);
-
- int n = cnt>>4;
- if(!n) goto zero;
- cnt -= n<<4;
-
- __asm {
- mov eax,dword ptr [src]
- prefetcht0 [eax+0]
- prefetcht0 [eax+32]
-
- movss xmm0,xmmword ptr [op]
- shufps xmm0,xmm0,0
- }
-
- if(VectorsAligned(src,dst)) {
- // aligned version
- __asm {
- mov ecx,[n]
- mov eax,dword ptr [src]
- mov edx,dword ptr [dst]
-loopa:
- prefetcht0 [eax+64]
- prefetcht0 [eax+96]
-
- movaps xmm1,xmmword ptr[eax]
- mulps xmm1,xmm0
- movaps xmmword ptr[edx],xmm1
-
- movaps xmm2,xmmword ptr[eax+4*4]
- mulps xmm2,xmm0
- movaps xmmword ptr[edx+4*4],xmm2
-
- movaps xmm3,xmmword ptr[eax+8*4]
- mulps xmm3,xmm0
- movaps xmmword ptr[edx+8*4],xmm3
-
- movaps xmm4,xmmword ptr[eax+12*4]
- mulps xmm4,xmm0
- movaps xmmword ptr[edx+12*4],xmm4
-
- add eax,16*4
- add edx,16*4
- loop loopa
- }
- }
- else {
- // unaligned version
- __asm {
- mov ecx,[n]
- mov eax,dword ptr [src]
- mov edx,dword ptr [dst]
-loopu:
- prefetcht0 [eax+64]
- prefetcht0 [eax+96]
-
- movups xmm1,xmmword ptr[eax]
- mulps xmm1,xmm0
- movups xmmword ptr[edx],xmm1
-
- movups xmm2,xmmword ptr[eax+4*4]
- mulps xmm2,xmm0
- movups xmmword ptr[edx+4*4],xmm2
-
- movups xmm3,xmmword ptr[eax+8*4]
- mulps xmm3,xmm0
- movups xmmword ptr[edx+8*4],xmm3
-
- movups xmm4,xmmword ptr[eax+12*4]
- mulps xmm4,xmm0
- movups xmmword ptr[edx+12*4],xmm4
-
- add eax,16*4
- add edx,16*4
- loop loopu
- }
- }
-
- src += n<<4,dst += n<<4;
-zero:
- while(cnt--) *(dst++) = *(src++)*op;
- }
- else
-#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(__VEC__)
- if(GetSIMDCapabilities()&simd_altivec && VectorsAligned(src,dst))
- MulAltivec(dst,src,op,cnt);
- else
-#endif // _MSC_VER
-#endif // FLEXT_USE_SIMD
- {
- int n = cnt>>3;
- cnt -= n<<3;
-
- if(src == dst) {
- while(n--) {
- dst[0] *= op; dst[1] *= op; dst[2] *= op; dst[3] *= op;
- dst[4] *= op; dst[5] *= op; dst[6] *= op; dst[7] *= op;
- dst += 8;
- }
- while(cnt--) *(dst++) *= op;
- }
- else {
- while(n--) {
- dst[0] = src[0]*op; dst[1] = src[1]*op;
- dst[2] = src[2]*op; dst[3] = src[3]*op;
- dst[4] = src[4]*op; dst[5] = src[5]*op;
- dst[6] = src[6]*op; dst[7] = src[7]*op;
- src += 8,dst += 8;
- }
- while(cnt--) *(dst++) = *(src++)*op;
- }
- }
-#endif
-}
-
-
-void flext::MulSamples(t_sample *dst,const t_sample *src,const t_sample *op,int cnt)
-{
-#ifdef FLEXT_USE_IPP
- if(sizeof(t_sample) == 4) {
- ippsMul_32f((const float *)src,(const float *)op,(float *)dst,cnt);
- }
- else if(sizeof(t_sample) == 8) {
- ippsMul_32f((const double *)src,(const double *)op,(double *)dst,cnt);
- }
- else
- ERRINTERNAL();
-#else
-#ifdef FLEXT_USE_SIMD
-#ifdef _MSC_VER
- if(GetSIMDCapabilities()&simd_sse) {
- // single precision
- int n = cnt>>4;
- if(!n) goto zero;
- cnt -= n<<4;
-
- __asm {
- mov eax,[src]
- mov ebx,[op]
- prefetcht0 [eax+0]
- prefetcht0 [ebx+0]
- prefetcht0 [eax+32]
- prefetcht0 [ebx+32]
- }
-
- if(VectorsAligned(src,dst)) {
- if(IsVectorAligned(op)) {
- __asm {
- mov ecx,[n]
- mov eax,dword ptr [src]
- mov edx,dword ptr [dst]
- mov ebx,dword ptr [op]
- loopaa:
- prefetcht0 [eax+64]
- prefetcht0 [ebx+64]
- prefetcht0 [eax+96]
- prefetcht0 [ebx+96]
-
- movaps xmm0,xmmword ptr[eax]
- movaps xmm1,xmmword ptr[ebx]
- mulps xmm0,xmm1
- movaps xmmword ptr[edx],xmm0
-
- movaps xmm2,xmmword ptr[eax+4*4]
- movaps xmm3,xmmword ptr[ebx+4*4]
- mulps xmm2,xmm3
- movaps xmmword ptr[edx+4*4],xmm2
-
- movaps xmm4,xmmword ptr[eax+8*4]
- movaps xmm5,xmmword ptr[ebx+8*4]
- mulps xmm4,xmm5
- movaps xmmword ptr[edx+8*4],xmm4
-
- movaps xmm6,xmmword ptr[eax+12*4]
- movaps xmm7,xmmword ptr[ebx+12*4]
- mulps xmm6,xmm7
- movaps xmmword ptr[edx+12*4],xmm6
-
- add eax,16*4
- add ebx,16*4
- add edx,16*4
- loop loopaa
- }
- }
- else {
- __asm {
- mov ecx,[n]
- mov eax,dword ptr [src]
- mov edx,dword ptr [dst]
- mov ebx,dword ptr [op]
- loopau:
- prefetcht0 [eax+64]
- prefetcht0 [ebx+64]
- prefetcht0 [eax+96]
- prefetcht0 [ebx+96]
-
- movaps xmm0,xmmword ptr[eax]
- movups xmm1,xmmword ptr[ebx]
- mulps xmm0,xmm1
- movaps xmmword ptr[edx],xmm0
-
- movaps xmm2,xmmword ptr[eax+4*4]
- movups xmm3,xmmword ptr[ebx+4*4]
- mulps xmm2,xmm3
- movaps xmmword ptr[edx+4*4],xmm2
-
- movaps xmm4,xmmword ptr[eax+8*4]
- movups xmm5,xmmword ptr[ebx+8*4]
- mulps xmm4,xmm5
- movaps xmmword ptr[edx+8*4],xmm4
-
- movaps xmm6,xmmword ptr[eax+12*4]
- movups xmm7,xmmword ptr[ebx+12*4]
- mulps xmm6,xmm7
- movaps xmmword ptr[edx+12*4],xmm6
-
- add eax,16*4
- add ebx,16*4
- add edx,16*4
- loop loopau
- }
- }
- }
- else {
- if(IsVectorAligned(op)) {
- __asm {
- mov ecx,[n]
- mov eax,dword ptr [src]
- mov edx,dword ptr [dst]
- mov ebx,dword ptr [op]
- loopua:
- prefetcht0 [eax+64]
- prefetcht0 [ebx+64]
- prefetcht0 [eax+96]
- prefetcht0 [ebx+96]
-
- movups xmm0,xmmword ptr[eax]
- movaps xmm1,xmmword ptr[ebx]
- mulps xmm0,xmm1
- movups xmmword ptr[edx],xmm0
-
- movups xmm2,xmmword ptr[eax+4*4]
- movaps xmm3,xmmword ptr[ebx+4*4]
- mulps xmm2,xmm3
- movups xmmword ptr[edx+4*4],xmm2
-
- movups xmm4,xmmword ptr[eax+8*4]
- movaps xmm5,xmmword ptr[ebx+8*4]
- mulps xmm4,xmm5
- movups xmmword ptr[edx+8*4],xmm4
-
- movups xmm6,xmmword ptr[eax+12*4]
- movaps xmm7,xmmword ptr[ebx+12*4]
- mulps xmm6,xmm7
- movups xmmword ptr[edx+12*4],xmm6
-
- add eax,16*4
- add ebx,16*4
- add edx,16*4
- loop loopua
- }
- }
- else {
- __asm {
- mov ecx,[n]
- mov eax,dword ptr [src]
- mov edx,dword ptr [dst]
- mov ebx,dword ptr [op]
-loopuu:
- prefetcht0 [eax+64]
- prefetcht0 [ebx+64]
- prefetcht0 [eax+96]
- prefetcht0 [ebx+96]
-
- movups xmm0,xmmword ptr[eax]
- movups xmm1,xmmword ptr[ebx]
- mulps xmm0,xmm1
- movups xmmword ptr[edx],xmm0
-
- movups xmm2,xmmword ptr[eax+4*4]
- movups xmm3,xmmword ptr[ebx+4*4]
- mulps xmm2,xmm3
- movups xmmword ptr[edx+4*4],xmm2
-
- movups xmm4,xmmword ptr[eax+8*4]
- movups xmm5,xmmword ptr[ebx+8*4]
- mulps xmm4,xmm5
- movups xmmword ptr[edx+8*4],xmm4
-
- movups xmm6,xmmword ptr[eax+12*4]
- movups xmm7,xmmword ptr[ebx+12*4]
- mulps xmm6,xmm7
- movups xmmword ptr[edx+12*4],xmm6
-
- add eax,16*4
- add ebx,16*4
- add edx,16*4
- loop loopuu
- }
- }
- }
-
- src += n<<4,dst += n<<4,op += n<<4;
-zero:
- while(cnt--) *(dst++) = *(src++) * *(op++);
- }
- else
-#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(__VEC__)
- if(GetSIMDCapabilities()&simd_altivec && VectorsAligned(src,op,dst))
- MulAltivec(dst,src,op,cnt);
- else
-#endif // _MSC_VER
-#endif // FLEXT_USE_SIMD
- {
- int n = cnt>>3;
- cnt -= n<<3;
-
- if(src == dst) {
- while(n--) {
- dst[0] *= op[0]; dst[1] *= op[1];
- dst[2] *= op[2]; dst[3] *= op[3];
- dst[4] *= op[4]; dst[5] *= op[5];
- dst[6] *= op[6]; dst[7] *= op[7];
- dst += 8,op += 8;
- }
- while(cnt--) *(dst++) *= *(op++);
- }
- else {
- while(n--) {
- dst[0] = src[0]*op[0]; dst[1] = src[1]*op[1];
- dst[2] = src[2]*op[2]; dst[3] = src[3]*op[3];
- dst[4] = src[4]*op[4]; dst[5] = src[5]*op[5];
- dst[6] = src[6]*op[6]; dst[7] = src[7]*op[7];
- src += 8,dst += 8,op += 8;
- }
- while(cnt--) *(dst++) = *(src++) * *(op++);
- }
- }
-#endif
-}
-
-
-void flext::AddSamples(t_sample *dst,const t_sample *src,t_sample op,int cnt)
-{
-#ifdef FLEXT_USE_IPP
- if(sizeof(t_sample) == 4) {
- ippsAddC_32f((const float *)src,(float)op,(float *)dst,cnt);
- }
- else if(sizeof(t_sample) == 8) {
- ippsAddC_64f_I((const double *)src,(double)op,(double *)dst,cnt);
- }
- else
- ERRINTERNAL();
-#else
-#ifdef FLEXT_USE_SIMD
-#ifdef _MSC_VER
- if(GetSIMDCapabilities()&simd_sse) {
- // single precision
- int n = cnt>>4;
- if(!n) goto zero;
- cnt -= n<<4;
-
- __asm {
- mov eax,[src]
- prefetcht0 [eax+0]
- prefetcht0 [eax+32]
-
- movss xmm0,xmmword ptr [op]
- shufps xmm0,xmm0,0
- }
-
- if(VectorsAligned(src,dst)) {
- // aligned version
- __asm {
- mov ecx,[n]
- mov eax,dword ptr [src]
- mov edx,dword ptr [dst]
-loopa:
- prefetcht0 [eax+64]
- prefetcht0 [eax+96]
-
- movaps xmm1,xmmword ptr[eax]
- addps xmm1,xmm0
- movaps xmmword ptr[edx],xmm1
-
- movaps xmm2,xmmword ptr[eax+4*4]
- addps xmm2,xmm0
- movaps xmmword ptr[edx+4*4],xmm2
-
- movaps xmm3,xmmword ptr[eax+8*4]
- addps xmm3,xmm0
- movaps xmmword ptr[edx+8*4],xmm3
-
- movaps xmm4,xmmword ptr[eax+12*4]
- addps xmm4,xmm0
- movaps xmmword ptr[edx+12*4],xmm4
-
- add eax,16*4
- add edx,16*4
- loop loopa
- }
- }
- else {
- // unaligned version
- __asm {
- mov ecx,[n]
- mov eax,dword ptr [src]
- mov edx,dword ptr [dst]
-loopu:
- prefetcht0 [eax+64]
- prefetcht0 [eax+96]
-
- movups xmm1,xmmword ptr[eax]
- addps xmm1,xmm0
- movups xmmword ptr[edx],xmm1
-
- movups xmm2,xmmword ptr[eax+4*4]
- addps xmm2,xmm0
- movups xmmword ptr[edx+4*4],xmm2
-
- movups xmm3,xmmword ptr[eax+8*4]
- addps xmm3,xmm0
- movups xmmword ptr[edx+8*4],xmm3
-
- movups xmm4,xmmword ptr[eax+12*4]
- addps xmm4,xmm0
- movups xmmword ptr[edx+12*4],xmm4
-
- add eax,16*4
- add edx,16*4
- loop loopu
- }
- }
- src += n<<4,dst += n<<4,op += n<<4;
-zero:
- while(cnt--) *(dst++) = *(src++)+op;
- }
- else
-#elif FLEXT_CPU == FLEXT_CPU_PPC && defined(__VEC__)
- if(GetSIMDCapabilities()&simd_altivec && VectorsAligned(src,dst))
- AddAltivec(dst,src,op,cnt);
- else
-#endif // _MSC_VER
-#endif // FLEXT_USE_SIMD
- {
- int n = cnt>>3;
- cnt -= n<<3;
-
- if(src == dst) {
- while(n--) {
- dst[0] += op; dst[1] += op; dst[2] += op; dst[3] += op;
- dst[4] += op; dst[5] += op; dst[6] += op; dst[7] += op;
- dst += 8;
- }
- while(cnt--) *(dst++) += op;
- }
- else {
- while(n--) {
- dst[0] = src[0]+op; dst[1] = src[1]+op;
- dst[2] = src[2]+op; dst[3] = src[3]+op;
- dst[4] = src[4]+op; dst[5] = src[5]+op;
- dst[6] = src[6]+op; dst[7] = src[7]+op;
- src += 8,dst += 8;
- }
- while(cnt--) *(dst++) = *(src++)+op;
- }
- }
-#endif
-}
-
-
-void flext::AddSamples(t_sample *dst,const t_sample *src,const t_sample *op,int cnt)
-{
-#ifdef FLEXT_USE_IPP
- if(sizeof(t_sample) == 4) {
- ippsAdd_32f((const float *)src,(const float *)op,(float *)dst,cnt);
- }
- else if(sizeof(t_sample) == 8) {
- ippsAdd_64f((const double *)src,(const double *)op,(double *)dst,cnt);
- }
- else
- ERRINTERNAL();
-#else
-#ifdef FLEXT_USE_SIMD
-#ifdef _MSC_VER
- if(GetSIMDCapabilities()&simd_sse) {
- // Prefetch cache
- __asm {
- mov eax,dword ptr [src]
- mov ebx,dword ptr [op]
- prefetcht0 [eax]
- prefetcht0 [ebx]
- prefetcht0 [eax+32]
- prefetcht0 [ebx+32]
- }
-
- // single precision
- int n = cnt>>4;
- if(!n) goto zero;
- cnt -= n<<4;
-
- if(VectorsAligned(src,dst)) {
- if(IsVectorAligned(op)) {
- __asm {
- mov ecx,dword ptr [n]
- mov eax,dword ptr [src]
- mov edx,dword ptr [dst]
- mov ebx,dword ptr [op]
- loopaa:
- prefetcht0 [eax+64]
- prefetcht0 [ebx+64]
- prefetcht0 [eax+96]
- prefetcht0 [ebx+96]
-
- movaps xmm0,xmmword ptr[eax]
- movaps xmm1,xmmword ptr[ebx]
- addps xmm0,xmm1
- movaps xmmword ptr[edx],xmm0
-
- movaps xmm2,xmmword ptr[eax+4*4]
- movaps xmm3,xmmword ptr[ebx+4*4]
- addps xmm2,xmm3
- movaps xmmword ptr[edx+4*4],xmm2
-
- movaps xmm4,xmmword ptr[eax+8*4]
- movaps xmm5,xmmword ptr[ebx+8*4]
- addps xmm4,xmm5
- movaps xmmword ptr[edx+8*4],xmm4
-
- movaps xmm6,xmmword ptr[eax+12*4]
- movaps xmm7,xmmword ptr[ebx+12*4]
- addps xmm6,xmm7
- movaps xmmword ptr[edx+12*4],xmm6
-
- add eax,16*4
- add ebx,16*4
- add edx,16*4
- loop loopaa
- }
- }
- else {
- __asm {
- mov ecx,dword ptr [n]
- mov eax,dword ptr [src]
- mov edx,dword ptr [dst]
- mov ebx,dword ptr [op]
- loopau:
- prefetcht0 [eax+64]
- prefetcht0 [ebx+64]
- prefetcht0 [eax+96]
- prefetcht0 [ebx+96]
-
- movaps xmm0,xmmword ptr[eax]
- movups xmm1,xmmword ptr[ebx]
- addps xmm0,xmm1
- movaps xmmword ptr[edx],xmm0
-
- movaps xmm2,xmmword ptr[eax+4*4]
- movups xmm3,xmmword ptr[ebx+4*4]
- addps xmm2,xmm3
- movaps xmmword ptr[edx+4*4],xmm2
-
- movaps xmm4,xmmword ptr[eax+8*4]
- movups xmm5,xmmword ptr[ebx+8*4]
- addps xmm4,xmm5
- movaps xmmword ptr[edx+8*4],xmm4
-
- movaps xmm6,xmmword ptr[eax+12*4]
- movups xmm7,xmmword ptr[ebx+12*4]
- addps xmm6,xmm7
- movaps xmmword ptr[edx+12*4],xmm6
-
- add eax,16*4
- add ebx,16*4
- add edx,16*4
- loop loopau
- }
- }
- }
- else {
- if(IsVectorAligned(op)) {
- __asm {
- mov ecx,dword ptr [n]
- mov eax,dword ptr [src]
- mov edx,dword ptr [dst]
- mov ebx,dword ptr [op]
- loopua:
- prefetcht0 [eax+64]
- prefetcht0 [ebx+64]
- prefetcht0 [eax+96]
- prefetcht0 [ebx+96]
-
- movups xmm0,xmmword ptr[eax]
- movaps xmm1,xmmword ptr[ebx]
- addps xmm0,xmm1
- movups xmmword ptr[edx],xmm0
-
- movups xmm2,xmmword ptr[eax+4*4]
- movaps xmm3,xmmword ptr[ebx+4*4]
- addps xmm2,xmm3
- movups xmmword ptr[edx+4*4],xmm2
-
- movups xmm4,xmmword ptr[eax+8*4]
- movaps xmm5,xmmword ptr[ebx+8*4]
- addps xmm4,xmm5
- movups xmmword ptr[edx+8*4],xmm4
-
- movups xmm6,xmmword ptr[eax+12*4]
- movaps xmm7,xmmword ptr[ebx+12*4]
- addps xmm6,xmm7
- movups xmmword ptr[edx+12*4],xmm6
-
- add eax,16*4
- add ebx,16*4
- add edx,16*4
- loop loopua
- }
- }
- else {
- __asm {
- mov ecx,dword ptr [n]
- mov eax,dword ptr [src]
- mov edx,dword ptr [dst]
- mov ebx,dword ptr [op]
- loopuu:
- prefetcht0 [eax+64]
- prefetcht0 [ebx+64]
- prefetcht0 [eax+96]
- prefetcht0 [ebx+96]
-
- movups xmm0,xmmword ptr[eax]
- movups xmm1,xmmword ptr[ebx]
- addps xmm0,xmm1
- movups xmmword ptr[edx],xmm0
-
- movups xmm2,xmmword ptr[eax+4*4]
- movups xmm3,xmmword ptr[ebx+4*4]
- addps xmm2,xmm3
- movups xmmword ptr[edx+4*4],xmm2
-
- movups xmm4,xmmword ptr[eax+8*4]
- movups xmm5,xmmword ptr[ebx+8*4]
- addps xmm4,xmm5
- movups xmmword ptr[edx+8*4],xmm4
-
- movups xmm6,xmmword ptr[eax+12*4]
- movups xmm7,xmmword ptr[ebx+12*4]
- addps xmm6,xmm7
- movups xmmword ptr[edx+12*4],xmm6
-
- add eax,16*4
- add ebx,16*4
- add edx,16*4
- loop loopuu
- }
- }
- }
-
- src += n<<4,dst += n<<4,op += n<<4;
-zero:
- while(cnt--) *(dst++) = *(src++) + *(op++);
- }
- else
-#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(__VEC__)
- if(GetSIMDCapabilities()&simd_altivec && VectorsAligned(src,op,dst))
- AddAltivec(dst,src,op,cnt);
- else
-#endif // _MSC_VER
-#endif // FLEXT_USE_SIMD
- {
- int n = cnt>>3;
- cnt -= n<<3;
-
- if(dst == src) {
- while(n--) {
- dst[0] += op[0]; dst[1] += op[1];
- dst[2] += op[2]; dst[3] += op[3];
- dst[4] += op[4]; dst[5] += op[5];
- dst[6] += op[6]; dst[7] += op[7];
- dst += 8,op += 8;
- }
- while(cnt--) *(dst++) += *(op++);
- }
- else {
- while(n--) {
- dst[0] = src[0]+op[0]; dst[1] = src[1]+op[1];
- dst[2] = src[2]+op[2]; dst[3] = src[3]+op[3];
- dst[4] = src[4]+op[4]; dst[5] = src[5]+op[5];
- dst[6] = src[6]+op[6]; dst[7] = src[7]+op[7];
- src += 8,dst += 8,op += 8;
- }
- while(cnt--) *(dst++) = *(src++) + *(op++);
- }
- }
-#endif
-}
-
-
-void flext::ScaleSamples(t_sample *dst,const t_sample *src,t_sample opmul,t_sample opadd,int cnt)
-{
-#ifdef FLEXT_USE_IPP
- if(sizeof(t_sample) == 4) {
- ippsMulC_32f((const float *)src,(float)opmul,(float *)dst,cnt);
- ippsAddC_32f_I((float)opadd,(float *)dst,cnt);
- }
- else if(sizeof(t_sample) == 8) {
- ippsMulC_64f((const double *)src,(double)opmul,(double *)dst,cnt);
- ippsAddC_64f_I((double)opadd,(double *)dst,cnt);
- }
- else
- ERRINTERNAL();
-#else
-#ifdef FLEXT_USE_SIMD
-#ifdef _MSC_VER
- if(GetSIMDCapabilities()&simd_sse) {
- // single precision
- int n = cnt>>4;
- if(!n) goto zero;
- cnt -= n<<4;
-
- __asm {
- mov eax,dword ptr [src]
- prefetcht0 [eax+0]
- prefetcht0 [eax+32]
-
- movss xmm0,xmmword ptr [opadd]
- shufps xmm0,xmm0,0
- movss xmm1,xmmword ptr [opmul]
- shufps xmm1,xmm1,0
- }
-
- if(VectorsAligned(src,dst)) {
- // aligned version
- __asm {
- mov ecx,dword ptr [n]
- mov eax,dword ptr [src]
- mov edx,dword ptr [dst]
-loopa:
- prefetcht0 [eax+64]
- prefetcht0 [eax+96]
-
- movaps xmm2,xmmword ptr[eax]
- mulps xmm2,xmm1
- addps xmm2,xmm0
- movaps xmmword ptr[edx],xmm2
-
- movaps xmm3,xmmword ptr[eax+4*4]
- mulps xmm3,xmm1
- addps xmm3,xmm0
- movaps xmmword ptr[edx+4*4],xmm3
-
- movaps xmm4,xmmword ptr[eax+8*4]
- mulps xmm4,xmm1
- addps xmm4,xmm0
- movaps xmmword ptr[edx+8*4],xmm4
-
- movaps xmm5,xmmword ptr[eax+12*4]
- mulps xmm5,xmm1
- addps xmm5,xmm0
- movaps xmmword ptr[edx+12*4],xmm5
-
- add eax,16*4
- add edx,16*4
- loop loopa
- }
- }
- else {
- // unaligned version
- __asm {
- mov ecx,dword ptr [n]
- mov eax,dword ptr [src]
- mov edx,dword ptr [dst]
-loopu:
- prefetcht0 [eax+64]
- prefetcht0 [eax+96]
-
- movups xmm2,xmmword ptr[eax]
- mulps xmm2,xmm1
- addps xmm2,xmm0
- movups xmmword ptr[edx],xmm2
-
- movups xmm3,xmmword ptr[eax+4*4]
- mulps xmm3,xmm1
- addps xmm3,xmm0
- movups xmmword ptr[edx+4*4],xmm3
-
- movups xmm4,xmmword ptr[eax+8*4]
- mulps xmm4,xmm1
- addps xmm4,xmm0
- movups xmmword ptr[edx+8*4],xmm4
-
- movups xmm5,xmmword ptr[eax+12*4]
- mulps xmm5,xmm1
- addps xmm5,xmm0
- movups xmmword ptr[edx+12*4],xmm5
-
- add eax,16*4
- add edx,16*4
- loop loopu
- }
- }
-
- src += n<<4,dst += n<<4;
-zero:
- while(cnt--) *(dst++) = *(src++)*opmul+opadd;
- }
- else
-#elif FLEXT_CPU == FLEXT_CPU_PPC && defined(__VEC__)
- if(GetSIMDCapabilities()&simd_altivec && VectorsAligned(src,dst))
- ScaleAltivec(dst,src,opmul,opadd,cnt);
- else
-#endif // _MSC_VER
-#endif // FLEXT_USE_SIMD
- {
- int n = cnt>>3;
- cnt -= n<<3;
- while(n--) {
- dst[0] = src[0]*opmul+opadd; dst[1] = src[1]*opmul+opadd;
- dst[2] = src[2]*opmul+opadd; dst[3] = src[3]*opmul+opadd;
- dst[4] = src[4]*opmul+opadd; dst[5] = src[5]*opmul+opadd;
- dst[6] = src[6]*opmul+opadd; dst[7] = src[7]*opmul+opadd;
- src += 8,dst += 8;
- }
- while(cnt--) *(dst++) = *(src++)*opmul+opadd;
- }
-#endif
-}
-
-void flext::ScaleSamples(t_sample *dst,const t_sample *src,t_sample opmul,const t_sample *opadd,int cnt)
-{
-#ifdef FLEXT_USE_IPP
- if(sizeof(t_sample) == 4) {
- ippsMulC_32f((const float *)src,(float)opmul,(float *)dst,cnt);
- ippsAdd_32f_I((float *)opadd,(float *)dst,cnt);
- }
- else if(sizeof(t_sample) == 8) {
- ippsMulC_64f((const double *)src,(double)opmul,(double *)dst,cnt);
- ippsAdd_64f_I((double *)opadd,(double *)dst,cnt);
- }
- else
- ERRINTERNAL();
-#else
-#ifdef FLEXT_USE_SIMD
-#ifdef _MSC_VER
- if(GetSIMDCapabilities()&simd_sse) {
- // single precision
- int n = cnt>>4;
- if(!n) goto zero;
- cnt -= n<<4;
-
- __asm {
- mov eax,dword ptr [src]
- prefetcht0 [eax+0]
- prefetcht0 [eax+32]
-
- movss xmm0,xmmword ptr [opmul]
- shufps xmm0,xmm0,0
- }
-
- if(VectorsAligned(src,dst,opadd)) {
- // aligned version
- __asm {
- mov ecx,dword ptr [n]
- mov eax,dword ptr [src]
- mov edx,dword ptr [dst]
- mov ebx,dword ptr [opadd]
-loopa:
- prefetcht0 [eax+64]
- prefetcht0 [ebx+64]
- prefetcht0 [eax+96]
- prefetcht0 [ebx+96]
-
- movaps xmm2,xmmword ptr[eax]
- movaps xmm1,xmmword ptr[ebx]
- mulps xmm2,xmm0
- addps xmm2,xmm1
- movaps xmmword ptr[edx],xmm2
-
- movaps xmm3,xmmword ptr[eax+4*4]
- movaps xmm1,xmmword ptr[ebx+4*4]
- mulps xmm3,xmm0
- addps xmm3,xmm1
- movaps xmmword ptr[edx+4*4],xmm3
-
- movaps xmm4,xmmword ptr[eax+8*4]
- movaps xmm1,xmmword ptr[ebx+8*4]
- mulps xmm4,xmm0
- addps xmm4,xmm1
- movaps xmmword ptr[edx+8*4],xmm4
-
- movaps xmm5,xmmword ptr[eax+12*4]
- movaps xmm1,xmmword ptr[ebx+12*4]
- mulps xmm5,xmm0
- addps xmm5,xmm1
- movaps xmmword ptr[edx+12*4],xmm5
-
- add eax,16*4
- add edx,16*4
- add ebx,16*4
- loop loopa
- }
- }
- else {
- // unaligned version
- __asm {
- mov ecx,dword ptr [n]
- mov eax,dword ptr [src]
- mov edx,dword ptr [dst]
- mov ebx,dword ptr [opadd]
-loopu:
- prefetcht0 [eax+64]
- prefetcht0 [ebx+64]
- prefetcht0 [eax+96]
- prefetcht0 [ebx+96]
-
- movups xmm2,xmmword ptr[eax]
- movups xmm1,xmmword ptr[ebx]
- mulps xmm2,xmm0
- addps xmm2,xmm1
- movups xmmword ptr[edx],xmm2
-
- movups xmm3,xmmword ptr[eax+4*4]
- movups xmm1,xmmword ptr[ebx+4*4]
- mulps xmm3,xmm0
- addps xmm3,xmm1
- movups xmmword ptr[edx+4*4],xmm3
-
- movups xmm4,xmmword ptr[eax+8*4]
- movups xmm1,xmmword ptr[ebx+8*4]
- mulps xmm4,xmm0
- addps xmm4,xmm1
- movups xmmword ptr[edx+8*4],xmm4
-
- movups xmm5,xmmword ptr[eax+12*4]
- movups xmm1,xmmword ptr[ebx+12*4]
- mulps xmm5,xmm0
- addps xmm5,xmm1
- movups xmmword ptr[edx+12*4],xmm5
-
- add eax,16*4
- add edx,16*4
- add ebx,16*4
- loop loopu
- }
- }
-
- src += n<<4,dst += n<<4,opadd += n<<4;
-zero:
- while(cnt--) *(dst++) = *(src++) * opmul + *(opadd++);
- }
- else
-#elif FLEXT_CPU == FLEXT_CPU_PPC && defined(__VEC__)
- if(GetSIMDCapabilities()&simd_altivec && VectorsAligned(src,dst,opadd))
- ScaleAltivec(dst,src,opmul,opadd,cnt);
- else
-#endif // _MSC_VER
-#endif // FLEXT_USE_SIMD
- {
- int n = cnt>>3;
- cnt -= n<<3;
- if(dst == opadd) {
- while(n--) {
- dst[0] += src[0]*opmul; dst[1] += src[1]*opmul;
- dst[2] += src[2]*opmul; dst[3] += src[3]*opmul;
- dst[4] += src[4]*opmul; dst[5] += src[5]*opmul;
- dst[6] += src[6]*opmul; dst[7] += src[7]*opmul;
- src += 8,dst += 8;
- }
- while(cnt--) *(dst++) += *(src++)*opmul;
- }
- else {
- while(n--) {
- dst[0] = src[0]*opmul+opadd[0]; dst[1] = src[1]*opmul+opadd[1];
- dst[2] = src[2]*opmul+opadd[2]; dst[3] = src[3]*opmul+opadd[3];
- dst[4] = src[4]*opmul+opadd[4]; dst[5] = src[5]*opmul+opadd[5];
- dst[6] = src[6]*opmul+opadd[6]; dst[7] = src[7]*opmul+opadd[7];
- src += 8,dst += 8,opadd += 8;
- }
- while(cnt--) *(dst++) = *(src++)*opmul+*(opadd++);
- }
- }
-#endif
-}
-
-void flext::ScaleSamples(t_sample *dst,const t_sample *src,const t_sample *opmul,const t_sample *opadd,int cnt)
-{
-#ifdef FLEXT_USE_IPP
- if(sizeof(t_sample) == 4) {
- ippsMul_32f((const float *)src,(const float *)opmul,(float *)dst,cnt);
- ippsAdd_32f_I((const float *)opadd,(float *)dst,cnt);
- }
- else if(sizeof(t_sample) == 8) {
- ippsMul_64f((const double *)src,(const double *)opmul,(double *)dst,cnt);
- ippsAdd_64f_I((const double *)opadd,(double *)dst,cnt);
- }
- else
- ERRINTERNAL();
-#else
-#ifdef FLEXT_USE_SIMD
-#ifdef _MSC_VER
- if(GetSIMDCapabilities()&simd_sse) {
- // single precision
- int n = cnt>>4;
- if(!n) goto zero;
- cnt -= n<<4;
-
- __asm {
- mov eax,dword ptr [src]
- prefetcht0 [eax+0]
- prefetcht0 [eax+32]
- }
-
- if(VectorsAligned(src,dst,opmul,opadd)) {
- // aligned version
- __asm {
- mov ecx,dword ptr [n]
- mov eax,dword ptr [src]
- mov edx,dword ptr [dst]
- mov esi,dword ptr [opmul]
- mov ebx,dword ptr [opadd]
-loopa:
- prefetcht0 [eax+64]
- prefetcht0 [ebx+64]
- prefetcht0 [esi+64]
- prefetcht0 [eax+96]
- prefetcht0 [ebx+96]
- prefetcht0 [esi+96]
-
- movaps xmm2,xmmword ptr[eax]
- movaps xmm0,xmmword ptr[esi]
- movaps xmm1,xmmword ptr[ebx]
- mulps xmm2,xmm0
- addps xmm2,xmm1
- movaps xmmword ptr[edx],xmm2
-
- movaps xmm3,xmmword ptr[eax+4*4]
- movaps xmm0,xmmword ptr[esi+4*4]
- movaps xmm1,xmmword ptr[ebx+4*4]
- mulps xmm3,xmm0
- addps xmm3,xmm1
- movaps xmmword ptr[edx+4*4],xmm3
-
- movaps xmm4,xmmword ptr[eax+8*4]
- movaps xmm0,xmmword ptr[esi+8*4]
- movaps xmm1,xmmword ptr[ebx+8*4]
- mulps xmm4,xmm0
- addps xmm4,xmm1
- movaps xmmword ptr[edx+8*4],xmm4
-
- movaps xmm5,xmmword ptr[eax+12*4]
- movaps xmm0,xmmword ptr[esi+12*4]
- movaps xmm1,xmmword ptr[ebx+12*4]
- mulps xmm5,xmm0
- addps xmm5,xmm1
- movaps xmmword ptr[edx+12*4],xmm5
-
- add eax,16*4
- add edx,16*4
- add ebx,16*4
- add esi,16*4
- loop loopa
- }
- }
- else {
- // unaligned version
- __asm {
- mov ecx,dword ptr [n]
- mov eax,dword ptr [src]
- mov edx,dword ptr [dst]
- mov esi,dword ptr [opmul]
- mov ebx,dword ptr [opadd]
-loopu:
- prefetcht0 [eax+64]
- prefetcht0 [ebx+64]
- prefetcht0 [esi+64]
- prefetcht0 [eax+96]
- prefetcht0 [ebx+96]
- prefetcht0 [esi+96]
-
- movups xmm2,xmmword ptr[eax]
- movups xmm0,xmmword ptr[esi]
- movups xmm1,xmmword ptr[ebx]
- mulps xmm2,xmm0
- addps xmm2,xmm1
- movups xmmword ptr[edx],xmm2
-
- movups xmm3,xmmword ptr[eax+4*4]
- movups xmm0,xmmword ptr[esi+4*4]
- movups xmm1,xmmword ptr[ebx+4*4]
- mulps xmm3,xmm0
- addps xmm3,xmm1
- movups xmmword ptr[edx+4*4],xmm3
-
- movups xmm4,xmmword ptr[eax+8*4]
- movups xmm0,xmmword ptr[esi+8*4]
- movups xmm1,xmmword ptr[ebx+8*4]
- mulps xmm4,xmm0
- addps xmm4,xmm1
- movups xmmword ptr[edx+8*4],xmm4
-
- movups xmm5,xmmword ptr[eax+12*4]
- movups xmm0,xmmword ptr[esi+12*4]
- movups xmm1,xmmword ptr[ebx+12*4]
- mulps xmm5,xmm0
- addps xmm5,xmm1
- movups xmmword ptr[edx+12*4],xmm5
-
- add eax,16*4
- add edx,16*4
- add ebx,16*4
- add esi,16*4
- loop loopu
- }
- }
- src += n<<4,dst += n<<4,opmul += n<<4,opadd += n<<4;
-zero:
- while(cnt--) *(dst++) = *(src++) * *(opmul++) + *(opadd++);
- }
- else
-#elif FLEXT_CPU == FLEXT_CPU_PPC && defined(__VEC__)
- if(GetSIMDCapabilities()&simd_altivec && VectorsAligned(src,dst,opmul,opadd))
- ScaleAltivec(dst,src,opmul,opadd,cnt);
- else
-#endif // _MSC_VER
-#endif // FLEXT_USE_SIMD
- {
- int n = cnt>>3;
- cnt -= n<<3;
- if(dst == opadd) {
- while(n--) {
- dst[0] += src[0]*opmul[0]; dst[1] += src[1]*opmul[1];
- dst[2] += src[2]*opmul[2]; dst[3] += src[3]*opmul[3];
- dst[4] += src[4]*opmul[4]; dst[5] += src[5]*opmul[5];
- dst[6] += src[6]*opmul[6]; dst[7] += src[7]*opmul[7];
- src += 8,dst += 8,opmul += 8;
- }
- while(cnt--) *(dst++) += *(src++) * *(opmul++);
- }
- else {
- while(n--) {
- dst[0] = src[0]*opmul[0]+opadd[0]; dst[1] = src[1]*opmul[1]+opadd[1];
- dst[2] = src[2]*opmul[2]+opadd[2]; dst[3] = src[3]*opmul[3]+opadd[3];
- dst[4] = src[4]*opmul[4]+opadd[4]; dst[5] = src[5]*opmul[5]+opadd[5];
- dst[6] = src[6]*opmul[6]+opadd[6]; dst[7] = src[7]*opmul[7]+opadd[7];
- src += 8,dst += 8,opmul += 8,opadd += 8;
- }
- while(cnt--) *(dst++) = *(src++)* *(opmul++) + *(opadd++);
- }
- }
-#endif
-}
diff --git a/externals/grill/flext/source/flsndobj.cpp b/externals/grill/flext/source/flsndobj.cpp
deleted file mode 100644
index b884ce73..00000000
--- a/externals/grill/flext/source/flsndobj.cpp
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
-
-flext - C++ layer for Max/MSP and pd (pure data) externals
-
-Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-#include "flext.h"
-#include "flsndobj.h"
-
-
-flext_sndobj::flext_sndobj():
- inobjs(0),outobjs(0),
- inobj(NULL),tmpobj(NULL),outobj(NULL),
- smprt(0),blsz(0)
-{}
-
-bool flext_sndobj::Init()
-{
- bool ret = flext_dsp::Init();
- inobjs = CntInSig();
- outobjs = CntOutSig();
- return ret;
-}
-
-void flext_sndobj::Exit()
-{
- ClearObjs();
- flext_dsp::Exit();
-}
-
-void flext_sndobj::ClearObjs()
-{
- FreeObjs();
-
- if(inobj) {
- for(int i = 0; i < inobjs; ++i) delete inobj[i];
- delete[] inobj; inobj = NULL;
- }
- if(tmpobj) {
- for(int i = 0; i < inobjs; ++i) delete tmpobj[i];
- delete[] tmpobj; tmpobj = NULL;
- }
- if(outobj) {
- for(int i = 0; i < outobjs; ++i) delete outobj[i];
- delete[] outobj; outobj = NULL;
- }
-}
-
-bool flext_sndobj::CbDsp()
-{
- // called on every rebuild of the dsp chain
-
- int i;
- if(Blocksize() != blsz || Samplerate() != smprt) {
- // block size or sample rate has changed... rebuild all objects
-
- ClearObjs();
-
- blsz = Blocksize();
- smprt = Samplerate();
-
- // set up sndobjs for inlets and outlets
- if(inobjs) {
- inobj = new Inlet *[inobjs];
- tmpobj = new SndObj *[inobjs];
- for(i = 0; i < inobjs; ++i) {
- inobj[i] = new Inlet(InSig(i),blsz,smprt);
- tmpobj[i] = new SndObj(NULL,blsz,smprt);
- }
- }
- if(outobjs) {
- outobj = new Outlet *[outobjs];
- for(i = 0; i < outobjs; ++i) outobj[i] = new Outlet(OutSig(i),blsz,smprt);
- }
-
- if(!NewObjs()) ClearObjs();
- }
- else {
- // assign changed input/output vectors
-
- for(i = 0; i < inobjs; ++i) inobj[i]->SetBuf(InSig(i));
- for(i = 0; i < outobjs; ++i) outobj[i]->SetBuf(OutSig(i));
- }
- return true;
-}
-
-void flext_sndobj::CbSignal()
-{
- for(int i = 0; i < inobjs; ++i) *tmpobj[i] << *inobj[i];
- ProcessObjs();
-}
-
-
-flext_sndobj::Inlet::Inlet(const t_sample *b,int vecsz,float sr):
- SndIO(1,sizeof(t_sample)*8,NULL,vecsz,sr),buf(b)
-{}
-
-short flext_sndobj::Inlet::Read()
-{
- if(!m_error) {
- for(m_vecpos = 0; m_vecpos < m_samples; m_vecpos++)
- m_output[m_vecpos] = buf[m_vecpos];
- return 1;
- }
- else return 0;
-}
-
-short flext_sndobj::Inlet::Write() { return 0; }
-
-
-flext_sndobj::Outlet::Outlet(t_sample *b,int vecsz,float sr):
- SndIO(1,sizeof(t_sample)*8,NULL,vecsz,sr),buf(b)
-{}
-
-short flext_sndobj::Outlet::Read() { return 0; }
-
-short flext_sndobj::Outlet::Write()
-{
- if(!m_error) {
- if(m_IOobjs[0])
- for(m_vecpos = 0; m_vecpos < m_samples; m_vecpos++)
- buf[m_vecpos] = m_IOobjs[0]->Output(m_vecpos);
- return 1;
- }
- else return 0;
-}
-
-
diff --git a/externals/grill/flext/source/flsndobj.h b/externals/grill/flext/source/flsndobj.h
deleted file mode 100644
index c62b87d5..00000000
--- a/externals/grill/flext/source/flsndobj.h
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
-
-flext - C++ layer for Max/MSP and pd (pure data) externals
-
-Copyright (c) 2001-2007 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-#ifndef __FLSNDOBJ_H
-#define __FLSNDOBJ_H
-
-#include "flext.h"
-
-// PI is defined in the Max/MSP SDK, but clashes with SndObj.h
-#ifdef PI
-#undef PI
-#endif
-
-#ifndef FLEXT_THREADS
-#define NOPTHREAD
-#endif
-#include <SndObj.h>
-#include <SndIO.h>
-#undef NOPTHREAD
-
-
-class FLEXT_SHARE flext_sndobj:
- public flext_dsp
-{
- FLEXT_HEADER(flext_sndobj,flext_dsp)
-
-public:
- flext_sndobj();
-
- // these have to be overridden in child classes
- virtual bool NewObjs() { return true; }
- virtual void FreeObjs() {}
- virtual void ProcessObjs() {}
-
- // inputs and outputs
- SndObj &InObj(int i) { return *tmpobj[i]; }
- SndIO &OutObj(int i) { return *outobj[i]; }
-
-protected:
- virtual bool Init();
- virtual void Exit();
-
-private:
- //! SndObj for reading from inlet buffer
- class Inlet:
- public SndIO
- {
- public:
- Inlet(const t_sample *b,int vecsz,float sr);
- virtual short Read();
- virtual short Write();
-
- void SetBuf(const t_sample *b) { buf = b; }
-
- private:
- const t_sample *buf;
- };
-
- //! SndObj for writing to outlet buffer
- class Outlet:
- public SndIO
- {
- public:
- Outlet(t_sample *b,int vecsz,float sr);
- virtual short Read();
- virtual short Write();
-
- void SetBuf(t_sample *b) { buf = b; }
-
- private:
- t_sample *buf;
- };
-
- virtual bool CbDsp();
- virtual void CbSignal();
-
- void ClearObjs();
-
- int inobjs,outobjs;
- SndObj **tmpobj;
- Inlet **inobj;
- Outlet **outobj;
-
- float smprt;
- int blsz;
-};
-
-#endif
diff --git a/externals/grill/flext/source/flstdc.h b/externals/grill/flext/source/flstdc.h
deleted file mode 100644
index 13ac271c..00000000
--- a/externals/grill/flext/source/flstdc.h
+++ /dev/null
@@ -1,311 +0,0 @@
-/*
-
-flext - C++ layer for Max/MSP and pd (pure data) externals
-
-Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-/*! \file flstdc.h
- \brief Definitions to unite Max/MSP and PD notions
-
- This file contains a few definitions to unite a few of the notions that
- once drifted apart in Max and PD. It is not elegant but helps.
-*/
-
-#ifndef __FLEXT_STDC_H
-#define __FLEXT_STDC_H
-
-#if defined(_MSC_VER) && (_MSC_VER < 0x1300)
-/*
- include math.h here - when included with PD or Max/MSP headers,
- C linkage would be used which disturbs MSVC6
-*/
-#include <math.h>
-#endif
-
-#ifdef _MSC_VER
-#include <crtdbg.h>
-#else
-#include <assert.h>
-#endif
-
-// PD stuff
-
-#if FLEXT_SYS == FLEXT_SYS_PD
-
-/* PD definitions start here */
-
-#ifdef _MSC_VER
- #pragma warning (push)
- #pragma warning (disable:4091 4005)
-#endif
-
-#if FLEXT_OS == FLEXT_OS_WIN && !defined(NT)
-#define NT
-#endif
-
-extern "C" {
- // Include the relevant PD header files
- #ifdef FLEXT_DEBUG
- /* PD header file structure has changed with version 0.37
- from then on m_imp.h needs m_pd.h to be included before
- on the other hand versions < 0.37 don't like that....
- (they want m_imp.h solely as m_pd.h is included therein)
- So better use the m_pd.h here also for the debug version.
- Change that if really needed for debugging PD internals...
- */
-
- #ifndef PD_VERSION
- // include only if not already included
- #include <m_pd.h>
- #endif
-// #include <m_imp.h> // for easier debugging
- #else
- #ifndef PD_VERSION
- // include only if not already included
- #include <m_pd.h>
- #endif
- #endif
-}
-
-#ifdef _MSC_VER
- #pragma warning (pop)
-#endif
-
-#ifdef cabs
-#undef cabs // this is defined in m_pd.h (clashes with math.h in MacOSX)
-#endif
-
-typedef t_object t_sigobj;
-typedef t_gpointer *t_ptrtype;
-
-typedef t_float t_flint;
-typedef t_symbol *t_symtype;
-typedef t_class **t_thing;
-
-typedef t_clock t_qelem;
-
-#define A_NOTHING A_NULL
-#define A_FLINT A_FLOAT
-#define A_DEFFLINT A_DEFFLOAT
-#define A_DEFSYMBOL A_DEFSYM
-
-
-#elif FLEXT_SYS == FLEXT_SYS_MAX
-
-/* Max/MSP definitions start here */
-
-// 2-byte alignment for Max/MSP structures
-#ifdef _MSC_VER
-#pragma pack(push,flext_maxsdk)
-#pragma pack(2)
-#endif
-
-// Include the relevant Max/MSP header files
-
-#if FLEXT_OS == FLEXT_OS_MAC
- #if FLEXT_OSAPI == FLEXT_OSAPI_MAC_MACH
- // MachO version - must insert prefix header
- #include <ext_carbon_prefix.h>
- #else
- // CFM version
- #ifndef __MRC__
- #define powerc
- #endif
- #define __MOTO__ 0
-
- #include <MacTypes.h>
- #endif
-#elif FLEXT_OS == FLEXT_OS_WIN
- #define WIN_VERSION 1
- #define WIN_EXT_VERSION 1
-#endif
-
-// necessary for the old OS9 SDK
-extern "C" {
-
-#include "ext.h"
-#include "ext_user.h"
-#if FLEXT_OS != FLEXT_OS_MAC || defined(MAC_VERSION)
-// doesn't exist for OS9
-#include "ext_critical.h"
-#include "buffer.h"
-#else
-// for OS9 include "inofficial" header file
-#include "flmspbuffer.h"
-#endif
-#include "z_dsp.h"
-
-} // extern "C"
-
-#undef WIN_VERSION
-
-typedef t_pxobject t_sigobj; // that's the all-in-one object type of Max/MSP (not very memory-efficent, i guess)
-typedef t_patcher t_canvas;
-
-typedef t_int t_flint;
-typedef t_symbol *t_symtype;
-typedef t_object *t_thing;
-
-// for the following to work you should have the latest SDK
-#if FLEXT_OS == FLEXT_OS_MAC //&& !defined(MAC_VERSION)
-typedef struct qelem t_qelem;
-#else
-typedef void *t_qelem;
-#endif
-
-typedef method t_method;
-typedef method t_newmethod;
-typedef int t_atomtype;
-
-typedef struct clock t_clock;
-typedef void t_binbuf;
-
-#undef clock_free
-#define clock_free(tick) freeobject((object *)tick)
-
-#define A_NULL A_NOTHING
-#define A_DEFFLINT A_DEFLONG
-
-#ifndef A_INT
-#define A_INT A_LONG
-#endif
-
-#ifndef A_DEFINT
-#define A_DEFINT A_DEFLONG
-#endif
-
-#ifndef A_SYMBOL
-#define A_SYMBOL A_SYM
-#endif
-
-#ifndef A_DEFSYMBOL
-#define A_DEFSYMBOL A_DEFSYM
-#endif
-
-#if FLEXT_OS == FLEXT_OS_MAC && !defined(MAC_VERSION)
-// simulate non-existing functions for OS9
-#define critical_enter(N)
-#define critical_exit(N)
-#endif
-
-#ifdef _MSC_VER
-#pragma pack(pop,flext_maxsdk)
-#endif
-
-#else
-#error Platform not supported
-#endif // FLEXT_SYS
-
-
-// general definitions
-
-typedef t_symbol *t_symptr;
-
-
-// -------------------------
-
-#ifdef FLEXT_LOGGING
-/* If FLEXT_LOGGING is defined implement logging */
-
-#ifdef _MSC_VER
-#define FLEXT_LOG(s) _CrtDbgReport(_CRT_WARN,__FILE__,__LINE__,"flext",s)
-#define FLEXT_LOG1(s,v1) _CrtDbgReport(_CRT_WARN,__FILE__,__LINE__,"flext",s,v1)
-#define FLEXT_LOG2(s,v1,v2) _CrtDbgReport(_CRT_WARN,__FILE__,__LINE__,"flext",s,v1,v2)
-#define FLEXT_LOG3(s,v1,v2,v3) _CrtDbgReport(_CRT_WARN,__FILE__,__LINE__,"flext",s,v1,v2,v3)
-#define FLEXT_LOG4(s,v1,v2,v3,v4) _CrtDbgReport(_CRT_WARN,__FILE__,__LINE__,"flext",s,v1,v2,v3,v4)
-#define FLEXT_LOG5(s,v1,v2,v3,v4,v5) _CrtDbgReport(_CRT_WARN,__FILE__,__LINE__,"flext",s,v1,v2,v3,v4,v5)
-#define FLEXT_LOG6(s,v1,v2,v3,v4,v5,v6) _CrtDbgReport(_CRT_WARN,__FILE__,__LINE__,"flext",s,v1,v2,v3,v4,v5,v6)
-#define FLEXT_LOG7(s,v1,v2,v3,v4,v5,v6,v7) _CrtDbgReport(_CRT_WARN,__FILE__,__LINE__,"flext",s,v1,v2,v3,v4,v5,v6,v7)
-#define FLEXT_LOG8(s,v1,v2,v3,v4,v5,v6,v7,v8) _CrtDbgReport(_CRT_WARN,__FILE__,__LINE__,"flext",s,v1,v2,v3,v4,v5,v6,v7,v8)
-#define FLEXT_LOG9(s,v1,v2,v3,v4,v5,v6,v7,v8,v9) _CrtDbgReport(_CRT_WARN,__FILE__,__LINE__,"flext",s,v1,v2,v3,v4,v5,v6,v7,v8,v9)
-#else
-#define FLEXT_LOG(s) post(s)
-#define FLEXT_LOG1(s,v1) post(s,v1)
-#define FLEXT_LOG2(s,v1,v2) post(s,v1,v2)
-#define FLEXT_LOG3(s,v1,v2,v3) post(s,v1,v2,v3)
-#define FLEXT_LOG4(s,v1,v2,v3,v4) post(s,v1,v2,v3,v4)
-#define FLEXT_LOG5(s,v1,v2,v3,v4,v5) post(s,v1,v2,v3,v4,v5)
-#define FLEXT_LOG6(s,v1,v2,v3,v4,v5,v6) post(s,v1,v2,v3,v4,v5,v6)
-#define FLEXT_LOG7(s,v1,v2,v3,v4,v5,v6,v7) post(s,v1,v2,v3,v4,v5,v6,v7)
-#define FLEXT_LOG8(s,v1,v2,v3,v4,v5,v6,v7,v8) post(s,v1,v2,v3,v4,v5,v6,v7,v8)
-#define FLEXT_LOG9(s,v1,v2,v3,v4,v5,v6,v7,v8,v9) post(s,v1,v2,v3,v4,v5,v6,v7,v8,v9)
-#endif
-
-#else
-
-/* If FLEXT_LOGGING is not defined avoid logging */
-#define FLEXT_LOG(s) ((void)0)
-#define FLEXT_LOG1(s,v1) ((void)0)
-#define FLEXT_LOG2(s,v1,v2) ((void)0)
-#define FLEXT_LOG3(s,v1,v2,v3) ((void)0)
-#define FLEXT_LOG4(s,v1,v2,v3,v4) ((void)0)
-#define FLEXT_LOG5(s,v1,v2,v3,v4,v5) ((void)0)
-#define FLEXT_LOG6(s,v1,v2,v3,v4,v5,v6) ((void)0)
-#define FLEXT_LOG7(s,v1,v2,v3,v4,v5,v6,v7) ((void)0)
-#define FLEXT_LOG8(s,v1,v2,v3,v4,v5,v6,v7,v8) ((void)0)
-#define FLEXT_LOG9(s,v1,v2,v3,v4,v5,v6,v7,v8,v9) ((void)0)
-
-#endif
-
-#ifdef FLEXT_DEBUG
-#ifdef _MSC_VER
-#define FLEXT_ASSERT(b) do { if(!(b)) _CrtDbgReport(_CRT_ASSERT,__FILE__,__LINE__,"flext",#b); } while(false)
-#define FLEXT_WARN(str) _CrtDbgReport(_CRT_WARN,__FILE__,__LINE__,"flext",NULL)
-#define FLEXT_ERROR(str) _CrtDbgReport(_CRT_ERROR,__FILE__,__LINE__,"flext",NULL)
-#else
-#define FLEXT_ASSERT(b) assert(b)
-//#define FLEXT_ASSERT(b) do { if(!(b)) error("Assertion failed: " #b " - in " __FILE__ " line %i",(int)__LINE__); } while(false)
-#define FLEXT_WARN(str) error("Warning: in " __FILE__ " line %i",(int)__LINE__)
-#define FLEXT_ERROR(str) error("Error: in " __FILE__ " line %i",(int)__LINE__)
-#endif
-#else
-#define FLEXT_ASSERT(b) (1)
-#define FLEXT_WARN(str) (1)
-#define FLEXT_ERROR(str) error("Error: in " __FILE__ " line %i",(int)__LINE__)
-#endif
-
-#define ERRINTERNAL() error("flext: Internal error in file " __FILE__ ", line %i - please report",(int)__LINE__)
-
-
-// ----- disable attribute editor for PD version < devel_0_36 or 0.37
-#ifndef PD_MAJOR_VERSION
-#undef FLEXT_NOATTREDIT
-#define FLEXT_NOATTREDIT
-#endif
-
-
-// ----- set message queue mode -----
-#if FLEXT_SYS == FLEXT_SYS_PD && PD_MINOR_VERSION >= 37
- // for PD version >= 0.37test10 FLEXT_PDLOCK is standard
- #undef FLEXT_PDLOCK
- #define FLEXT_PDLOCK
-#endif
-
-#if FLEXT_SYS == FLEXT_SYS_PD && PD_MINOR_VERSION >= 38 && defined(PD_DEVEL_VERSION)
- // use idle callback
- #define FLEXT_QMODE 1
-#elif defined(FLEXT_PDLOCK)
- // new PD thread locking functionality shall be used
- #if FLEXT_SYS == FLEXT_SYS_PD
- #ifdef FLEXT_THREADS
- // can only be used with PD and threaded build
- #define FLEXT_QMODE 2
- #else
- #define FLEXT_QMODE 0
- #endif
- #else
- #error FLEXT_PDLOCK can only be defined with PD
- #endif
-#else
- #define FLEXT_QMODE 0
-#endif
-
-#ifndef FLEXT_QMODE
-#error Internal error: Queueing mode not defined
-#endif
-
-#endif
diff --git a/externals/grill/flext/source/flstk.cpp b/externals/grill/flext/source/flstk.cpp
deleted file mode 100644
index f3161565..00000000
--- a/externals/grill/flext/source/flstk.cpp
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
-
-flext - C++ layer for Max/MSP and pd (pure data) externals
-
-Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-#include "flext.h"
-#include "flstk.h"
-
-flext_stk::flext_stk():
- inobjs(0),outobjs(0),
- inobj(NULL),outobj(NULL),
- smprt(0),blsz(0)
-{}
-
-bool flext_stk::Init()
-{
- bool ret = flext_dsp::Init();
- inobjs = CntInSig();
- outobjs = CntOutSig();
- return ret;
-}
-
-void flext_stk::Exit()
-{
- ClearObjs();
- flext_dsp::Exit();
-}
-
-void flext_stk::ClearObjs()
-{
- FreeObjs();
-
- if(inobj) {
- for(int i = 0; i < inobjs; ++i) delete inobj[i];
- delete[] inobj; inobj = NULL;
- }
- if(outobj) {
- for(int i = 0; i < outobjs; ++i) delete outobj[i];
- delete[] outobj; outobj = NULL;
- }
-}
-
-bool flext_stk::CbDsp()
-{
- // called on every rebuild of the dsp chain
-
- int i;
-
- if(Blocksize() != blsz || Samplerate() != smprt) {
- // block size or sample rate has changed... rebuild all objects
-
- ClearObjs();
-
- smprt = Samplerate();
- blsz = Blocksize();
- Stk::setSampleRate(smprt);
-
- // set up sndobjs for inlets and outlets
- if(inobjs) {
- inobj = new Input *[inobjs];
- for(i = 0; i < inobjs; ++i)
- inobj[i] = new Input(InSig(i),blsz);
- }
- if(outobjs) {
- outobj = new Output *[outobjs];
- for(i = 0; i < outobjs; ++i)
- outobj[i] = new Output(OutSig(i),blsz);
- }
-
- if(!NewObjs()) ClearObjs();
- }
- else {
- // assign changed input/output vectors
-
- for(i = 0; i < inobjs; ++i) inobj[i]->SetBuf(InSig(i));
- for(i = 0; i < outobjs; ++i) outobj[i]->SetBuf(OutSig(i));
- }
- return true;
-}
-
-void flext_stk::CbSignal()
-{
- if(inobjs || outobjs) ProcessObjs(blsz);
-}
-
-
-// inlet class
-
-flext_stk::Input::Input(const t_sample *b,int v):
- buf(b),vecsz(v),
- index(0)
-{}
-
-MY_FLOAT *flext_stk::Input::tick(MY_FLOAT *vector,unsigned int vectorSize)
-{
- for(unsigned int i = 0; i < vectorSize; i++) vector[i] = tick();
- return vector;
-}
-
-
-// outlet class
-
-flext_stk::Output::Output(t_sample *b,int v):
- buf(b),vecsz(v),
- index(0)
-{}
-
-void flext_stk::Output::tick(const MY_FLOAT *vector,unsigned int vectorSize)
-{
- for(unsigned int i = 0; i < vectorSize; i++) tick(vector[i]);
-}
-
diff --git a/externals/grill/flext/source/flstk.h b/externals/grill/flext/source/flstk.h
deleted file mode 100644
index c3376cb5..00000000
--- a/externals/grill/flext/source/flstk.h
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
-
-flext - C++ layer for Max/MSP and pd (pure data) externals
-
-Copyright (c) 2001-2007 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-#ifndef __FLSTK_H
-#define __FLSTK_H
-
-#include "flext.h"
-
-// PI is defined in the Max/MSP SDK, but clashes with Stk.h
-#ifdef PI
-#undef PI
-#endif
-
-#include <Stk.h>
-
-class FLEXT_SHARE flext_stk:
- public flext_dsp
-{
- FLEXT_HEADER(flext_stk,flext_dsp)
-
-public:
- flext_stk();
-
- // these have to be overridden in child classes
- virtual bool NewObjs() { return true; }
- virtual void FreeObjs() {}
- virtual void ProcessObjs(int blocksize) {}
-
-protected:
- virtual bool Init();
- virtual void Exit();
-
- //! STK object for reading from inlet buffer
- class Input:
- public Stk
- {
- public:
- Input(const t_sample *b,int vecsz);
-
- inline MY_FLOAT lastOut() const { return (MY_FLOAT)buf[index]; }
-
- inline MY_FLOAT tick()
- {
- if(++index >= vecsz) index = 0;
- return lastOut();
- }
-
- MY_FLOAT *tick(MY_FLOAT *vector,unsigned int vectorSize);
-
- inline void SetBuf(const t_sample *b) { buf = b; }
-
- private:
- const t_sample *buf;
- int vecsz,index;
- };
-
- //! STK object for writing to outlet buffer
- class Output:
- public Stk
- {
- public:
- Output(t_sample *b,int vecsz);
-
- inline void tick(MY_FLOAT s)
- {
- buf[index] = (t_sample)s;
- if(++index >= vecsz) index = 0;
- }
-
- void tick(const MY_FLOAT *vector,unsigned int vectorSize);
-
- inline void SetBuf(t_sample *b) { buf = b; }
-
- private:
- t_sample *buf;
- int vecsz,index;
- };
-
- Input &Inlet(int ix) { return *inobj[ix]; }
- Output &Outlet(int ix) { return *outobj[ix]; }
-
-private:
- virtual bool CbDsp();
- virtual void CbSignal();
-
- void ClearObjs();
-
- int inobjs,outobjs;
- Input **inobj;
- Output **outobj;
-
- float smprt;
- int blsz;
-};
-
-#endif
diff --git a/externals/grill/flext/source/flsupport.cpp b/externals/grill/flext/source/flsupport.cpp
deleted file mode 100644
index b77729e6..00000000
--- a/externals/grill/flext/source/flsupport.cpp
+++ /dev/null
@@ -1,316 +0,0 @@
-/*
-
-flext - C++ layer for Max/MSP and pd (pure data) externals
-
-Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-/*! \file flsupport.cpp
- \brief flext support functions and classes.
-*/
-
-#include "flext.h"
-
-#include <stdio.h>
-#include <stdarg.h>
-#include <stdlib.h>
-#include <string.h>
-#include <new>
-
-#ifdef _MSC_VER
-#define vsnprintf _vsnprintf
-#define snprintf _snprintf
-#endif
-
-const t_symbol *flext::sym__ = NULL;
-const t_symbol *flext::sym_float = NULL;
-const t_symbol *flext::sym_symbol = NULL;
-const t_symbol *flext::sym_bang = NULL;
-const t_symbol *flext::sym_list = NULL;
-const t_symbol *flext::sym_pointer = NULL;
-const t_symbol *flext::sym_int = NULL;
-const t_symbol *flext::sym_signal = NULL;
-
-const t_symbol *flext::sym_anything = NULL;
-
-const t_symbol *flext::sym_buffer = NULL;
-const t_symbol *flext::sym_size = NULL;
-
-const t_symbol *flext::sym_attributes = NULL;
-const t_symbol *flext::sym_methods = NULL;
-
-bool flext::indsp = false;
-
-
-int flext::Version() { return FLEXT_VERSION; }
-const char *flext::VersionStr() { return FLEXT_VERSTR; }
-
-
-void flext::Setup()
-{
- static bool issetup = false;
- if(issetup)
- return;
- else issetup = true;
-
-#if FLEXT_SYS == FLEXT_SYS_PD
- sym__ = &s_;
- sym_anything = &s_anything;
- sym_pointer = &s_pointer;
- sym_float = &s_float;
- sym_symbol = &s_symbol;
- sym_bang = &s_bang;
- sym_list = &s_list;
- sym_signal = &s_signal;
- sym_int = gensym("int");
-#elif FLEXT_SYS == FLEXT_SYS_MAX
- sym__ = gensym("");
- sym_int = gensym("int");
- sym_float = gensym("float");
- sym_symbol = gensym("symbol");
- sym_bang = gensym("bang");
- sym_list = gensym("list");
- sym_anything = gensym("anything");
- sym_signal = gensym("signal");
-
- sym_buffer = flext::MakeSymbol("buffer~");
- sym_size = flext::MakeSymbol("size");
-#endif
-
- sym_attributes = flext::MakeSymbol("attributes");
- sym_methods = flext::MakeSymbol("methods");
-
-#ifdef FLEXT_THREADS
- thrid = GetThreadId();
- StartHelper();
-#endif
-}
-
-
-#if FLEXT_SYS == FLEXT_SYS_PD && defined(FLEXT_THREADED) && defined(FLEXT_PDLOCK)
-#define SYSLOCK() sys_lock()
-#define SYSUNLOCK() sys_unlock()
-#else
-#define SYSLOCK() (void)0
-#define SYSUNLOCK() (void)0
-#endif
-
-
-/////////////////////////////////////////////////////////
-// overloaded new/delete memory allocation methods
-//
-/////////////////////////////////////////////////////////
-
-#define LARGEALLOC 32000
-
-#ifndef FLEXT_USE_CMEM
-
-#ifdef FLEXT_DEBUGMEM
-static const size_t memtest = 0x12345678L;
-#endif
-
-void *flext_root::operator new(size_t bytes)
-{
- bytes += sizeof(size_t);
-#ifdef FLEXT_DEBUGMEM
- bytes += sizeof(memtest)*2;
-#endif
- char *blk;
- if(UNLIKELY(bytes >= LARGEALLOC)) {
-#if FLEXT_SYS == FLEXT_SYS_MAX && defined(_SYSMEM_H_)
- blk = (char *)::sysmem_newptr(bytes);
-#else
- // use C library function for large memory blocks
- blk = (char *)::malloc(bytes);
-#endif
- }
- else {
- //! We need system locking here for secondary threads!
- SYSLOCK();
-
-#if defined(FLEXT_USE_CMEM)
- blk = (char *)::malloc(bytes);
-#else
- blk = (char *)::getbytes(bytes);
-#endif
- SYSUNLOCK();
- }
-
- FLEXT_ASSERT(blk);
-
- *(size_t *)blk = bytes;
-#ifdef FLEXT_DEBUGMEM
- *(size_t *)(blk+sizeof(size_t)) = memtest;
- *(size_t *)(blk+bytes-sizeof(memtest)) = memtest;
- return blk+sizeof(size_t)+sizeof(memtest);
-#else
- return blk+sizeof(size_t);
-#endif
-}
-
-void flext_root::operator delete(void *blk)
-{
- FLEXT_ASSERT(blk);
- FLEXT_ASSERT(MemCheck(blk));
-
-#ifdef FLEXT_DEBUGMEM
- char *ori = (char *)blk-sizeof(size_t)-sizeof(memtest);
-#else
- char *ori = (char *)blk-sizeof(size_t);
-#endif
- size_t bytes = *(size_t *)ori;
-
- if(UNLIKELY(bytes >= LARGEALLOC)) {
-#if FLEXT_SYS == FLEXT_SYS_MAX && defined(_SYSMEM_H_)
- ::sysmem_freeptr(ori);
-#else
- // use C library function for large memory blocks
- ::free(ori);
-#endif
- }
- else {
- //! We need system locking here for secondary threads!
- SYSLOCK();
-
-#if defined(FLEXT_USE_CMEM)
- ::free(ori);
-#else
- ::freebytes(ori,bytes);
-#endif
- SYSUNLOCK();
- }
-}
-
-#ifdef FLEXT_DEBUGMEM
-bool flext_root::MemCheck(void *blk)
-{
- char *ori = (char *)blk-sizeof(size_t)-sizeof(memtest);
- size_t bytes = *(size_t *)ori;
-
- return
- *(size_t *)((char *)ori+sizeof(size_t)) == memtest &&
- *(size_t *)((char *)ori+bytes-sizeof(memtest)) == memtest;
-}
-#endif
-
-#endif
-
-void *flext_root::NewAligned(size_t bytes,int bitalign)
-{
- const size_t ovh = sizeof(size_t)+sizeof(char *);
- const size_t alignovh = bitalign/8-1;
- bytes += ovh+alignovh;
-
- char *blk;
- if(UNLIKELY(bytes >= LARGEALLOC)) {
-#if FLEXT_SYS == FLEXT_SYS_MAX && defined(_SYSMEM_H_)
- blk = (char *)::sysmem_newptr(bytes);
-#else
- // use C library function for large memory blocks
- blk = (char *)::malloc(bytes);
-#endif
- }
- else {
- //! We need system locking here for secondary threads!
- SYSLOCK();
-
-#if defined(FLEXT_USE_CMEM)
- blk = (char *)::malloc(bytes);
-#else
- blk = (char *)::getbytes(bytes);
-#endif
- SYSUNLOCK();
- }
- FLEXT_ASSERT(blk);
-
- char *ablk = reinterpret_cast<char *>((reinterpret_cast<size_t>(blk)+ovh+alignovh) & ~alignovh);
- *(char **)(ablk-sizeof(size_t)-sizeof(char *)) = blk;
- *(size_t *)(ablk-sizeof(size_t)) = bytes;
- return ablk;
-}
-
-void flext_root::FreeAligned(void *blk)
-{
- FLEXT_ASSERT(blk);
-
- char *ori = *(char **)((char *)blk-sizeof(size_t)-sizeof(char *));
- size_t bytes = *(size_t *)((char *)blk-sizeof(size_t));
-
- if(UNLIKELY(bytes >= LARGEALLOC)) {
-#if FLEXT_SYS == FLEXT_SYS_MAX && defined(_SYSMEM_H_)
- ::sysmem_freeptr(ori);
-#else
- // use C library function for large memory blocks
- ::free(ori);
-#endif
- }
- else {
- //! We need system locking here for secondary threads!
- SYSLOCK();
-
-#if defined(FLEXT_USE_CMEM)
- ::free(ori);
-#else
- ::freebytes(ori,bytes);
-#endif
- SYSUNLOCK();
- }
-}
-
-// ------------------------------------------
-
-/*! \todo there is probably also a shortcut for Max and jMax
- \todo size checking
-*/
-void flext::GetAString(const t_atom &a,char *buf,size_t szbuf)
-{
-#if FLEXT_SYS == FLEXT_SYS_PD
- atom_string(const_cast<t_atom *>(&a),buf,(int)szbuf);
-#else
- if(IsSymbol(a)) STD::strncpy(buf,GetString(a),szbuf);
- else if(IsFloat(a)) STD::snprintf(buf,szbuf,"%f",GetFloat(a));
- else if(IsInt(a)) STD::snprintf(buf,szbuf,"%i",GetInt(a));
- else *buf = 0;
-#endif
-}
-
-unsigned long flext::AtomHash(const t_atom &a)
-{
-#if FLEXT_SYS == FLEXT_SYS_MAX || FLEXT_SYS == FLEXT_SYS_PD
- return ((unsigned long)a.a_type<<28)^*(unsigned long *)&a.a_w;
-#else
-#error Not implemented
-#endif
-}
-
-void flext_root::post(const char *fmt, ...)
-{
- va_list ap;
- va_start(ap, fmt);
-
- char buf[1024];
- vsnprintf(buf,sizeof buf,fmt, ap);
- buf[sizeof buf-1] = 0; // in case of full buffer
- ::post(buf);
-
- va_end(ap);
-}
-
-void flext_root::error(const char *fmt,...)
-{
- va_list ap;
- va_start(ap, fmt);
-
- char buf[1024];
- STD::strcpy(buf,"error: ");
- vsnprintf(buf+7,sizeof buf-7,fmt, ap);
- buf[sizeof buf-1] = 0; // in case of full buffer
- ::post(buf);
-
- va_end(ap);
-}
-
-
diff --git a/externals/grill/flext/source/flsupport.h b/externals/grill/flext/source/flsupport.h
deleted file mode 100644
index f26437df..00000000
--- a/externals/grill/flext/source/flsupport.h
+++ /dev/null
@@ -1,1285 +0,0 @@
-/*
-
-flext - C++ layer for Max/MSP and pd (pure data) externals
-
-Copyright (c) 2001-2006 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-/*! \file flsupport.h
- \brief flext support functions and classes
-*/
-
-#ifndef __FLSUPPORT_H
-#define __FLSUPPORT_H
-
-#include "flstdc.h"
-#include <new>
-#include <string.h>
-
-/*! \defgroup FLEXT_SUPPORT Flext support classes
- @{
-*/
-
-class FLEXT_SHARE FLEXT_CLASSDEF(flext_root);
-typedef class FLEXT_CLASSDEF(flext_root) flext_root;
-
-/*! \brief Flext root support class
-
- Moved memory functions and console output here so that all the classes
- contained in flext can use them
-*/
-class FLEXT_SHARE FLEXT_CLASSDEF(flext_root) {
-public:
-// --- console output -----------------------------------------------
-
- //! post message to console, with line feed (limited to 1k chars!)
- static void post(const char *fmt,...);
- //! post error message to console (limited to 1k chars!)
- static void error(const char *fmt,...);
-
-// --- memory -------------------------------------------------------
-
- /*! \defgroup FLEXT_S_MEMORY Memory allocation functions
- @{
- */
-
-#ifdef FLEXT_NOGLOBALNEW
-#error FLEXT_NOGLOBALNEW is deprecated, define FLEXT_USE_CMEM instead
-#define FLEXT_USE_CMEM
-#endif
-
-#ifdef FLEXT_USE_CMEM
- inline void *operator new(size_t bytes) { return ::operator new(bytes); }
- inline void operator delete(void *blk) { ::operator delete(blk); }
-
- inline void *operator new[](size_t bytes) { return ::operator new[](bytes); }
- inline void operator delete[](void *blk) { ::operator delete[](blk); }
-
- static bool MemCheck(void *) { return true; }
-#else
- /*! Overloaded new memory allocation method
- \note this uses a fast allocation method of the real-time system
- \warning Max/MSP (or MacOS) allows only 32K in overdrive mode!
- */
- void *operator new(size_t bytes);
- //! Overloaded delete method
- void operator delete(void *blk);
-
-#ifndef __MRC__ // doesn't allow new[] overloading?!
- inline void *operator new[](size_t bytes) { return operator new(bytes); }
- inline void operator delete[](void *blk) { operator delete(blk); }
-#endif
-
-#ifdef FLEXT_DEBUGMEM
- static bool MemCheck(void *blk);
-#else
- static bool MemCheck(void *) { return true; }
-#endif
-
-#endif // USECMEM
-
-#ifndef __BORLANDC__
- inline void *operator new(size_t,void *p) { return p; }
- inline void operator delete(void *,void *) {}
-#ifndef __MRC__
- inline void *operator new[](size_t,void *p) { return p; }
- inline void operator delete[](void *,void *) {}
-#endif
-#endif
-
- //! Get an aligned memory block
- static void *NewAligned(size_t bytes,int bitalign = 128);
- // same with templated type
- template<typename T>
- static T *NewAligned(size_t times,int bitalign = 128) { return static_cast<T *>(NewAligned(times*sizeof(T),bitalign)); }
- //! Free an aligned memory block
- static void FreeAligned(void *blk);
- //! Test for alignment
- static bool IsAligned(void *ptr,int bitalign = 128) {
- return (reinterpret_cast<size_t>(ptr)&(bitalign-1)) == 0;
- }
- //! @} FLEXT_S_MEMORY
-};
-
-#ifndef FLEXT_USE_CMEM
-/************************************************************************/
-// MFC doesn't like global overloading of allocators
-// anyway, who likes MFC
-
-#if !defined(_MSC_VER) && !defined(__BORLANDC__)
-#define NEWTHROW throw(std::bad_alloc)
-#define DELTHROW throw()
-#else
-#define NEWTHROW
-#define DELTHROW
-#endif
-
-// define global new/delete operators
-inline void *operator new(size_t bytes) NEWTHROW { return flext_root::operator new(bytes); }
-inline void operator delete(void *blk) DELTHROW { flext_root::operator delete(blk); }
-#ifndef __MRC__ // doesn't allow new[] overloading?!
-inline void *operator new[](size_t bytes) NEWTHROW { return flext_root::operator new[](bytes); }
-inline void operator delete[](void *blk) DELTHROW { flext_root::operator delete[](blk); }
-#endif
-
-#endif // FLEXT_USE_CMEM
-
-/************************************************************************/
-
-
-class FLEXT_SHARE FLEXT_CLASSDEF(flext);
-typedef class FLEXT_CLASSDEF(flext) flext;
-
-class FLEXT_SHARE FLEXT_CLASSDEF(flext_base);
-
-/*! \brief Flext support class
-
- A number of methods (most are static functions) are defined here for convenience.
- This class doesn't define any data members, hence it can be inherited to all
- classes (not only PD objects) to profit from the cross-platform functionality.
- Examples are the overloaded memory allocation, atom and atom list functions,
- thread functions and classes, the sample buffer class and others.
-
- This class can also be used for a non-object class (not representing an external object)
- and won't give any extra burden to it.
-*/
-
-class FLEXT_SHARE FLEXT_CLASSDEF(flext):
- public flext_root
-{
-
- /*! \defgroup FLEXT_SUPPORT Flext support class
- @{
- */
-public:
-
-// --- version -----------------------------------------------
-
- /*! \brief Flext version number
-
- Return the version number of the flext library.
- For statically linked flext this is identical to the header definition FLEXT_VERSION,
- otherwise it reflects the version number of the shared flext library.
- */
- static int Version();
-
- //! Flext version string
- static const char *VersionStr();
-
-// --- special typedefs ---------------------------------------------
-
-// later!
-#if 0
- typedef t_float Float;
- typedef t_int Int;
- typedef t_sample Sample;
- typedef const t_symbol *Symbol;
- typedef t_atom Atom;
-#endif
-
-// --- buffer/array stuff -----------------------------------------
-
- /*! \defgroup FLEXT_S_BUFFER Buffer handling
- @{
- */
-
- //! Class for platform independent buffer handling
- class FLEXT_SHARE buffer:
- public flext_root
- {
- public:
-
-#if FLEXT_SYS == FLEXT_SYS_PD
- typedef bool lock_t;
-#elif FLEXT_SYS == FLEXT_SYS_MAX
- typedef long lock_t;
-#else
-#error Not implemented
-#endif
-
- /*! \brief Construct buffer.
- \param s: symbol name, can be NULL
- \param delayed = true: only sets name, needs another Set(NULL) to really initialize the buffer
- \remark As externals can be created prior to the buffer objects they are pointing to, initialization should be done at loadbang!
- */
- buffer(const t_symbol *s = NULL,bool delayed = false);
-
- //! Destroy buffer
- ~buffer();
-
- /*! \brief Check if the buffer is valid for use
- \note This must be true to use any of the other functions except set
- */
- bool Ok() const
- {
- return sym
-#if FLEXT_SYS == FLEXT_SYS_PD
- && arr
-#endif
- && data;
- }
-
- /*! \brief Check if buffer content is valid (not in state of content change)
- \note buffer must be Ok()
- */
- bool Valid() const
- {
- FLEXT_ASSERT(sym);
-#if FLEXT_SYS == FLEXT_SYS_PD
- return true;
-#elif FLEXT_SYS == FLEXT_SYS_MAX
- const t_buffer *p = (const t_buffer *)sym->s_thing;
- return p && p->b_valid;
-#else
-#error not implemented
-#endif
- }
-
- /*! \brief Check and update if the buffer has been changed (e.g. resized)
- \note buffer must be Ok()
- */
- bool Update();
-
- /*! \brief Lock buffer
- \return previous state (needed for Unlock)
- \note buffer must be Ok()
- */
- lock_t Lock();
-
- /*! \brief Unlock buffer
- \param prv: Previous state is returned by Lock()
- \note buffer must be Ok()
- */
- void Unlock(lock_t prv);
-
- /*! \brief Set to specified buffer.
- \param nameonly: if true sets name only, but doesn't look at buffer actually
- \return -1 on failure, 0 on success, 1 if parameters (length, data ptr, channels) have changed
- */
- int Set(const t_symbol *s = NULL,bool nameonly = false);
-
- /*! \brief Declare buffer content as dirty.
- \param refr: if true forces immediate graphics refresh
- */
- void Dirty(bool refr = false);
-
- //! Clear the dirty flag.
- void ClearDirty();
-
- /*! Query whether the buffer content has been changed since the last ClearDirty()
- \note With mainstream versions of PD this will always return true, since the dirtiness can't be judged
- */
- bool IsDirty() const;
-
- //! Get symbol of buffer
- const t_symbol *Symbol() const { return sym; }
-
- //! Get literal name of buffer
- const char *Name() const { return sym?GetString(sym):""; }
-
- /*! \brief Get pointer to buffer, channel and frame count.
- \remark Channels are interleaved
- */
- t_sample *Data() { return data; }
-
- //! Get channel count
- int Channels() const { return chns; }
- //! Get frame count
- int Frames() const { return frames; }
- //! Set frame count
- void Frames(int fr,bool keep = false,bool zero = true);
-
- //! Graphic auto refresh interval
- void SetRefrIntv(float intv);
-
- protected:
- //! buffer name
- const t_symbol *sym;
- //! array holding audio data
- t_sample *data;
- //! number of audio channels
- int chns;
- //! number of frames (multiplied by chns for the number of samples)
- int frames;
-#if FLEXT_SYS == FLEXT_SYS_PD
- //! pointer to the PD array structure
- t_garray *arr;
- //! update interval
- float interval;
- //! flag signaling that the data has been changed
- bool isdirty;
- //! flag showing that the update clock is active
- bool ticking;
- //! update clock
- t_clock *tick;
- //! last time the dirty flag was cleared (using the clock_getlogicaltime function)
- double cleantime;
-
- private:
- //! update clock callback
- static void cb_tick(buffer *b);
-#elif FLEXT_SYS == FLEXT_SYS_MAX
- //! last time the dirty flag was cleared (using the gettime function)
- long cleantime;
-#endif
- };
-
-
-//! @} FLEXT_S_BUFFER
-
-// --- utilities --------------------------------------------------
-
- /*! \defgroup FLEXT_S_UTIL Utility functions
- @{
- */
-
- //! Copy an atom
- static void CopyAtom(t_atom *dst,const t_atom *src) { *dst = *src; }
-
- //! Copy atoms
- static void CopyAtoms(int cnt,t_atom *dst,const t_atom *src);
-
- //! Print an atom
- static bool PrintAtom(const t_atom &a,char *buf,size_t bufsz);
-
- /*! Scan an atom until whitespace
- \return next token position, or NULL on failure
- */
- static const char *ScanAtom(t_atom &a,const char *buf);
-
- //! Copy a list of atoms
- static t_atom *CopyList(int argc,const t_atom *argv);
- //! Print an atom list
- static bool PrintList(int argc,const t_atom *argv,char *buf,size_t bufsz);
-
- //! Copy a memory region
- static void CopyMem(void *dst,const void *src,int bytes);
- //! Copy a sample array
- static void CopySamples(t_sample *dst,const t_sample *src,int cnt);
- //! Set a memory region
- static void ZeroMem(void *dst,int bytes);
- //! Set a sample array to a fixed value
- static void SetSamples(t_sample *dst,int cnt,t_sample s);
- //! Set a sample array to 0
- static void ZeroSamples(t_sample *dst,int cnt) { SetSamples(dst,cnt,0); }
-
-
- //! Get a 32 bit hash value from an atom
- static unsigned long AtomHash(const t_atom &a);
-
-//! @} FLEXT_S_UTIL
-
-// --- various symbols --------------------------------------------
-
- /*! \defgroup FLEXT_S_ATOM Atom/list handling
- @{
- */
-
- //! Symbol constant for ""
- static const t_symbol *sym__;
- //! Symbol constant for "float"
- static const t_symbol *sym_float;
- //! Symbol constant for "symbol"
- static const t_symbol *sym_symbol;
- //! Symbol constant for "bang"
- static const t_symbol *sym_bang;
- //! Symbol constant for "list"
- static const t_symbol *sym_list;
- //! Symbol constant for "anything"
- static const t_symbol *sym_anything;
-
- /*! \brief Symbol constant for "int"
- \note Only the Max/MSP system has this defined as an internal type
- */
- static const t_symbol *sym_int;
-
- /*! Symbol constant for "pointer"
- \note Only PD has this defined as an internal type
- */
- static const t_symbol *sym_pointer;
-
- //! Symbol constant for "signal"
- static const t_symbol *sym_signal;
-
- //! \note This is used in macros where the type of the arg is not clear
- static const t_symbol *MakeSymbol(const t_symbol *s) { return s; }
-
- //! Make a symbol from a string
- static const t_symbol *MakeSymbol(const char *s) { return ::gensym(const_cast<char *>(s)); }
- //! Get symbol string
- static const char *GetString(const t_symbol *s) { return s->s_name; }
- //! Check for symbol and get string
- static const char *GetAString(const t_symbol *s,const char *def = NULL) { return s?GetString(s):def; }
-
-// --- atom stuff ----------------------------------------
-
- //! Set atom from another atom
- static void SetAtom(t_atom &a,const t_atom &b) { CopyAtom(&a,&b); }
- //! Compare two atoms
- static int CmpAtom(const t_atom &a,const t_atom &b);
-
- // there are some more comparison functions for t_atom types outside the class
-
- //! Set atom from another atom
- static int GetType(const t_atom &a) { return a.a_type; }
-
- //! Check whether the atom is nothing
- static bool IsNothing(const t_atom &a) { return a.a_type == A_NULL; }
- //! Set the atom to represent nothing
- static void SetNothing(t_atom &a) { a.a_type = A_NULL; }
-
- //! Check whether the atom is a float
- static bool IsFloat(const t_atom &a) { return a.a_type == A_FLOAT; }
-
- //! Check whether the atom can be represented as a float
- static bool CanbeFloat(const t_atom &a) { return IsFloat(a) || IsInt(a); }
-
- //! Access the float value (without type check)
- static float GetFloat(const t_atom &a) { return a.a_w.w_float; }
- //! Set the atom to represent a float
- static void SetFloat(t_atom &a,float v) { a.a_type = A_FLOAT; a.a_w.w_float = v; }
-
- //! Check whether the atom is a symbol
- static bool IsSymbol(const t_atom &a) { return a.a_type == A_SYMBOL; }
-
-#if FLEXT_SYS == FLEXT_SYS_PD
- //! Access the symbol value (without type check)
- static t_symbol *GetSymbol(const t_atom &a) { return a.a_w.w_symbol; }
- //! Set the atom to represent a symbol
- static void SetSymbol(t_atom &a,const t_symbol *s) { a.a_type = A_SYMBOL; a.a_w.w_symbol = const_cast<t_symbol *>(s); }
-#elif FLEXT_SYS == FLEXT_SYS_MAX
- //! Access the symbol value (without type check)
- static t_symbol *GetSymbol(const t_atom &a) { return a.a_w.w_sym; }
- //! Set the atom to represent a symbol
- static void SetSymbol(t_atom &a,const t_symbol *s) { a.a_type = A_SYMBOL; a.a_w.w_sym = const_cast<t_symbol *>(s); }
-#else
-#error
-#endif
- //! Check for a symbol and get its value
- static t_symbol *GetASymbol(const t_atom &a,t_symbol *def = NULL) { return IsSymbol(a)?GetSymbol(a):def; } // NULL or empty symbol?
-
- //! Check whether the atom is a string
- static bool IsString(const t_atom &a) { return IsSymbol(a); }
- //! Access the string value (without type check)
- static const char *GetString(const t_atom &a) { t_symbol *s = GetSymbol(a); return s?GetString(s):NULL; }
- //! Check for a string and get its value
- static const char *GetAString(const t_atom &a,const char *def = NULL) { return IsSymbol(a)?GetAString(GetSymbol(a),def):def; }
- //! Check for a string and get its value
- static void GetAString(const t_atom &a,char *buf,size_t szbuf);
- //! Set the atom to represent a string
- static void SetString(t_atom &a,const char *c) { SetSymbol(a,MakeSymbol(c)); }
-
- //! Check whether the atom can be represented as an integer
- static bool CanbeInt(const t_atom &a) { return IsFloat(a) || IsInt(a); }
-
-#if FLEXT_SYS == FLEXT_SYS_PD
- //! Check for a float and get its value
- static float GetAFloat(const t_atom &a,float def = 0) { return IsFloat(a)?GetFloat(a):def; }
-
- //! Check whether the atom is an integer
- static bool IsInt(const t_atom &) { return false; }
- //! Access the integer value (without type check)
- static int GetInt(const t_atom &a) { return (int)GetFloat(a); }
- //! Check for an integer and get its value
- static int GetAInt(const t_atom &a,int def = 0) { return (int)GetAFloat(a,(float)def); }
- //! Set the atom to represent a integer (depending on the system)
- static void SetInt(t_atom &a,int v) { a.a_type = A_FLOAT; a.a_w.w_float = (float)v; }
-
-#ifndef FLEXT_COMPATIBLE
- //! Check whether the atom strictly is a pointer
- static bool IsPointer(const t_atom &a) { return a.a_type == A_POINTER; }
- //! Check whether the atom can be a pointer
- static bool CanbePointer(const t_atom &a) { return IsPointer(a); }
- //! Access the pointer value (without type check)
- static t_gpointer *GetPointer(const t_atom &a) { return a.a_w.w_gpointer; }
- //! Check for a pointer and get its value
- static t_gpointer *GetAPointer(const t_atom &a,t_gpointer *def = NULL) { return IsPointer(a)?GetPointer(a):def; }
- //! Set the atom to represent a pointer
- static void SetPointer(t_atom &a,t_gpointer *p) { a.a_type = A_POINTER; a.a_w.w_gpointer = (t_gpointer *)p; }
-#endif
-
-#elif FLEXT_SYS == FLEXT_SYS_MAX
- //! Check for a float and get its value
- static float GetAFloat(const t_atom &a,float def = 0) { return IsFloat(a)?GetFloat(a):(IsInt(a)?GetInt(a):def); }
-
- //! Check whether the atom is an int
- static bool IsInt(const t_atom &a) { return a.a_type == A_INT; }
- //! Access the integer value (without type check)
- static int GetInt(const t_atom &a) { return a.a_w.w_long; }
- //! Check for an integer and get its value
- static int GetAInt(const t_atom &a,int def = 0) { return IsInt(a)?GetInt(a):(IsFloat(a)?(int)GetFloat(a):def); }
- //! Set the atom to represent an integer
- static void SetInt(t_atom &a,int v) { a.a_type = A_INT; a.a_w.w_long = v; }
-#else
-#error "Platform not supported"
-#endif
-
- //! Set the atom to represent a boolean
- static void SetBool(t_atom &a,bool v) { SetInt(a,v?1:0); }
- //! Check whether the atom can be represented as a boolean
- static bool CanbeBool(const t_atom &a) { return CanbeInt(a); }
- //! Check for an boolean and get its value
- static bool GetABool(const t_atom &a) { return GetAInt(a) != 0; }
- //! Check for an boolean and get its value
- static bool GetBool(const t_atom &a) { return GetInt(a) != 0; }
-
-// --- atom list stuff -------------------------------------------
-
- //! Class representing a list of atoms
- class FLEXT_SHARE AtomList
- : public flext_root
- {
- public:
- //! Construct list
- AtomList(): cnt(0),lst(NULL) {}
- //! Construct list
- explicit AtomList(int argc,const t_atom *argv = NULL): cnt(0),lst(NULL) { operator()(argc,argv); }
- //! Construct list
- AtomList(const AtomList &a): cnt(0),lst(NULL) { operator =(a); }
- //! Destroy list
- virtual ~AtomList();
-
- //! Clear list
- AtomList &Clear() { return operator()(); }
-
- //! Set list
- AtomList &Set(int argc,const t_atom *argv,int offs = 0,bool resize = false);
- //! Get list
- int Get(t_atom *argv,int mxsz = -1) const;
-
- //! Set list
- AtomList &operator()(int argc = 0,const t_atom *argv = NULL) { return Set(argc,argv,0,true); }
- //! Set list by another AtomList
- AtomList &operator =(const AtomList &a) { return operator()(a.Count(),a.Atoms()); }
-
- //! Compare list to another AtomList ( -1..< , 0..==, 1...> )
- int Compare(const AtomList &a) const;
-
- bool operator <(const AtomList &a) const { return Compare(a) < 0; }
- bool operator <=(const AtomList &a) const { return Compare(a) <= 0; }
- bool operator >(const AtomList &a) const { return Compare(a) > 0; }
- bool operator >=(const AtomList &a) const { return Compare(a) >= 0; }
- bool operator ==(const AtomList &a) const { return Compare(a) == 0; }
- bool operator !=(const AtomList &a) const { return Compare(a) != 0; }
-
- //! Get number of atoms in the list
- int Count() const { return cnt; }
- //! Get a reference to an indexed atom
- t_atom &operator [](int ix) { return lst[ix]; }
- //! Get a reference to an indexed atom
- const t_atom &operator [](int ix) const { return lst[ix]; }
-
- //! Get a pointer to the list of atoms
- t_atom *Atoms() { return lst; }
- //! Get a pointer to the list of atoms
- const t_atom *Atoms() const { return lst; }
-
- //! Append an atom list to the list
- AtomList &Append(int argc,const t_atom *argv = NULL)
- {
- int c = Count();
- Alloc(c+argc,0,c);
- Set(argc,argv,c);
- return *this;
- }
-
- //! Prepend an atom list to the list
- AtomList &Prepend(int argc,const t_atom *argv = NULL)
- {
- int c = Count();
- Alloc(c+argc,0,c,argc);
- Set(argc,argv);
- return *this;
- }
-
- //! Append an atom to the list
- AtomList &Append(const t_atom &a) { return Append(1,&a); }
- //! Append an atom list to the list
- AtomList &Append(const AtomList &a) { return Append(a.Count(),a.Atoms()); }
- //! Prepend an atom to the list
- AtomList &Prepend(const t_atom &a) { return Prepend(1,&a); }
- //! Prepend an atom list to the list
- AtomList &Prepend(const AtomList &a) { return Prepend(a.Count(),a.Atoms()); }
-
- //! Get a part of the list
- void GetPart(int offs,int len,AtomList &ret) const;
- //! Set to a part of the list
- AtomList &Part(int offs,int len) { GetPart(offs,len,*this); return *this; }
-
- //! Represent as a string
- bool Print(char *buffer,int buflen) const { return flext::PrintList(Count(),Atoms(),buffer,buflen); }
-
- protected:
- virtual void Alloc(int sz,int keepix = -1,int keeplen = -1,int keepto = 0);
- virtual void Free();
-
- int cnt;
- t_atom *lst;
- };
-
- class FLEXT_SHARE AtomListStaticBase
- : public AtomList
- {
- protected:
- explicit AtomListStaticBase(int pc,t_atom *dt): precnt(pc),predata(dt) {}
- virtual ~AtomListStaticBase();
- virtual void Alloc(int sz,int keepix = -1,int keeplen = -1,int keepto = 0);
- virtual void Free();
-
- AtomListStaticBase &operator =(const AtomList &a) { AtomList::operator =(a); return *this; }
- AtomListStaticBase &operator =(const AtomListStaticBase &a) { AtomList::operator =(a); return *this; }
-
- const int precnt;
- t_atom *const predata;
- };
-
- template<int PRE>
- class AtomListStatic
- : public AtomListStaticBase
- {
- public:
- //! Construct list
- explicit AtomListStatic(): AtomListStaticBase(PRE,pre) {}
- //! Construct list
- explicit AtomListStatic(int argc,const t_atom *argv = NULL): AtomListStaticBase(PRE,pre) { operator()(argc,argv); }
- //! Construct list
- explicit AtomListStatic(const AtomList &a): AtomListStaticBase(PRE,pre) { operator =(a); }
-
- //! Set list by another AtomList
- AtomListStatic &operator =(const AtomList &a) { AtomListStaticBase::operator =(a); return *this; }
- AtomListStatic &operator =(const AtomListStatic &a) { AtomListStaticBase::operator =(a); return *this; }
- protected:
- t_atom pre[PRE];
- };
-
- //! Class representing an "anything"
- class FLEXT_SHARE AtomAnything:
- public AtomList
- {
- public:
- explicit AtomAnything(): hdr(NULL) {}
-
- //! Construct anything
- explicit AtomAnything(const t_symbol *h,int argc = 0,const t_atom *argv = NULL)
- : AtomList(argc,argv),hdr(h?h:sym__)
- {}
-
- //! Construct anything
- explicit AtomAnything(const char *h,int argc = 0,const t_atom *argv = NULL)
- : AtomList(argc,argv),hdr(MakeSymbol(h))
- {}
-
- //! Construct anything
- AtomAnything(const AtomAnything &a)
- : AtomList(a),hdr(a.hdr)
- {}
-
- //! Clear anything
- AtomAnything &Clear() { return operator()(); }
-
- //! Get header symbol of anything
- const t_symbol *Header() const { return hdr; }
-
- //! Set header symbol of anything
- void Header(const t_symbol *h) { hdr = h; }
-
- //! Set anything
- AtomAnything &operator()(const t_symbol *h = NULL,int argc = 0,const t_atom *argv = NULL)
- {
- hdr = h; AtomList::operator()(argc,argv);
- return *this;
- }
-
- //! Set list by another AtomAnything
- AtomAnything &operator =(const AtomAnything &a) { return operator()(a.Header(),a.Count(),a.Atoms()); }
-
- protected:
- const t_symbol *hdr;
- };
-
-
- //! @} FLEXT_S_ATOM
-
-
-// --- messages -------------------------------------------------------
-
- /*! \defgroup FLEXT_S_MSGBUNDLE Flext message handling
- @{
- */
-
- class MsgBundle;
-
- //! Make new message bundle
- static MsgBundle *MsgNew();
-
- //! Destroy message bundle
- static void MsgFree(MsgBundle *mb);
-
- //! Send (and destroy) message bundle
- static void ToSysMsg(MsgBundle *mb);
-
- //! Send (and destroy) message bundle
- static void ToOutMsg(MsgBundle *mb);
-
- //! Send low priority (and destroy) message bundle
- static void ToQueueMsg(MsgBundle *mb);
-
- //! @} FLEXT_S_MSGBUNDLE
-
-
- /*! \defgroup FLEXT_S_MSG Flext message handling
- @{
- */
-
- static bool Forward(const t_symbol *sym,const t_symbol *s,int argc,const t_atom *argv);
- static bool Forward(const t_symbol *sym,const AtomAnything &args) { return Forward(sym,args.Header(),args.Count(),args.Atoms()); }
- static bool Forward(const char *sym,const AtomAnything &args) { return Forward(MakeSymbol(sym),args.Header(),args.Count(),args.Atoms()); }
- static bool Forward(const t_symbol *sym,int argc,const t_atom *argv) { return Forward(sym,sym_list,argc,argv); }
- static bool Forward(const t_symbol *sym,const AtomList &args) { return Forward(sym,args.Count(),args.Atoms()); }
- static bool Forward(const char *sym,const AtomList &args) { return Forward(MakeSymbol(sym),args.Count(),args.Atoms()); }
-
- static bool SysForward(const t_symbol *sym,const t_symbol *s,int argc,const t_atom *argv);
- static bool SysForward(const t_symbol *sym,const AtomAnything &args) { return SysForward(sym,args.Header(),args.Count(),args.Atoms()); }
- static bool SysForward(const char *sym,const AtomAnything &args) { return SysForward(MakeSymbol(sym),args.Header(),args.Count(),args.Atoms()); }
- static bool SysForward(const t_symbol *sym,int argc,const t_atom *argv) { return SysForward(sym,sym_list,argc,argv); }
- static bool SysForward(const t_symbol *sym,const AtomList &args) { return SysForward(sym,args.Count(),args.Atoms()); }
- static bool SysForward(const char *sym,const AtomList &args) { return SysForward(MakeSymbol(sym),args.Count(),args.Atoms()); }
-
- static bool QueueForward(const t_symbol *sym,const t_symbol *s,int argc,const t_atom *argv);
- static bool QueueForward(const t_symbol *sym,const AtomAnything &args) { return QueueForward(sym,args.Header(),args.Count(),args.Atoms()); }
- static bool QueueForward(const char *sym,const AtomAnything &args) { return QueueForward(MakeSymbol(sym),args.Header(),args.Count(),args.Atoms()); }
- static bool QueueForward(const t_symbol *sym,int argc,const t_atom *argv) { return QueueForward(sym,sym_list,argc,argv); }
- static bool QueueForward(const t_symbol *sym,const AtomList &args) { return QueueForward(sym,args.Count(),args.Atoms()); }
- static bool QueueForward(const char *sym,const AtomList &args) { return QueueForward(MakeSymbol(sym),args.Count(),args.Atoms()); }
-
- static bool MsgForward(MsgBundle *mb,const t_symbol *sym,const t_symbol *s,int argc,const t_atom *argv);
- static bool MsgForward(MsgBundle *mb,const t_symbol *sym,const AtomAnything &args) { return MsgForward(mb,sym,args.Header(),args.Count(),args.Atoms()); }
- static bool MsgForward(MsgBundle *mb,const char *sym,const AtomAnything &args) { return MsgForward(mb,MakeSymbol(sym),args.Header(),args.Count(),args.Atoms()); }
- static bool MsgForward(MsgBundle *mb,const t_symbol *sym,int argc,const t_atom *argv) { return MsgForward(mb,sym,sym_list,argc,argv); }
- static bool MsgForward(MsgBundle *mb,const t_symbol *sym,const AtomList &args) { return MsgForward(mb,sym,args.Count(),args.Atoms()); }
- static bool MsgForward(MsgBundle *mb,const char *sym,const AtomList &args) { return MsgForward(mb,MakeSymbol(sym),args.Count(),args.Atoms()); }
-
- //! @} FLEXT_S_MSG
-
-
-
-// --- thread stuff -----------------------------------------------
-
- /*! \defgroup FLEXT_S_LOCK Global system locking
- @{
- */
-
-#if FLEXT_SYS == FLEXT_SYS_PD
- #if PD_MINOR_VERSION >= 38 || (PD_MINOR_VERSION >= 37 && defined(PD_DEVEL_VERSION))
- static void Lock() { sys_lock(); }
- static void Unlock() { sys_unlock(); }
- #else
- // no system locking for old PD versions
- static void Lock() {}
- static void Unlock() {}
- #endif
-#elif FLEXT_SYS == FLEXT_SYS_MAX
- // Max 4.2 upwards!
- static void Lock() { critical_enter(0); }
- static void Unlock() { critical_exit(0); }
-#else
-#error
-#endif
-
-//! @} FLEXT_S_LOCK
-
- /*! \defgroup FLEXT_S_THREAD Flext thread handling
- @{
- */
-
- //! Check if current thread is the realtime system's thread
- static bool IsSystemThread() {
-#ifdef FLEXT_THREADS
- return IsThread(GetSysThreadId());
-#else
- return true;
-#endif
- }
-
-#ifdef FLEXT_THREADS
-
- //! thread type
-#if FLEXT_THREADS == FLEXT_THR_MP
- typedef MPTaskID thrid_t;
-#elif FLEXT_THREADS == FLEXT_THR_POSIX
- typedef pthread_t thrid_t;
-#elif FLEXT_THREADS == FLEXT_THR_WIN32
- typedef DWORD thrid_t;
-#else
-#error
-#endif
-
- /*! \brief Get current thread id
- */
- static thrid_t GetThreadId() {
-#if FLEXT_THREADS == FLEXT_THR_POSIX
- return pthread_self();
-#elif FLEXT_THREADS == FLEXT_THR_MP
- return MPCurrentTaskID();
-#elif FLEXT_THREADS == FLEXT_THR_WIN32
- return GetCurrentThreadId();
-#else
-#error
-#endif
- }
-
- /*! \brief Get system thread id
- */
- static thrid_t GetSysThreadId() { return thrid; }
-
- //! Check if current thread should terminate
- static bool ShouldExit();
-
- //! Check if current thread is the realtime system's thread
- static bool IsThread(thrid_t t,thrid_t ref = GetThreadId()) {
-#if FLEXT_THREADS == FLEXT_THR_POSIX
- return pthread_equal(ref,t) != 0;
-#else
- return ref == t;
-#endif
- }
-
-
- /*! \brief Thread parameters
- \internal
- */
- class FLEXT_SHARE thr_params:
- public flext_root
- {
- public:
- thr_params(int n = 1);
- ~thr_params();
-
- void set_any(const t_symbol *s,int argc,const t_atom *argv);
- void set_list(int argc,const t_atom *argv);
-
- FLEXT_CLASSDEF(flext_base) *cl;
- union _data {
- bool _bool;
- float _float;
- int _int;
- t_symptr _t_symptr;
- AtomAnything *_any;
- AtomList *_list;
- void *_ext;
- } *var;
- };
-
-protected:
-
- static thrid_t thrhelpid;
- static thrid_t thrmsgid;
- static void ThrHelper(void *);
-
- //! the system's thread id
- static thrid_t thrid; // the system thread
-
-private:
- static bool StartHelper(); // used in flext::Setup()
-
-public:
-
- /*! \brief Yield to other threads
- \remark A call to this is only needed for systems with cooperative multitasking like MacOS<=9
- */
- static void ThrYield() {
-#if FLEXT_THREADS == FLEXT_THR_POSIX
- // for a preemptive system this should do nothing
- sched_yield();
-#elif FLEXT_THREADS == FLEXT_THR_MP
- MPYield();
-#elif FLEXT_THREADS == FLEXT_THR_WIN32
- SwitchToThread();
-#else
-#error
-#endif
- }
-
- /*! \brief Query whether task is preemptive
- */
- static bool IsThreadPreemptive(thrid_t t = GetThreadId()) {
-#if FLEXT_THREADS == FLEXT_THR_POSIX || FLEXT_THREADS == FLEXT_THR_WIN32
- return true;
-#elif FLEXT_THREADS == FLEXT_THR_MP
- return MPTaskIsPreemptive(t);
-#else
-#error
-#endif
- }
-
-
- /*! \brief Increase/Decrease priority of a thread
- */
- static bool RelPriority(int dp,thrid_t ref = GetSysThreadId(),thrid_t thr = GetThreadId());
-
- /*! \brief Get priority of a thread
- */
- static int GetPriority(thrid_t thr = GetThreadId());
-
- /*! \brief Set priority of a thread
- */
- static bool SetPriority(int p,thrid_t thr = GetThreadId());
-
- /*! \brief Thread mutex
- \sa pthreads documentation
- */
- class FLEXT_SHARE ThrMutex:
- public flext_root
-#if FLEXT_THREADS == FLEXT_THR_POSIX
- {
- public:
- //! Construct thread mutex
- ThrMutex() { pthread_mutex_init(&mutex,NULL); }
- //! Destroy thread mutex
- ~ThrMutex() { pthread_mutex_destroy(&mutex); }
-
- //! Lock thread mutex
- bool Lock() { return pthread_mutex_lock(&mutex) == 0; }
- /*! Wait to lock thread mutex.
- \todo Implement!
- */
-// bool WaitForLock(double tm) { return pthread_mutex_lock(&mutex) == 0; }
- //! Try to lock, but don't wait
- bool TryLock() { return pthread_mutex_trylock(&mutex) == 0; }
- //! Unlock thread mutex
- bool Unlock() { return pthread_mutex_unlock(&mutex) == 0; }
-
- protected:
- pthread_mutex_t mutex;
-// int cnt;
- };
-#elif FLEXT_THREADS == FLEXT_THR_WIN32
- {
- public:
- //! Construct thread mutex
- ThrMutex() { ::InitializeCriticalSection(&mutex); }
- //! Destroy thread mutex
- ~ThrMutex() { ::DeleteCriticalSection(&mutex); }
-
- //! Lock thread mutex
- bool Lock() { ::EnterCriticalSection(&mutex); return true; }
- /*! Wait to lock thread mutex.
- \todo Implement!
- */
-// bool WaitForLock(double tm) { return pthread_mutex_lock(&mutex) == 0; }
- //! Try to lock, but don't wait
- bool TryLock() { return ::TryEnterCriticalSection(&mutex) != 0; }
- //! Unlock thread mutex
- bool Unlock() { ::LeaveCriticalSection(&mutex); return true; }
-
- protected:
- CRITICAL_SECTION mutex;
- };
-#elif FLEXT_THREADS == FLEXT_THR_MP
- {
- public:
- //! Construct thread mutex
- ThrMutex() { MPCreateCriticalRegion(&crit); }
- //! Destroy thread mutex
- ~ThrMutex() { MPDeleteCriticalRegion(crit); }
-
- //! Lock thread mutex
- bool Lock() { return MPEnterCriticalRegion(crit,kDurationForever) == noErr; }
- //! Wait to lock thread mutex
-// bool WaitForLock(double tm) { return MPEnterCriticalRegion(crit,tm*kDurationMicrosecond*1.e6) == noErr; }
- //! Try to lock, but don't wait
- bool TryLock() { return MPEnterCriticalRegion(crit,kDurationImmediate) == noErr; }
- //! Unlock thread mutex
- bool Unlock() { return MPExitCriticalRegion(crit) == noErr; }
-
- protected:
- MPCriticalRegionID crit;
- };
-#else
-#error "Not implemented"
-#endif
-
- /*! \brief Thread conditional
- \sa pthreads documentation
- */
- class FLEXT_SHARE ThrCond
-#if FLEXT_THREADS == FLEXT_THR_POSIX
- :public ThrMutex
- {
- public:
- //! Construct thread conditional
- ThrCond() { pthread_cond_init(&cond,NULL); }
- //! Destroy thread conditional
- ~ThrCond() { pthread_cond_destroy(&cond); }
-
- //! Wait for condition
- bool Wait();
-
- /*! Wait for condition (for a certain time).
- \param ftime Wait time in seconds
- \ret true = signalled, false = timed out
- \remark If ftime = 0 this may suck away your cpu if used in a signalled loop.
- \remark The time resolution of the implementation is required to be at least ms.
- */
- bool TimedWait(double ftime);
-
- //! Signal condition
- bool Signal() { return pthread_cond_signal(&cond) == 0; }
-
- protected:
- pthread_cond_t cond;
- };
-#elif FLEXT_THREADS == FLEXT_THR_WIN32
- {
- public:
- //! Construct thread conditional
- ThrCond() { cond = CreateEvent(NULL,FALSE,FALSE,NULL); }
- //! Destroy thread conditional
- ~ThrCond() { CloseHandle(cond); }
-
- //! Wait for condition
- bool Wait() { return WaitForSingleObject(cond,INFINITE) == WAIT_OBJECT_0; }
-
- /*! Wait for condition (for a certain time).
- \param ftime Wait time in seconds
- \ret true = signalled, false = timed out
- \remark If ftime = 0 this may suck away your cpu if used in a signalled loop.
- \remark The time resolution of the implementation is required to be at least ms.
- */
- bool TimedWait(double ftime) { return WaitForSingleObject(cond,(LONG)(ftime*1000)) == WAIT_OBJECT_0; }
-
- //! Signal condition
- bool Signal() { return SetEvent(cond) != 0; }
-
- protected:
- HANDLE cond;
- };
-#elif FLEXT_THREADS == FLEXT_THR_MP
- {
- public:
- //! Construct thread conditional
- ThrCond() { MPCreateEvent(&ev); }
- //! Destroy thread conditional
- ~ThrCond() { MPDeleteEvent(ev); }
-
- //! Wait for condition
- bool Wait() { return MPWaitForEvent(ev,NULL,kDurationForever) == noErr; }
-
- /*! \brief Wait for condition (for a certain time).
- \param time Wait time in seconds
- */
- bool TimedWait(double tm) { return MPWaitForEvent(ev,NULL,tm*kDurationMicrosecond*1.e6) == noErr; }
-
- //! Signal condition
- bool Signal() { return MPSetEvent(ev,1) == noErr; } // one bit needs to be set at least
-
- protected:
- MPEventID ev;
- };
-#else
-#error "Not implemented"
-#endif
-
- /*! \brief Add current thread to list of active threads.
- \return true on success
- \internal
- */
- static bool PushThread();
-
- /*! \brief Remove current thread from list of active threads.
- \internal
- */
- static void PopThread();
-
- /*! \brief Launch a thread.
- \param meth Thread function
- \param params Parameters to pass to the thread, may be NULL if not needed.
- \return Thread id on success, NULL on failure
- */
- static bool LaunchThread(void (*meth)(thr_params *p),thr_params *params = NULL);
-
- /*! \brief Terminate a thread.
- \param meth Thread function
- \param params Parameters to pass to the thread, may be NULL if not needed.
- \return True if at least one matching thread has been found.
- \remark Terminates all running threads with matching meth and params.
- \note Function doesn NOT wait for termination
- */
- static bool StopThread(void (*meth)(thr_params *p),thr_params *params = NULL,bool wait = false);
-
-#endif // FLEXT_THREADS
-
-//! @} FLEXT_S_THREAD
-
-
-// --- timer stuff -----------------------------------------------
-
-/*! \defgroup FLEXT_S_TIMER Flext timer handling
- @{
-
- \remark The clock of the real-time system is used for most of these functions.
- \remark Since this clock can be synchronized to an external clock (or e.g. the audio card)
- \remark it may differ from the clock of the operating system
-*/
-
- /*! \brief Get time since real-time system startup.
- \note This is not the time of the operating system but of the real-time system.
- \note It may depend on the time source the system is synchronized to (e.g. audio sample rate).
- */
- static double GetTime()
- {
- #if FLEXT_SYS == FLEXT_SYS_PD
- return clock_gettimesince(0)*0.001;
- #elif FLEXT_SYS == FLEXT_SYS_MAX
- double tm;
- clock_getftime(&tm);
- return tm*0.001;
- #else
- #error Not implemented
- #endif
- }
-
- /*! \brief Get time granularity of the GetTime function.
- \note This can be zero if not determined.
- */
- static double GetTimeGrain()
- {
- #if FLEXT_SYS == FLEXT_SYS_PD
- return 0;
- #elif FLEXT_SYS == FLEXT_SYS_MAX
- return 0.001;
- #else
- #error Not implemented
- #endif
- }
-
- /*! \brief Get operating system time since flext startup.
- */
- static double GetOSTime();
-
- /*! \brief Sleep for an amount of time.
- \remark The OS clock is used for that.
- \note Clearly in a real-time system this should only be used in a detached thread.
- */
- static void Sleep(double s);
-
- /*! \brief Class encapsulating a timer with callback functionality.
- This class can either be used with FLEXT_ADDTIMER or used as a base class with an overloaded virtual Work function.
- */
- class FLEXT_SHARE Timer:
- public flext_root
- {
- public:
- Timer(bool queued = false);
- virtual ~Timer();
-
- //! Set timer callback function.
- void SetCallback(void (*cb)(void *data)) { clss = NULL,cback = cb; }
- //! Set timer callback function (with class pointer).
- void SetCallback(FLEXT_CLASSDEF(flext_base) &th,bool (*cb)(FLEXT_CLASSDEF(flext_base) *th,void *data)) { clss = &th,cback = (void (*)(void *))cb; }
-
- //! Clear timer.
- bool Reset();
- //! Trigger a one shot at an absolute time.
- bool At(double time,void *data = NULL,bool dopast = true);
- //! Trigger a one shot interval.
- bool Delay(double time,void *data = NULL);
- //! Trigger a periodic interval.
- bool Periodic(double time,void *data = NULL);
- //! Trigger immediately.
- bool Now(void *data = NULL) { return Delay(0,data); }
-
- //! Worker function, called on every timer event.
- virtual void Work();
-
- protected:
- static void callback(Timer *tmr);
-
-#if FLEXT_SYS == FLEXT_SYS_PD
- t_clock *clk;
-#elif FLEXT_SYS == FLEXT_SYS_MAX
- static void queuefun(Timer *tmr);
- t_clock *clk;
- t_qelem *qelem;
-#else
-#error Not implemented
-#endif
-
- const bool queued;
- void (*cback)(void *data);
- FLEXT_CLASSDEF(flext_base) *clss;
- void *userdata;
- double period;
- };
-
-//! @} FLEXT_S_TIMER
-
- //! Check if we are in DSP time
- static bool InDSP() { return indsp; }
-
-// --- SIMD functionality -----------------------------------------------
-
-/*! \defgroup FLEXT_S_SIMD Cross platform SIMD support for modern CPUs
- @{
-*/
- enum simd_type {
- simd_none = 0,
- simd_mmx = 0x01,
- simd_3dnow = 0x02,
- simd_sse = 0x04,
- simd_sse2 = 0x08,
- simd_altivec = 0x10
- };
-
- /*! Check for SIMD capabilities of the CPU */
- static unsigned long GetSIMDCapabilities();
-
-
- static void MulSamples(t_sample *dst,const t_sample *src,t_sample mul,int cnt);
- static void MulSamples(t_sample *dst,const t_sample *src,const t_sample *mul,int cnt);
- static void AddSamples(t_sample *dst,const t_sample *src,t_sample add,int cnt);
- static void AddSamples(t_sample *dst,const t_sample *src,const t_sample *add,int cnt);
- static void ScaleSamples(t_sample *dst,const t_sample *src,t_sample mul,t_sample add,int cnt);
- static void ScaleSamples(t_sample *dst,const t_sample *src,t_sample mul,const t_sample *add,int cnt);
- static void ScaleSamples(t_sample *dst,const t_sample *src,const t_sample *mul,const t_sample *add,int cnt);
-
-//! @} FLEXT_S_SIMD
-
-
-//! @} FLEXT_SUPPORT
-
-protected:
-#ifdef __MRC__
- friend class flext_obj;
-#endif
-
- static void Setup();
-
- static bool chktilde(const char *objname);
-
- static unsigned long simdcaps;
-
- static const t_symbol *sym_buffer;
- static const t_symbol *sym_size;
- static const t_symbol *sym_attributes;
- static const t_symbol *sym_methods;
-
- //! flag if we are within DSP
- static bool indsp;
-};
-
-
-// gcc doesn't like these to be included into the flext class (even if static)
-inline bool operator ==(const t_atom &a,const t_atom &b) { return flext::CmpAtom(a,b) == 0; }
-inline bool operator !=(const t_atom &a,const t_atom &b) { return flext::CmpAtom(a,b) != 0; }
-inline bool operator <(const t_atom &a,const t_atom &b) { return flext::CmpAtom(a,b) < 0; }
-inline bool operator <=(const t_atom &a,const t_atom &b) { return flext::CmpAtom(a,b) <= 0; }
-inline bool operator >(const t_atom &a,const t_atom &b) { return flext::CmpAtom(a,b) > 0; }
-inline bool operator >=(const t_atom &a,const t_atom &b) { return flext::CmpAtom(a,b) >= 0; }
-
-//! @} // FLEXT_SUPPORT
-
-#endif
diff --git a/externals/grill/flext/source/flthr.cpp b/externals/grill/flext/source/flthr.cpp
deleted file mode 100644
index 36559997..00000000
--- a/externals/grill/flext/source/flthr.cpp
+++ /dev/null
@@ -1,646 +0,0 @@
-/*
-
-flext - C++ layer for Max/MSP and pd (pure data) externals
-
-Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-/*! \file flthr.cpp
- \brief Implementation of the flext thread functionality.
-*/
-
-#include "flext.h"
-
-#ifdef FLEXT_THREADS
-
-// maximum wait time for threads to finish (in ms)
-#define MAXIMUMWAIT 100
-
-
-#include "flinternal.h"
-#include "flcontainers.h"
-
-#include <time.h>
-
-#if FLEXT_OSAPI == FLEXT_OSAPI_MAC_MACH || FLEXT_OSAPI == FLEXT_OSAPI_UNIX_POSIX || FLEXT_OSAPI == FLEXT_OSAPI_WIN_POSIX
-#include <sys/time.h>
-#include <unistd.h>
-#elif FLEXT_OS == FLEXT_OS_WIN
-#include <sys/timeb.h>
-#endif
-
-#if FLEXT_THREADS == FLEXT_THR_WIN32 && WINVER < 0x0500
-#error WIN32 threads need Windows SDK version >= 0x500
-#endif
-
-#include <errno.h>
-
-//! Thread id of system thread - will be initialized in flext::Setup
-flext::thrid_t flext::thrid;
-
-//! Thread id of helper thread - will be initialized in flext::Setup
-flext::thrid_t flext::thrhelpid;
-
-
-//! \brief This represents an entry to the list of active method threads
-class thr_entry
- : public flext
- , public Fifo::Cell
-{
-public:
- void Set(void (*m)(thr_params *),thr_params *p,thrid_t id = GetThreadId())
- {
- th = p?p->cl:NULL;
- meth = m,params = p,thrid = id;
- shouldexit = false;
-#if FLEXT_THREADS == FLEXT_THR_MP
- weight = 100; // MP default weight
-#endif
- }
-
- //! \brief Check if this class represents the current thread
- bool Is(thrid_t id = GetThreadId()) const { return IsThread(thrid,id); }
-
- FLEXT_CLASSDEF(flext_base) *This() const { return th; }
- thrid_t Id() const { return thrid; }
-
- FLEXT_CLASSDEF(flext_base) *th;
- void (*meth)(thr_params *);
- thr_params *params;
- thrid_t thrid;
- bool shouldexit;
-#if FLEXT_THREADS == FLEXT_THR_MP
- int weight;
-#endif
-};
-
-template<class T>
-class ThrFinder:
- public T
-{
-public:
- void Push(thr_entry *e) { T::Push(e); }
- thr_entry *Pop() { return T::Pop(); }
-
- thr_entry *Find(flext::thrid_t id,bool pop = false)
- {
- TypedLifo<thr_entry> qutmp;
- thr_entry *fnd;
- while((fnd = Pop()) && !fnd->Is(id)) qutmp.Push(fnd);
- // put back entries
- for(thr_entry *ti; (ti = qutmp.Pop()) != NULL; ) Push(ti);
- if(fnd && !pop) Push(fnd);
- return fnd;
- }
-};
-
-static ThrFinder< PooledLifo<thr_entry,1,10> > thrpending;
-static ThrFinder< TypedLifo<thr_entry> > thractive,thrstopped;
-
-//! Helper thread conditional
-static flext::ThrCond *thrhelpcond = NULL;
-
-
-static void LaunchHelper(thr_entry *e)
-{
- e->thrid = flext::GetThreadId();
- e->meth(e->params);
-}
-
-bool initialized = false;
-
-//! Start helper thread
-bool flext::StartHelper()
-{
- bool ok = false;
- initialized = false;
-#if FLEXT_THREADS == FLEXT_THR_POSIX
- pthread_attr_t attr;
- pthread_attr_init(&attr);
- pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_DETACHED);
-
- pthread_t tmp;
- ok = pthread_create (&tmp,&attr,(void *(*)(void *))ThrHelper,NULL) == 0;
-#elif FLEXT_THREADS == FLEXT_THR_MP
- if(!MPLibraryIsLoaded())
- error("Thread library is not loaded");
- else {
- MPTaskID tmp;
- OSStatus ret = MPCreateTask((TaskProc)ThrHelper,NULL,0,0,0,0,0,&tmp);
- ok = ret == noErr;
- }
-#elif FLEXT_THREADS == FLEXT_THR_WIN32
- ok = _beginthread(ThrHelper,0,NULL) >= 0;
-#else
-#error
-#endif
- if(!ok)
- error("flext - Could not launch helper thread!");
- else {
- // now we have to wait for thread helper to initialize
- while(!initialized) Sleep(0.001);
-
- // we are ready for threading now!
- }
-
-#if FLEXT_THREADS == FLEXT_THR_POSIX
- pthread_attr_destroy(&attr);
-#endif
- return ok;
-}
-
-//! Static helper thread function
-void flext::ThrHelper(void *)
-{
- thrhelpid = GetThreadId();
-
-#if FLEXT_THREADS == FLEXT_THR_POSIX
- // set prototype thread attributes
- pthread_attr_t attr;
- pthread_attr_init(&attr);
- pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_DETACHED);
-#endif
-
- // set thread priority one point below normal
- // so thread construction won't disturb real-time audio
- RelPriority(-1);
-
- thrhelpcond = new ThrCond;
-
- initialized = true;
-
- // helper loop
- for(;;) {
- thrhelpcond->Wait();
-
- // start all inactive threads
- thr_entry *ti;
- while((ti = thrpending.Pop()) != NULL) {
- bool ok;
-
- #if FLEXT_THREADS == FLEXT_THR_POSIX
- thrid_t dummy;
- ok = pthread_create (&dummy,&attr,(void *(*)(void *))LaunchHelper,ti) == 0;
- #elif FLEXT_THREADS == FLEXT_THR_MP
- thrid_t dummy;
- ok = MPCreateTask((TaskProc)LaunchHelper,ti,0,0,0,0,0,&dummy) == noErr;
- #elif FLEXT_THREADS == FLEXT_THR_WIN32
- ok = _beginthread((void (*)(void *))LaunchHelper,0,ti) >= 0;
- #else
- #error
- #endif
- if(!ok) {
- error("flext - Could not launch thread!");
- thrpending.Free(ti); ti = NULL;
- }
- else
- // insert into queue of active threads
- thractive.Push(ti);
- }
- }
-
- FLEXT_ASSERT(false);
-/*
- // Never reached!
-
- delete thrhelpcond;
- thrhelpcond = NULL;
-
-#if FLEXT_THREADS == FLEXT_THR_POSIX
- pthread_attr_destroy(&attr);
-#endif
-*/
-}
-
-
-bool flext::LaunchThread(void (*meth)(thr_params *p),thr_params *p)
-{
- FLEXT_ASSERT(thrhelpcond);
-
- // make an entry into thread list
- thr_entry *e = thrpending.New();
- e->Set(meth,p);
- thrpending.Push(e);
- // signal thread helper
- thrhelpcond->Signal();
-
- return true;
-}
-
-static bool waitforstopped(TypedFifo<thr_entry> &qufnd,float wait = 0)
-{
- TypedLifo<thr_entry> qutmp;
-
- double until;
- if(wait) until = flext::GetOSTime()+wait;
-
- for(;;) {
- thr_entry *fnd = qufnd.Get();
- if(!fnd) break; // no more entries -> done!
-
- thr_entry *ti;
- // search for entry
- while((ti = thrstopped.Pop()) != NULL && ti != fnd) qutmp.Push(ti);
- // put back entries
- while((ti = qutmp.Pop()) != NULL) thrstopped.Push(ti);
-
- if(ti) {
- // still in thrstopped queue
- qufnd.Put(fnd);
- // yield to other threads
- flext::ThrYield();
-
- if(wait && flext::GetOSTime() > until)
- // not successful -> remaining thread are still in qufnd queue
- return false;
- }
- }
- return true;
-}
-
-bool flext::StopThread(void (*meth)(thr_params *p),thr_params *p,bool wait)
-{
- FLEXT_ASSERT(thrhelpcond);
-
- TypedLifo<thr_entry> qutmp;
- thr_entry *ti;
-
- // first search pending queue
- // --------------------------
-
- {
- bool found = false;
- while((ti = thrpending.Pop()) != NULL)
- if(ti->meth == meth && ti->params == p) {
- // found -> thread hasn't started -> just delete
- thrpending.Free(ti);
- found = true;
- }
- else
- qutmp.Push(ti);
-
- // put back into pending queue (order doesn't matter)
- while((ti = qutmp.Pop()) != NULL) thrpending.Push(ti);
-
- if(found) return true;
- }
-
- // now search active queue
- // -----------------------
-
- TypedFifo<thr_entry> qufnd;
-
- while((ti = thractive.Pop()) != NULL)
- if(ti->meth == meth && ti->params == p) {
- thrstopped.Push(ti);
- thrhelpcond->Signal();
- qufnd.Put(ti);
- }
- else
- qutmp.Push(ti);
-
- // put back into pending queue (order doesn't matter)
- while((ti = qutmp.Pop()) != NULL) thractive.Push(ti);
-
- // wakeup helper thread
- thrhelpcond->Signal();
-
- // now wait for entries in qufnd to have vanished from thrstopped
- if(wait)
- return waitforstopped(qufnd);
- else
- return qufnd.Size() == 0;
-}
-
-bool flext::ShouldExit()
-{
- return thrstopped.Find(GetThreadId()) != NULL;
-}
-
-bool flext::PushThread()
-{
- // set priority of newly created thread one point below the system thread's
- RelPriority(-1);
- return true;
-}
-
-void flext::PopThread()
-{
- thrid_t id = GetThreadId();
- thr_entry *fnd = thrstopped.Find(id,true);
- if(!fnd) fnd = thractive.Find(id,true);
-
- if(fnd)
- thrpending.Free(fnd);
-#ifdef FLEXT_DEBUG
- else
- post("flext - INTERNAL ERROR: Thread not found!");
-#endif
-}
-
-//! Terminate all object threads
-bool flext_base::StopThreads()
-{
- FLEXT_ASSERT(thrhelpcond);
-
- TypedLifo<thr_entry> qutmp;
- thr_entry *ti;
-
- // first search pending queue
- // --------------------------
-
- while((ti = thrpending.Pop()) != NULL)
- if(ti->This() == this)
- // found -> thread hasn't started -> just delete
- thrpending.Free(ti);
- else
- qutmp.Push(ti);
-
- // put back into pending queue (order doesn't matter)
- while((ti = qutmp.Pop()) != NULL) thrpending.Push(ti);
-
- // now search active queue
- // -----------------------
-
- TypedFifo<thr_entry> qufnd;
-
- while((ti = thractive.Pop()) != NULL)
- if(ti->This() == this) {
- thrstopped.Push(ti);
- thrhelpcond->Signal();
- qufnd.Put(ti);
- }
- else
- qutmp.Push(ti);
-
- // put back into pending queue (order doesn't matter)
- while((ti = qutmp.Pop()) != NULL) thractive.Push(ti);
-
- // wakeup helper thread
- thrhelpcond->Signal();
-
- // now wait for entries in qufnd to have vanished from thrstopped
- if(!waitforstopped(qufnd,MAXIMUMWAIT*0.001f)) {
-#ifdef FLEXT_DEBUG
- post("flext - doing hard thread termination");
-#endif
-
- // timeout -> hard termination
- while((ti = qufnd.Get()) != NULL) {
-#if FLEXT_THREADS == FLEXT_THR_POSIX
- if(pthread_cancel(ti->thrid))
- post("%s - Thread could not be terminated!",thisName());
-#elif FLEXT_THREADS == FLEXT_THR_MP
- MPTerminateTask(ti->thrid,0);
- // here, we should use a task queue to check whether the task has really terminated!!
-#elif FLEXT_THREADS == FLEXT_THR_WIN32
- // can't use the c library function _endthread.. memory leaks will occur
- HANDLE hnd = OpenThread(THREAD_ALL_ACCESS,TRUE,ti->thrid);
- TerminateThread(hnd,0);
-#else
-#error Not implemented
-#endif
- thrpending.Free(ti);
- }
- return false;
- }
- else
- return true;
-}
-
-bool flext::RelPriority(int dp,thrid_t ref,thrid_t id)
-{
-#if FLEXT_THREADS == FLEXT_THR_POSIX
- sched_param parm;
- int policy;
- if(pthread_getschedparam(ref,&policy,&parm) < 0) {
-#ifdef FLEXT_DEBUG
- post("flext - failed to get thread priority");
-#endif
- return false;
- }
- else {
- parm.sched_priority += dp;
-
- // MSVC++ 6 produces wrong code with the following lines!!!
-// int schmin = sched_get_priority_min(policy);
-// int schmax = sched_get_priority_max(policy);
-
- if(parm.sched_priority < sched_get_priority_min(policy)) {
-#ifdef FLEXT_DEBUG
- post("flext - minimum thread priority reached");
-#endif
- parm.sched_priority = sched_get_priority_min(policy);
- }
- else if(parm.sched_priority > sched_get_priority_max(policy)) {
-#ifdef FLEXT_DEBUG
- post("flext - maximum thread priority reached");
-#endif
- parm.sched_priority = sched_get_priority_max(policy);
- }
-
- if(pthread_setschedparam(id,policy,&parm) < 0) {
-#ifdef FLEXT_DEBUG
- post("flext - failed to change thread priority");
-#endif
- return false;
- }
- }
- return true;
-
-#elif FLEXT_THREADS == FLEXT_THR_WIN32
- HANDLE href = OpenThread(THREAD_ALL_ACCESS,TRUE,ref);
- HANDLE hid = OpenThread(THREAD_ALL_ACCESS,TRUE,id);
- int pr = GetThreadPriority(href);
-
- if(pr == THREAD_PRIORITY_ERROR_RETURN) {
-#ifdef FLEXT_DEBUG
- post("flext - failed to get thread priority");
-#endif
- return false;
- }
-
- pr += dp;
- if(pr < THREAD_PRIORITY_IDLE) {
-#ifdef FLEXT_DEBUG
- post("flext - minimum thread priority reached");
-#endif
- pr = THREAD_PRIORITY_IDLE;
- }
- else if(pr > THREAD_PRIORITY_TIME_CRITICAL) {
-#ifdef FLEXT_DEBUG
- post("flext - maximum thread priority reached");
-#endif
- pr = THREAD_PRIORITY_TIME_CRITICAL;
- }
-
- if(SetThreadPriority(hid,pr) == 0) {
-#ifdef FLEXT_DEBUG
- post("flext - failed to change thread priority");
-#endif
- return false;
- }
- return true;
-
-#elif FLEXT_THREADS == FLEXT_THR_MP
- thr_entry *ti = thrpending.Find(id);
- if(!ti) ti = thractive.Find(id);
- if(ti) {
- // thread found in list
- int w = GetPriority(id);
- if(dp < 0) w /= 1<<(-dp);
- else w *= 1<<dp;
- if(w < 1) {
- #ifdef FLEXT_DEBUG
- post("flext - minimum thread priority reached");
- #endif
- w = 1;
- }
- else if(w > 10000) {
- #ifdef FLEXT_DEBUG
- post("flext - maximum thread priority reached");
- #endif
- w = 10000;
- }
- ti->weight = w;
- return MPSetTaskWeight(id,w) == noErr;
- }
- else return false;
-#else
-#error
-#endif
-}
-
-
-int flext::GetPriority(thrid_t id)
-{
-#if FLEXT_THREADS == FLEXT_THR_POSIX
- sched_param parm;
- int policy;
- if(pthread_getschedparam(id,&policy,&parm) < 0) {
-#ifdef FLEXT_DEBUG
- post("flext - failed to get parms");
-#endif
- return -1;
- }
- return parm.sched_priority;
-
-#elif FLEXT_THREADS == FLEXT_THR_WIN32
- HANDLE hid = OpenThread(THREAD_ALL_ACCESS,TRUE,id);
- int pr = GetThreadPriority(hid);
-
- if(pr == THREAD_PRIORITY_ERROR_RETURN) {
-#ifdef FLEXT_DEBUG
- post("flext - failed to get thread priority");
-#endif
- return -1;
- }
- return pr;
-
-#elif FLEXT_THREADS == FLEXT_THR_MP
- thr_entry *ti = thrpending.Find(id);
- if(!ti) ti = thractive.Find(id);
- return ti?ti->weight:-1;
-#else
-#error
-#endif
-}
-
-
-bool flext::SetPriority(int p,thrid_t id)
-{
-#if FLEXT_THREADS == FLEXT_THR_POSIX
- sched_param parm;
- int policy;
- if(pthread_getschedparam(id,&policy,&parm) < 0) {
-#ifdef FLEXT_DEBUG
- post("flext - failed to get parms");
-#endif
- return false;
- }
- else {
- parm.sched_priority = p;
- if(pthread_setschedparam(id,policy,&parm) < 0) {
-#ifdef FLEXT_DEBUG
- post("flext - failed to change priority");
-#endif
- return false;
- }
- }
- return true;
-
-#elif FLEXT_THREADS == FLEXT_THR_WIN32
- HANDLE hid = OpenThread(THREAD_ALL_ACCESS,TRUE,id);
- if(SetThreadPriority(hid,p) == 0) {
-#ifdef FLEXT_DEBUG
- post("flext - failed to change thread priority");
-#endif
- return false;
- }
- return true;
-
-#elif FLEXT_THREADS == FLEXT_THR_MP
- thr_entry *ti = thrpending.Find(id);
- if(!ti) ti = thractive.Find(id);
- return ti && MPSetTaskWeight(id,ti->weight = p) == noErr;
-#else
-#error
-#endif
-}
-
-
-flext_base::thr_params::thr_params(int n): cl(NULL),var(new _data[n]) {}
-flext_base::thr_params::~thr_params() { if(var) delete[] var; }
-
-void flext_base::thr_params::set_any(const t_symbol *s,int argc,const t_atom *argv) { var[0]._any = new AtomAnything(s,argc,argv); }
-void flext_base::thr_params::set_list(int argc,const t_atom *argv) { var[0]._list = new AtomList(argc,argv); }
-
-
-#if FLEXT_THREADS == FLEXT_THR_POSIX
-bool flext::ThrCond::Wait() {
- Lock();
- bool ret = pthread_cond_wait(&cond,&mutex) == 0;
- Unlock();
- return ret;
-}
-
-bool flext::ThrCond::TimedWait(double ftm)
-{
- timespec tm;
-#if FLEXT_OS == FLEXT_OS_WIN && FLEXT_OSAPI == FLEXT_OSAPI_WIN_NATIVE
-#ifdef _MSC_VER
- _timeb tmb;
- _ftime(&tmb);
-#else
- timeb tmb;
- ftime(&tmb);
-#endif
- tm.tv_nsec = tmb.millitm*1000000;
- tm.tv_sec = (long)tmb.time;
-#else // POSIX
-#if 0 // find out when the following is defined
- clock_gettime(CLOCK_REALTIME,tm);
-#else
- struct timeval tp;
- gettimeofday(&tp, NULL);
- tm.tv_nsec = tp.tv_usec*1000;
- tm.tv_sec = tp.tv_sec;
-#endif
-#endif
-
- tm.tv_nsec += (long)((ftm-(long)ftm)*1.e9);
- long nns = tm.tv_nsec%1000000000;
- tm.tv_sec += (long)ftm+(tm.tv_nsec-nns)/1000000000;
- tm.tv_nsec = nns;
-
- Lock();
- bool ret = pthread_cond_timedwait(&cond,&mutex,&tm) == 0;
- Unlock();
- return ret;
-}
-#endif
-
-#endif // FLEXT_THREADS
diff --git a/externals/grill/flext/source/fltimer.cpp b/externals/grill/flext/source/fltimer.cpp
deleted file mode 100644
index 6f13999f..00000000
--- a/externals/grill/flext/source/fltimer.cpp
+++ /dev/null
@@ -1,275 +0,0 @@
-/*
-
-flext - C++ layer for Max/MSP and pd (pure data) externals
-
-Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-/*! \file fltimer.cpp
- \brief flext timer functions and classes
-*/
-
-#include "flext.h"
-
-#if FLEXT_OS == FLEXT_OS_WIN
-#include <windows.h>
-#elif FLEXT_OS == FLEXT_OS_LINUX || FLEXT_OS == FLEXT_OS_IRIX || FLEXT_OSAPI == FLEXT_OSAPI_MAC_MACH
-#include <unistd.h>
-#include <sys/time.h>
-#elif FLEXT_OS == FLEXT_OS_MAC
-#include <Timer.h>
-#include <Threads.h>
-#endif
-
-
-#if FLEXT_OS == FLEXT_OS_WIN
-static double perffrq = 0;
-#endif
-
-static double getstarttime();
-static double starttime = getstarttime();
-
-static double getstarttime()
-{
-#if FLEXT_OS == FLEXT_OS_WIN
- LARGE_INTEGER frq;
- if(QueryPerformanceFrequency(&frq)) perffrq = (double)frq.QuadPart;
-#endif
-
- starttime = 0;
- return flext::GetOSTime();
-}
-
-double flext::GetOSTime()
-{
- double tm;
-
-#if FLEXT_OS == FLEXT_OS_WIN
- LARGE_INTEGER cnt;
- if(perffrq && QueryPerformanceCounter(&cnt))
- tm = cnt.QuadPart/perffrq;
- else {
- SYSTEMTIME systm;
- FILETIME fltm;
- GetSystemTime(&systm);
- SystemTimeToFileTime(&systm,&fltm);
- tm = ((LARGE_INTEGER *)&fltm)->QuadPart*1.e-7;
- }
-#elif FLEXT_OS == FLEXT_OS_LINUX || FLEXT_OS == FLEXT_OS_IRIX || FLEXT_OSAPI == FLEXT_OSAPI_MAC_MACH // POSIX
- timeval tmv;
- gettimeofday(&tmv,NULL);
- tm = tmv.tv_sec+tmv.tv_usec*1.e-6;
-#elif FLEXT_OS == FLEXT_OS_MAC // that's just for OS9 & Carbon!
- UnsignedWide tick;
- Microseconds(&tick);
- tm = (tick.hi*((double)(1L<<((sizeof tick.lo)*4))*(double)(1L<<((sizeof tick.lo)*4)))+tick.lo)*1.e-6;
-#else
- #error Not implemented
-#endif
- return tm-starttime;
-}
-
-void flext::Sleep(double s)
-{
- if(s <= 0) return;
-#if FLEXT_OS == FLEXT_OS_WIN
-#if defined(_WIN32_WINNT) && _WIN32_WINNT >= 0x400
-#if 0
- LARGE_INTEGER liDueTime;
- liDueTime.QuadPart = (LONGLONG)(-1.e7*s);
-
- // Create a waitable timer.
- HANDLE hTimer = CreateWaitableTimer(NULL,TRUE,NULL);
- if(hTimer) {
- if(SetWaitableTimer(hTimer,&liDueTime,0,NULL,NULL,0))
- // Wait for the timer.
- WaitForSingleObject(hTimer,INFINITE); // != WAIT_OBJECT_0)
- else
- ::Sleep((long)(s*1000.));
- CloseHandle(hTimer);
- }
- else
-#else
- LARGE_INTEGER cnt;
- if(perffrq && QueryPerformanceCounter(&cnt)) {
- LONGLONG dst = (LONGLONG)(cnt.QuadPart+perffrq*s);
- for(;;) {
- SwitchToThread(); // while waiting switch to another thread
- QueryPerformanceCounter(&cnt);
- if(cnt.QuadPart > dst) break;
- }
- }
- else
-#endif
-#endif
- // last resort....
- ::Sleep((long)(s*1000.));
-#elif FLEXT_OS == FLEXT_OS_LINUX || FLEXT_OS == FLEXT_OS_IRIX || FLEXT_OSAPI == FLEXT_OSAPI_MAC_MACH // POSIX
- usleep((long)(s*1000000.));
-#elif FLEXT_OS == FLEXT_OS_MAC // that's just for OS9 & Carbon!
- UnsignedWide tick;
- Microseconds(&tick);
- double target = tick.hi*((double)(1L<<((sizeof tick.lo)*4))*(double)(1L<<((sizeof tick.lo)*4)))+tick.lo+s*1.e6;
- for(;;) {
- // this is just a loop running until the time has passed - stone age (but we yield at least)
- Microseconds(&tick);
- if(target <= tick.hi*((double)(1L<<((sizeof tick.lo)*4))*(double)(1L<<((sizeof tick.lo)*4)))+tick.lo) break;
- YieldToAnyThread(); // yielding surely reduces the timing precision (but we're civilized)
- }
-#else
- #error Not implemented
-#endif
-}
-
-/* \param qu determines whether timed messages should be queued (low priority - only when supported by the system).
-*/
-flext::Timer::Timer(bool qu):
- queued(qu),
- clss(NULL),userdata(NULL),
- period(0)
-{
-#if FLEXT_SYS == FLEXT_SYS_PD
- clk = (t_clock *)clock_new(this,(t_method)callback);
-#elif FLEXT_SYS == FLEXT_SYS_MAX
- clk = (t_clock *)clock_new(this,(t_method)callback);
- if(queued) qelem = (t_qelem *)qelem_new(this,(method)queuefun);
-#else
- #error Not implemented
-#endif
-}
-
-flext::Timer::~Timer()
-{
-#if FLEXT_SYS == FLEXT_SYS_PD
- clock_free(clk);
-#elif FLEXT_SYS == FLEXT_SYS_MAX
- clock_free(clk);
- if(queued) ::qelem_free(qelem);
-#else
- #error Not implemented
-#endif
-}
-
-bool flext::Timer::Reset()
-{
-#if FLEXT_SYS == FLEXT_SYS_PD
- clock_unset(clk);
-#elif FLEXT_SYS == FLEXT_SYS_MAX
- clock_unset(clk);
- if(queued) ::qelem_unset(qelem);
-#else
- #error Not implemented
-#endif
- return true;
-}
-
-/*! \param tm absolute time (in seconds)
- \param data user data
- \param dopast if set events with times lying in the past will be triggered immediately, if not set they are ignored
- \return true on success
-*/
-bool flext::Timer::At(double tm,void *data,bool dopast)
-{
- userdata = data;
- period = 0;
-#if FLEXT_SYS == FLEXT_SYS_PD
- const double systm = clock_gettimesince(0);
- double df = tm*1000.-systm;
- if(dopast && df < 0) df = 0;
- if(df >= 0)
- clock_delay(clk,df);
-#elif FLEXT_SYS == FLEXT_SYS_MAX
- const double ms = tm*1000.;
- double cur;
- clock_getftime(&cur);
- if(cur <= ms)
- clock_fdelay(clk,ms-cur);
- else if(dopast) // trigger timer is past
- clock_fdelay(clk,0);
-#else
- #error Not implemented
-#endif
- return true;
-}
-
-/*! \param tm relative time (in seconds)
- \param data user data
- \return true on success
-*/
-bool flext::Timer::Delay(double tm,void *data)
-{
- userdata = data;
- period = 0;
-#if FLEXT_SYS == FLEXT_SYS_PD
- clock_delay(clk,tm*1000);
-#elif FLEXT_SYS == FLEXT_SYS_MAX
- clock_fdelay(clk,tm*1000.);
-#else
- #error Not implemented
-#endif
- return true;
-}
-
-/*! \param tm relative time between periodic events (in seconds)
- \param data user data
- \return true on success
- \note the first event will be delayed by tm
-*/
-bool flext::Timer::Periodic(double tm,void *data)
-{
- userdata = data;
- period = tm;
-#if FLEXT_SYS == FLEXT_SYS_PD
- clock_delay(clk,tm*1000.);
-#elif FLEXT_SYS == FLEXT_SYS_MAX
- clock_fdelay(clk,tm*1000.);
-#else
- #error Not implemented
-#endif
- return true;
-}
-
-//! \brief Callback function for system clock.
-void flext::Timer::callback(Timer *tmr)
-{
-#if FLEXT_SYS == FLEXT_SYS_MAX
- if(tmr->queued)
- qelem_set(tmr->qelem);
- else
-#endif
- tmr->Work();
-
- if(tmr->period) {
- // reschedule
-#if FLEXT_SYS == FLEXT_SYS_PD
- clock_delay(tmr->clk,tmr->period*1000.);
-#elif FLEXT_SYS == FLEXT_SYS_MAX
- clock_fdelay(tmr->clk,tmr->period*1000.);
-#else
- #error Not implemented
-#endif
- }
-}
-
-#if FLEXT_SYS == FLEXT_SYS_MAX
-/*! \brief Callback function for low priority clock (for queued messages).
-*/
-void flext::Timer::queuefun(Timer *tmr) { tmr->Work(); }
-#endif
-
-/*! \brief Virtual worker function - by default it calls the user callback function.
- \remark The respective callback parameter format is chosen depending on whether clss is defined or not.
-*/
-void flext::Timer::Work()
-{
- if(cback) {
- if(clss)
- ((bool (*)(flext_base *,void *))cback)(clss,userdata);
- else
- cback(userdata);
- }
-}
-
diff --git a/externals/grill/flext/source/flutil.cpp b/externals/grill/flext/source/flutil.cpp
deleted file mode 100644
index 3437ee75..00000000
--- a/externals/grill/flext/source/flutil.cpp
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
-
-flext - C++ layer for Max/MSP and pd (pure data) externals
-
-Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-/*! \file flutil.cpp
- \brief Implementation of the various utility functions.
-*/
-
-#include "flext.h"
-#include <string.h>
-
-#if FLEXT_OS == FLEXT_OS_WIN
-#include <windows.h>
-#elif FLEXT_OS == FLEXT_OS_MAC
- #if FLEXT_OSAPI != FLEXT_OSAPI_MAC_MACH
- #include <MacMemory.h>
- #else
- #include <Carbon/Carbon.h>
- #endif
-#endif
-
-void flext::CopyMem(void *dst,const void *src,int bytes)
-{
-#if FLEXT_OS == FLEXT_OS_WIN
- MoveMemory(dst,src,bytes);
-#elif FLEXT_OS == FLEXT_OS_MAC
- BlockMoveData(src,dst,bytes);
-#else
- memcpy(dst,src,bytes);
-#endif
-}
-
-void flext::ZeroMem(void *dst,int bytes)
-{
-#if FLEXT_OS == FLEXT_OS_WIN
- ZeroMemory(dst,bytes);
-#elif FLEXT_OS == FLEXT_OS_MAC
- BlockZero(dst,bytes);
-#else
- memset(dst,0,bytes);
-#endif
-}
diff --git a/externals/grill/flext/source/flxlet.cpp b/externals/grill/flext/source/flxlet.cpp
deleted file mode 100644
index 9fa9486a..00000000
--- a/externals/grill/flext/source/flxlet.cpp
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
-
-flext - C++ layer for Max/MSP and pd (pure data) externals
-
-Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-/*! \file flxlet.cpp
- \brief Implementation of the variable inlet/outlet functionality.
-*/
-
-#include "flext.h"
-#include "flinternal.h"
-#include <string.h>
-#include <stdarg.h>
-
-#define MAXLETS 256
-
-flext_base::xlet flext_base::inlist[MAXLETS],flext_base::outlist[MAXLETS];
-
-flext_base::xlet::xlet(): tp(xlet_none),desc(NULL) {}
-flext_base::xlet::~xlet() { if(desc) delete[] desc; }
-
-void flext_base::xlet::Desc(const char *c)
-{
- if(desc) delete[] desc;
- if(c) {
- size_t l = strlen(c);
- desc = new char[l+1];
- memcpy(desc,c,l+1);
- }
- else
- desc = NULL;
-}
-
-void flext_base::AddInlet(xlettype tp,int mult,const char *desc)
-{
- if(UNLIKELY(incnt+mult >= MAXLETS))
- post("%s - too many inlets",thisName());
- else
- for(int i = 0; i < mult; ++i) {
- xlet &x = inlist[incnt++];
- x.tp = tp;
- x.Desc(desc);
- }
-}
-
-void flext_base::AddOutlet(xlettype tp,int mult,const char *desc)
-{
- if(UNLIKELY(outcnt+mult >= MAXLETS))
- post("%s - too many outlets",thisName());
- else
- for(int i = 0; i < mult; ++i) {
- xlet &x = outlist[outcnt++];
- x.tp = tp;
- x.Desc(desc);
- }
-}
-
-void flext_base::DescInlet(int ix,const char *d)
-{
- if(UNLIKELY(ix >= incnt))
- post("%s - inlet %i not found",thisName(),ix);
- else
- inlist[ix].Desc(d);
-}
-
-void flext_base::DescOutlet(int ix,const char *d)
-{
- if(UNLIKELY(ix >= incnt))
- post("%s - outlet %i not found",thisName(),ix);
- else
- outlist[ix].Desc(d);
-}
-
-unsigned long flext_base::XletCode(xlettype tp,...)
-{
- unsigned long code = 0;
-
- va_list marker;
- va_start(marker,tp);
- int cnt = 0;
- xlettype arg = tp;
- for(; arg; ++cnt) {
-#ifdef FLEXT_DEBUG
- if(cnt > 9) {
- error("%s - Too many in/outlets defined - truncated to 9",thisName());
- break;
- }
-#endif
-
- code = code*10+(int)arg;
- arg = (xlettype)va_arg(marker,int);
- }
- va_end(marker);
-
- return code;
-}
-
-void flext_base::AddInlets(unsigned long code)
-{
- for(; code; code /= 10) AddInlet((xlettype)(code%10));
-}
-
-void flext_base::AddOutlets(unsigned long code)
-{
- for(; code; code /= 10) AddOutlet((xlettype)(code%10));
-}
-
diff --git a/externals/grill/flext/tutorial/Makefile.am b/externals/grill/flext/tutorial/Makefile.am
deleted file mode 100644
index f3247e81..00000000
--- a/externals/grill/flext/tutorial/Makefile.am
+++ /dev/null
@@ -1,55 +0,0 @@
-#
-# automake template
-# added by tim blechmann
-#
-
-SUBDIRS = \
- adv1 \
- adv2 \
- adv3 \
- attr1 \
- attr2 \
- attr3 \
- bind1 \
- buffer1 \
- lib1 \
- signal1 \
- signal2 \
- simple1 \
- simple2 \
- simple3 \
- sndobj1 \
- stk1 \
- stk2 \
- thread1 \
- thread2 \
- timer1
-
-
-EXTRA_DIST = \
- readme.txt \
- gpl.txt \
- tutorial.sln
-
-DIST_SUBDIRS = pd \
- maxmsp \
- adv1 \
- adv2 \
- adv3 \
- attr1 \
- attr2 \
- attr3 \
- bind1 \
- buffer1 \
- lib1 \
- signal1 \
- signal2 \
- simple1 \
- simple2 \
- simple3 \
- sndobj1 \
- stk1 \
- stk2 \
- thread1 \
- thread2 \
- timer1
diff --git a/externals/grill/flext/tutorial/adv1/Makefile.am b/externals/grill/flext/tutorial/adv1/Makefile.am
deleted file mode 100644
index d849ba2f..00000000
--- a/externals/grill/flext/tutorial/adv1/Makefile.am
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# automake template
-# added by tim blechmann
-#
-
-NAME = adv1
-
-BUILT_SOURCES = main.cpp
-
-EXTRA_DIST = main.cpp \
- $(NAME).mcp \
- $(NAME).vcproj
-
-CXXFLAGS = @CXXFLAGS@ \
- @OPT_FLAGS@ \
- @INCLUDEDIR@ \
- -I../../source \
- $(DEFS) \
- -DFLEXT_SHARED
-
-LDFLAGS = @DYNAMIC_LDFLAGS@ @LDFLAGS@ \
- $(patsubst %,-framework %,$(FRAMEWORKS))
-
-LIBS = @LIBS@ -lflext-pd
-
-FRAMEWORKS = @FRAMEWORKS@
-
-TARGETDIR = @TARGETDIR@
-
-TARGET =$(NAME).@EXTENSION@
-
-OBJECTS = $(patsubst %.cpp,./%.@OBJEXT@,$(BUILT_SOURCES))
-
-SYSDIR = @SYSDIR@
-
-
-# ----------------------------- targets --------------------------------
-
-all-local: $(OBJECTS)
- $(CXX) $(LDFLAGS) ./*.@OBJEXT@ $(LIBS) -o ../$(TARGETDIR)/$(TARGET)
- strip --strip-unneeded ../$(TARGETDIR)/$(TARGET)
-
-./%.@OBJEXT@ : %.cpp
- $(CXX) -c $(CXXFLAGS) $< -o $@
-
-clean-local:
- rm -f ../$(TARGETDIR)/$(TARGET)
- rm -f ./$(OBJECTS)
-
-install-exec-local:
- install ../$(TARGET) $(SYSDIR)extra
diff --git a/externals/grill/flext/tutorial/adv1/adv1.mcp b/externals/grill/flext/tutorial/adv1/adv1.mcp
deleted file mode 100755
index 7b89200a..00000000
--- a/externals/grill/flext/tutorial/adv1/adv1.mcp
+++ /dev/null
Binary files differ
diff --git a/externals/grill/flext/tutorial/adv1/adv1.vcproj b/externals/grill/flext/tutorial/adv1/adv1.vcproj
deleted file mode 100644
index 3737a2a8..00000000
--- a/externals/grill/flext/tutorial/adv1/adv1.vcproj
+++ /dev/null
@@ -1,177 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="adv1"
- SccProjectName="adv1"
- SccAuxPath=""
- SccLocalPath="."
- SccProvider="MSSCCI:Jalindi Igloo">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Release|Win32"
- OutputDirectory=".\msvc"
- IntermediateDirectory=".\msvc"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src,..\..\source"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;PD"
- StringPooling="TRUE"
- RuntimeLibrary="4"
- EnableFunctionLevelLinking="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile=".\msvc/adv1.pch"
- AssemblerListingLocation=".\msvc/"
- ObjectFile=".\msvc/"
- ProgramDataBaseFileName=".\msvc/"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib flext-pdwin.lib"
- OutputFile="../pd-msvc/adv1.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\pd-msvc"
- ProgramDatabaseFile=".\msvc/adv1.pdb"
- ImportLibrary=".\msvc/adv1.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\msvc/adv1.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory=".\msvc-debug"
- IntermediateDirectory=".\msvc-debug"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src,..\..\source"
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;PD"
- BasicRuntimeChecks="3"
- RuntimeLibrary="5"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile=".\msvc-debug/adv1.pch"
- AssemblerListingLocation=".\msvc-debug/"
- ObjectFile=".\msvc-debug/"
- ProgramDataBaseFileName=".\msvc-debug/"
- BrowseInformation="1"
- BrowseInformationFile=".\msvc-debug/"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="4"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib flext_d-pdwin.lib"
- OutputFile=".\msvc-debug/adv1.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\pd-msvc"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile=".\msvc-debug/adv1.pdb"
- ImportLibrary=".\msvc-debug/adv1.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="_DEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\msvc-debug/adv1.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath="main.cpp">
- <FileConfiguration
- Name="Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;PD;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;PD;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/externals/grill/flext/tutorial/adv1/main.cpp b/externals/grill/flext/tutorial/adv1/main.cpp
deleted file mode 100644
index 4150800f..00000000
--- a/externals/grill/flext/tutorial/adv1/main.cpp
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
-flext tutorial - advanced 1
-
-Copyright (c) 2002,2003 Thomas Grill (xovo@gmx.net)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
--------------------------------------------------------------------------
-
-This is an example of a simplified prepend object
-*/
-
-#include <flext.h>
-
-#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 401)
-#error You need at least flext version 0.4.1
-#endif
-
-
-class adv1:
- public flext_base
-{
- FLEXT_HEADER(adv1,flext_base)
-
-public:
- // constructor with variable argument list
- adv1(int argc,t_atom *argv);
-
-protected:
- void m_any(const t_symbol *s,int argc,t_atom *argv); // method which digests anything
-
- AtomList lst;
-private:
- FLEXT_CALLBACK_A(m_any); // callback for method "m_any" (with anything argument)
-};
-
-// instantiate the class (constructor has a variable argument list)
-// note the two words in the string: prepend acts as an alias for adv1!
-FLEXT_NEW_V("adv1 prepend",adv1)
-
-
-
-// constructor
-
-adv1::adv1(int argc,t_atom *argv)
-{
- AddInAnything(); // one inlet that can receive anything
- AddOutAnything(); // one outlet for anything
-
- // register method
- FLEXT_ADDMETHOD(0,m_any); // register method "m_any" for inlet 0
-
- if(argc != 0) { // check for arg count
- // store arg list
- lst(argc,argv);
- }
- else {
- // no args given
- post("%s - no arguments given",thisName());
-
- // tell flext that the initialization was not successful... object will not live
- InitProblem();
- }
-}
-
-
-
-// method
-
-void adv1::m_any(const t_symbol *s,int argc,t_atom *argv)
-{
- // reserve space for as many atoms as possibly necessary
- AtomList result(lst.Count()+argc+2);
-
- // ix is our counter of atoms to output
- int ix = 0;
-
- int i = 0;
- if(!IsSymbol(lst[0])) {
- // if first element to prepend is no symbol then make it a "list"
- SetSymbol(result[ix++],sym_list);
- }
- // copy atoms to prepend to result list
- for(; i < lst.Count(); ++i) CopyAtom(&result[ix++],&lst[i]);
-
- // if anything is no "list" or "float" then append it to result list
- if(s != sym_list && s != sym_float
-#if FLEXT_SYS == FLEXT_SYS_MAX
- && s != sym_int // in Max integers are system data types
-#endif
- )
- SetSymbol(result[ix++],s);
-
- // append pending arguments to result list
- for(i = 0; i < argc; ++i) CopyAtom(&result[ix++],argv+i);
-
- // output result list as an anything
- ToOutAnything(0,GetSymbol(result[0]),ix-1,result.Atoms()+1);
-}
-
-
diff --git a/externals/grill/flext/tutorial/adv1/package.txt b/externals/grill/flext/tutorial/adv1/package.txt
deleted file mode 100644
index f685a0e2..00000000
--- a/externals/grill/flext/tutorial/adv1/package.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-NAME=adv1
-SRCS=main.cpp
diff --git a/externals/grill/flext/tutorial/adv2/Makefile.am b/externals/grill/flext/tutorial/adv2/Makefile.am
deleted file mode 100644
index 6daf4f32..00000000
--- a/externals/grill/flext/tutorial/adv2/Makefile.am
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# automake template
-# added by tim blechmann
-#
-
-NAME = adv2
-
-BUILT_SOURCES = main.cpp
-
-EXTRA_DIST = main.cpp \
- $(NAME).mcp \
- $(NAME).vcproj
-
-CXXFLAGS = @CXXFLAGS@ \
- @OPT_FLAGS@ \
- @INCLUDEDIR@ \
- -I../../source \
- $(DEFS) \
- -DFLEXT_SHARED
-
-LDFLAGS = @DYNAMIC_LDFLAGS@ @LDFLAGS@ \
- $(patsubst %,-framework %,$(FRAMEWORKS))
-
-LIBS = @LIBS@ -lflext-pd
-
-FRAMEWORKS = @FRAMEWORKS@
-
-TARGETDIR = @TARGETDIR@
-
-TARGET =$(NAME).@EXTENSION@
-
-OBJECTS = $(patsubst %.cpp,./%.@OBJEXT@,$(BUILT_SOURCES))
-
-SYSDIR = @SYSDIR@
-
-
-# ----------------------------- targets --------------------------------
-
-all-local: $(OBJECTS)
- $(CXX) $(LDFLAGS) ./*.@OBJEXT@ $(LIBS) -o ../$(TARGETDIR)/$(TARGET)
- strip --strip-unneeded ../$(TARGETDIR)/$(TARGET)
-
-./%.@OBJEXT@ : %.cpp
- $(CXX) -c $(CXXFLAGS) $< -o $@
-
-clean-local:
- rm -f ../$(TARGETDIR)/$(TARGET)
- rm -f ./$(OBJECTS)
-
-install-exec-local:
- install ../$(TARGET) $(SYSDIR)extra
diff --git a/externals/grill/flext/tutorial/adv2/adv2.mcp b/externals/grill/flext/tutorial/adv2/adv2.mcp
deleted file mode 100755
index b46cd6d9..00000000
--- a/externals/grill/flext/tutorial/adv2/adv2.mcp
+++ /dev/null
Binary files differ
diff --git a/externals/grill/flext/tutorial/adv2/adv2.vcproj b/externals/grill/flext/tutorial/adv2/adv2.vcproj
deleted file mode 100644
index e87ac448..00000000
--- a/externals/grill/flext/tutorial/adv2/adv2.vcproj
+++ /dev/null
@@ -1,176 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="adv2"
- SccProjectName="adv2"
- SccAuxPath=""
- SccLocalPath="."
- SccProvider="MSSCCI:Jalindi Igloo">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory=".\msvc-debug"
- IntermediateDirectory=".\msvc-debug"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src,..\..\source"
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;PD"
- BasicRuntimeChecks="3"
- RuntimeLibrary="5"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile=".\msvc-debug/adv2.pch"
- AssemblerListingLocation=".\msvc-debug/"
- ObjectFile=".\msvc-debug/"
- ProgramDataBaseFileName=".\msvc-debug/"
- BrowseInformation="1"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="4"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib flext_d-pdwin.lib"
- OutputFile=".\msvc-debug/adv2.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\pd-msvc"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile=".\msvc-debug/adv2.pdb"
- ImportLibrary=".\msvc-debug/adv2.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="_DEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\msvc-debug/adv2.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory=".\msvc"
- IntermediateDirectory=".\msvc"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src,..\..\source"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;PD"
- StringPooling="TRUE"
- RuntimeLibrary="4"
- EnableFunctionLevelLinking="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile=".\msvc/adv2.pch"
- AssemblerListingLocation=".\msvc/"
- ObjectFile=".\msvc/"
- ProgramDataBaseFileName=".\msvc/"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib flext-pdwin.lib"
- OutputFile="../pd-msvc/adv2.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\pd-msvc"
- ProgramDatabaseFile=".\msvc/adv2.pdb"
- ImportLibrary=".\msvc/adv2.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\msvc/adv2.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath="main.cpp">
- <FileConfiguration
- Name="Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;PD;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;PD;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/externals/grill/flext/tutorial/adv2/main.cpp b/externals/grill/flext/tutorial/adv2/main.cpp
deleted file mode 100644
index 6558f5d1..00000000
--- a/externals/grill/flext/tutorial/adv2/main.cpp
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
-flext tutorial - advanced 2
-
-Copyright (c) 2002-2006 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
--------------------------------------------------------------------------
-
-This is an optimized version of the example "simple 3"
-
-It has the exact same functionality but methods are registered at class setup opposed to
-object setup (in the constructor) in "simple 3"
-
-The advantage of this lies in the fact that the message database needs only be constructed
-once for all objects, namely on creation of the first object of this class.
-All objects [adv2] will share the same database, saving memory.
-
-*/
-
-// include flext header
-#include <flext.h>
-
-// check for appropriate flext version
-#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 500)
-#error You need at least flext version 0.5.0
-#endif
-
-class adv2:
- public flext_base
-{
- // flext header with a setup function called "setup"
- FLEXT_HEADER_S(adv2,flext_base,setup)
-
-public:
- adv2();
-
-protected:
- void m_tag();
- void m_tag_and_int(int i);
- void m_sym(t_symbol *s);
-
- void m_help();
-
-private:
- // define the _static_ class setup function
- static void setup(t_classid c);
-
- FLEXT_CALLBACK(m_tag)
- FLEXT_CALLBACK_I(m_tag_and_int)
- FLEXT_CALLBACK_S(m_sym)
- FLEXT_CALLBACK(m_help)
-};
-
-// instantiate the class (constructor takes no arguments)
-FLEXT_NEW("adv2",adv2)
-
-
-adv2::adv2()
-{
- // define inlets
- AddInAnything(); // add inlet of type anything (index 0)
-}
-
-void adv2::setup(t_classid c)
-{
- // register methods:
- // notice the naming FLEXT_CADD_METHOD* instead of FLEXT_ADD_METHOD*
- // there is also an additional parameter c pointing to the class definition
- FLEXT_CADDMETHOD_(c,0,"born",m_tag);
- FLEXT_CADDMETHOD_(c,0,"to",m_tag);
- FLEXT_CADDMETHOD_(c,0,"hula",m_tag);
- FLEXT_CADDMETHOD_I(c,0,"hula",m_tag_and_int);
-
- FLEXT_CADDMETHOD(c,0,m_sym);
-
- FLEXT_CADDMETHOD_(c,0,"help",m_help);
-}
-
-void adv2::m_tag()
-{
- post("tag recognized");
-}
-
-void adv2::m_tag_and_int(int i)
-{
- post("tag recognized (has int arg: %i)",i);
-}
-
-void adv2::m_sym(t_symbol *s)
-{
- post("symbol: %s",GetString(s));
-}
-
-void adv2::m_help()
-{
- post("%s - example for tagged messages",thisName());
-}
-
-
diff --git a/externals/grill/flext/tutorial/adv2/package.txt b/externals/grill/flext/tutorial/adv2/package.txt
deleted file mode 100644
index 58b91927..00000000
--- a/externals/grill/flext/tutorial/adv2/package.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-NAME=adv2
-SRCS=main.cpp
diff --git a/externals/grill/flext/tutorial/adv3/Makefile.am b/externals/grill/flext/tutorial/adv3/Makefile.am
deleted file mode 100644
index 6c083c80..00000000
--- a/externals/grill/flext/tutorial/adv3/Makefile.am
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# automake template
-# added by tim blechmann
-#
-
-NAME = adv3
-
-BUILT_SOURCES = main.cpp
-
-EXTRA_DIST = main.cpp \
- $(NAME).mcp \
- $(NAME).vcproj
-
-CXXFLAGS = @CXXFLAGS@ \
- @OPT_FLAGS@ \
- @INCLUDEDIR@ \
- -I../../source \
- $(DEFS) \
- -DFLEXT_SHARED
-
-LDFLAGS = @DYNAMIC_LDFLAGS@ @LDFLAGS@ \
- $(patsubst %,-framework %,$(FRAMEWORKS))
-
-LIBS = @LIBS@ -lflext-pd
-
-FRAMEWORKS = @FRAMEWORKS@
-
-TARGETDIR = @TARGETDIR@
-
-TARGET =$(NAME).@EXTENSION@
-
-OBJECTS = $(patsubst %.cpp,./%.@OBJEXT@,$(BUILT_SOURCES))
-
-SYSDIR = @SYSDIR@
-
-
-# ----------------------------- targets --------------------------------
-
-all-local: $(OBJECTS)
- $(CXX) $(LDFLAGS) ./*.@OBJEXT@ $(LIBS) -o ../$(TARGETDIR)/$(TARGET)
- strip --strip-unneeded ../$(TARGETDIR)/$(TARGET)
-
-./%.@OBJEXT@ : %.cpp
- $(CXX) -c $(CXXFLAGS) $< -o $@
-
-clean-local:
- rm -f ../$(TARGETDIR)/$(TARGET)
- rm -f ./$(OBJECTS)
-
-install-exec-local:
- install ../$(TARGET) $(SYSDIR)extra
diff --git a/externals/grill/flext/tutorial/adv3/adv3.mcp b/externals/grill/flext/tutorial/adv3/adv3.mcp
deleted file mode 100755
index a951fec5..00000000
--- a/externals/grill/flext/tutorial/adv3/adv3.mcp
+++ /dev/null
Binary files differ
diff --git a/externals/grill/flext/tutorial/adv3/adv3.vcproj b/externals/grill/flext/tutorial/adv3/adv3.vcproj
deleted file mode 100644
index c52e8835..00000000
--- a/externals/grill/flext/tutorial/adv3/adv3.vcproj
+++ /dev/null
@@ -1,176 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="adv3"
- SccProjectName="adv3"
- SccAuxPath=""
- SccLocalPath="."
- SccProvider="MSSCCI:Jalindi Igloo">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Release|Win32"
- OutputDirectory=".\msvc"
- IntermediateDirectory=".\msvc"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src,..\..\source"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;PD"
- StringPooling="TRUE"
- RuntimeLibrary="4"
- EnableFunctionLevelLinking="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile=".\msvc/adv3.pch"
- AssemblerListingLocation=".\msvc/"
- ObjectFile=".\msvc/"
- ProgramDataBaseFileName=".\msvc/"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib flext-pdwin.lib"
- OutputFile="../pd-msvc/adv3.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\pd-msvc"
- ProgramDatabaseFile=".\msvc/adv3.pdb"
- ImportLibrary=".\msvc/adv3.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\msvc/adv3.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory=".\msvc-debug"
- IntermediateDirectory=".\msvc-debug"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src,..\..\source"
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;PD"
- BasicRuntimeChecks="3"
- RuntimeLibrary="5"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile=".\msvc-debug/adv3.pch"
- AssemblerListingLocation=".\msvc-debug/"
- ObjectFile=".\msvc-debug/"
- ProgramDataBaseFileName=".\msvc-debug/"
- BrowseInformation="1"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="4"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib flext_d-pdwin.lib"
- OutputFile=".\msvc-debug/adv3.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\pd-msvc"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile=".\msvc-debug/adv3.pdb"
- ImportLibrary=".\msvc-debug/adv3.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="_DEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\msvc-debug/adv3.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath="main.cpp">
- <FileConfiguration
- Name="Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;PD;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;PD;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/externals/grill/flext/tutorial/adv3/main.cpp b/externals/grill/flext/tutorial/adv3/main.cpp
deleted file mode 100644
index 77f886d7..00000000
--- a/externals/grill/flext/tutorial/adv3/main.cpp
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
-flext tutorial - advanced 3
-
-Copyright (c) 2002-2006 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
--------------------------------------------------------------------------
-
-This is a port of Iohannes Zmölnigs "counter" example to the flext paradigm.
-Find the original at http://iem.kug.ac.at/pd/externals-HOWTO/node5.html
-
-The functionality is exactly the same, with one exception:
-flext doesn't support default arguments, hence a message "bound 1" will translate into
-"bound 1 0" in the original example, but won't be recognized with flext.
-This can be easily circumvented by using a method digesting a variable argument list, but
-was omitted for the sake of clearness.
-
-Apart from that you'll notice several differences to the original C object:
-- with flext, callbacks have to be declared for all registered methods
-- Flext allows the full usage of integer types
-- there are no real "passive" methods with flext.
- These can be emulated by methods, or more flexibly, attributes (see example "attr3")
-- Help symbols can't be defined that freely. This is because in Max/MSP help files always
- have the name of the object with a suffix .help appended.
- However with flext, a path to the respective help file may be specified
-*/
-
-// include flext header
-#include <flext.h>
-
-// check for appropriate flext version
-#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 501)
-#error You need at least flext version 0.5.1
-#endif
-
-class adv3:
- public flext_base
-{
- FLEXT_HEADER_S(adv3,flext_base,setup)
-
-public:
- // constructor with no arguments
- adv3(int argc,t_atom *argv):
- i_step(1)
- {
- // --- initialize bounds and step size ---
- int f1 = 0,f2 = 0;
- switch(argc) {
- default:
- case 3:
- i_step = GetInt(argv[2]);
- case 2:
- f2 = GetInt(argv[1]);
- case 1:
- f1 = GetInt(argv[0]);
- case 0:
- ;
- }
- if(argc < 2) f2 = f1;
-
- m_bound(f1,f2);
-
- i_count = i_down;
-
- // --- define inlets and outlets ---
- AddInAnything("bang, reset, etc."); // default inlet
- AddInList("bounds (2 element list)"); // inlet for bounds
- AddInInt("step size"); // inlet for step size
-
- AddOutInt("counter"); // outlet for integer count
- AddOutBang("overflow bang"); // outlet for bang
- }
-
-protected:
-
- void m_reset()
- {
- i_count = i_down;
- }
-
- void m_set(int argc,t_atom *argv)
- {
- i_count = argc?GetAInt(argv[0]):0;
- }
-
- void m_bang()
- {
- int f = i_count;
- i_count += i_step;
- if(i_down != i_up) {
- if((i_step > 0) && (i_count > i_up)) {
- i_count = i_down;
- ToOutBang(1);
- }
- else if(i_count < i_down) {
- i_count = i_up;
- ToOutBang(1);
- }
- }
- ToOutInt(0,f);
- }
-
- void m_bound(int f1,int f2)
- {
- i_down = f1 < f2?f1:f2;
- i_up = f1 > f2?f1:f2;
- }
-
- void m_step(int s)
- {
- i_step = s;
- }
-
- int i_count,i_down,i_up,i_step;
-
-private:
-
- static void setup(t_classid c)
- {
- // --- set up methods (class scope) ---
-
- // register a bang method to the default inlet (0)
- FLEXT_CADDBANG(c,0,m_bang);
-
- // set up tagged methods for the default inlet (0)
- // the underscore _ after CADDMETHOD indicates that a message tag is used
- // no, variable list or anything and all single arguments are recognized automatically, ...
- FLEXT_CADDMETHOD_(c,0,"reset",m_reset);
- FLEXT_CADDMETHOD_(c,0,"set",m_set);
- // ..., more complex types (combinations of types) have to be specified explicitly
- FLEXT_CADDMETHOD_II(c,0,"bound",m_bound); // two int arguments
-
- // set up methods for inlets 1 and 2
- // no message tag used
- FLEXT_CADDMETHOD(c,1,m_bound); // variable arg type recognized automatically
- FLEXT_CADDMETHOD(c,2,m_step); // single int arg also recognized automatically
- }
-
- // for every registered method a callback has to be declared
- FLEXT_CALLBACK(m_bang)
- FLEXT_CALLBACK(m_reset)
- FLEXT_CALLBACK_V(m_set)
- FLEXT_CALLBACK_II(m_bound)
- FLEXT_CALLBACK_I(m_step)
-};
-
-// instantiate the class (constructor has a variable argument list)
-// let "counter" be an alternative name
-// after the colon define the path/name of the help file (a path has a trailing /, a file has not)
-FLEXT_NEW_V("adv3 counter,help/",adv3)
-
-
diff --git a/externals/grill/flext/tutorial/adv3/package.txt b/externals/grill/flext/tutorial/adv3/package.txt
deleted file mode 100644
index 9bd894d4..00000000
--- a/externals/grill/flext/tutorial/adv3/package.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-NAME=adv3
-SRCS=main.cpp
diff --git a/externals/grill/flext/tutorial/attr1/Makefile.am b/externals/grill/flext/tutorial/attr1/Makefile.am
deleted file mode 100644
index 000b2a85..00000000
--- a/externals/grill/flext/tutorial/attr1/Makefile.am
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# automake template
-# added by tim blechmann
-#
-
-NAME = attr1
-
-BUILT_SOURCES = main.cpp
-
-EXTRA_DIST = main.cpp \
- $(NAME).mcp \
- $(NAME).vcproj
-
-CXXFLAGS = @CXXFLAGS@ \
- @OPT_FLAGS@ \
- @INCLUDEDIR@ \
- -I../../source \
- $(DEFS) \
- -DFLEXT_SHARED
-
-LDFLAGS = @DYNAMIC_LDFLAGS@ @LDFLAGS@ \
- $(patsubst %,-framework %,$(FRAMEWORKS))
-
-LIBS = @LIBS@ -lflext-pd
-
-FRAMEWORKS = @FRAMEWORKS@
-
-TARGETDIR = @TARGETDIR@
-
-TARGET =$(NAME).@EXTENSION@
-
-OBJECTS = $(patsubst %.cpp,./%.@OBJEXT@,$(BUILT_SOURCES))
-
-SYSDIR = @SYSDIR@
-
-
-# ----------------------------- targets --------------------------------
-
-all-local: $(OBJECTS)
- $(CXX) $(LDFLAGS) ./*.@OBJEXT@ $(LIBS) -o ../$(TARGETDIR)/$(TARGET)
- strip --strip-unneeded ../$(TARGETDIR)/$(TARGET)
-
-./%.@OBJEXT@ : %.cpp
- $(CXX) -c $(CXXFLAGS) $< -o $@
-
-clean-local:
- rm -f ../$(TARGETDIR)/$(TARGET)
- rm -f ./$(OBJECTS)
-
-install-exec-local:
- install ../$(TARGET) $(SYSDIR)extra
diff --git a/externals/grill/flext/tutorial/attr1/attr1.mcp b/externals/grill/flext/tutorial/attr1/attr1.mcp
deleted file mode 100755
index 32e4ec8f..00000000
--- a/externals/grill/flext/tutorial/attr1/attr1.mcp
+++ /dev/null
Binary files differ
diff --git a/externals/grill/flext/tutorial/attr1/attr1.vcproj b/externals/grill/flext/tutorial/attr1/attr1.vcproj
deleted file mode 100644
index e962984f..00000000
--- a/externals/grill/flext/tutorial/attr1/attr1.vcproj
+++ /dev/null
@@ -1,176 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="attr1"
- SccProjectName="attr1"
- SccAuxPath=""
- SccLocalPath="."
- SccProvider="MSSCCI:Jalindi Igloo">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory=".\msvc-debug"
- IntermediateDirectory=".\msvc-debug"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src,..\..\source"
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;PD"
- BasicRuntimeChecks="3"
- RuntimeLibrary="5"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile=".\msvc-debug/attr1.pch"
- AssemblerListingLocation=".\msvc-debug/"
- ObjectFile=".\msvc-debug/"
- ProgramDataBaseFileName=".\msvc-debug/"
- BrowseInformation="1"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="4"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib flext_d-pdwin.lib"
- OutputFile=".\msvc-debug/attr1.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\pd-msvc"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile=".\msvc-debug/attr1.pdb"
- ImportLibrary=".\msvc-debug/attr1.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="_DEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\msvc-debug/attr1.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory=".\msvc"
- IntermediateDirectory=".\msvc"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src,..\..\source"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;PD"
- StringPooling="TRUE"
- RuntimeLibrary="4"
- EnableFunctionLevelLinking="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile=".\msvc/attr1.pch"
- AssemblerListingLocation=".\msvc/"
- ObjectFile=".\msvc/"
- ProgramDataBaseFileName=".\msvc/"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib flext-pdwin.lib"
- OutputFile="../pd-msvc/attr1.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\pd-msvc"
- ProgramDatabaseFile=".\msvc/attr1.pdb"
- ImportLibrary=".\msvc/attr1.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\msvc/attr1.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath="main.cpp">
- <FileConfiguration
- Name="Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;PD;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;PD;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/externals/grill/flext/tutorial/attr1/main.cpp b/externals/grill/flext/tutorial/attr1/main.cpp
deleted file mode 100644
index e4abc47b..00000000
--- a/externals/grill/flext/tutorial/attr1/main.cpp
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
-flext tutorial - attributes 1
-
-Copyright (c) 2002,2003 Thomas Grill (xovo@gmx.net)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
--------------------------------------------------------------------------
-
-This is an example of a simple object doing a float addition
-It is a variation of the tutorial "simple 2"
-*/
-
-
-// IMPORTANT: enable attribute processing (specify before inclusion of flext headers!)
-// For clarity, this is done here, but you'd better specify it as a compiler definition
-// FLEXT_ATTRIBUTES must be 0 or 1,
-#define FLEXT_ATTRIBUTES 1
-
-
-// include flext header
-#include <flext.h>
-
-// check for appropriate flext version
-#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 400)
-#error You need at least flext version 0.4.0
-#endif
-
-
-class attr1:
- public flext_base
-{
- FLEXT_HEADER(attr1,flext_base)
-
-public:
- // constructor
- attr1();
-
-protected:
- void m_trigger(float f);
-
- // stored argument
- float arg;
-
-private:
- // callback for method "m_trigger" (with one float argument)
- FLEXT_CALLBACK_F(m_trigger)
-
- // define attribute callbacks for variable "arg" (with GET and SET properties)
- FLEXT_ATTRVAR_F(arg)
-};
-
-// instantiate the class
-FLEXT_NEW("attr1",attr1)
-
-
-attr1::attr1():
- arg(0) // initialize argument
-{
- // define inlets
- AddInAnything(); // first inlet of type anything (index 0)
-
- // define outlets
- AddOutFloat(); // one float outlet (has index 0)
-
- // register methods
- FLEXT_ADDMETHOD(0,m_trigger); // register method (for floats) "m_trigger" for inlet 0
-
- FLEXT_ADDATTR_VAR1("arg",arg); // register attribute "arg" with variable arg
-}
-
-void attr1::m_trigger(float f)
-{
- float res = arg+f;
-
- // output value to outlet
- ToOutFloat(0,res); // (0 stands for the outlet index 0)
-}
-
diff --git a/externals/grill/flext/tutorial/attr1/package.txt b/externals/grill/flext/tutorial/attr1/package.txt
deleted file mode 100644
index 938feb56..00000000
--- a/externals/grill/flext/tutorial/attr1/package.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-NAME=attr1
-SRCS=main.cpp
diff --git a/externals/grill/flext/tutorial/attr2/Makefile.am b/externals/grill/flext/tutorial/attr2/Makefile.am
deleted file mode 100644
index ed29b067..00000000
--- a/externals/grill/flext/tutorial/attr2/Makefile.am
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# automake template
-# added by tim blechmann
-#
-
-NAME = attr2
-
-BUILT_SOURCES = main.cpp
-
-EXTRA_DIST = main.cpp \
- $(NAME).mcp \
- $(NAME).vcproj
-
-CXXFLAGS = @CXXFLAGS@ \
- @OPT_FLAGS@ \
- @INCLUDEDIR@ \
- -I../../source \
- $(DEFS) \
- -DFLEXT_SHARED
-
-LDFLAGS = @DYNAMIC_LDFLAGS@ @LDFLAGS@ \
- $(patsubst %,-framework %,$(FRAMEWORKS))
-
-LIBS = @LIBS@ -lflext-pd
-
-FRAMEWORKS = @FRAMEWORKS@
-
-TARGETDIR = @TARGETDIR@
-
-TARGET =$(NAME).@EXTENSION@
-
-OBJECTS = $(patsubst %.cpp,./%.@OBJEXT@,$(BUILT_SOURCES))
-
-SYSDIR = @SYSDIR@
-
-
-# ----------------------------- targets --------------------------------
-
-all-local: $(OBJECTS)
- $(CXX) $(LDFLAGS) ./*.@OBJEXT@ $(LIBS) -o ../$(TARGETDIR)/$(TARGET)
- strip --strip-unneeded ../$(TARGETDIR)/$(TARGET)
-
-./%.@OBJEXT@ : %.cpp
- $(CXX) -c $(CXXFLAGS) $< -o $@
-
-clean-local:
- rm -f ../$(TARGETDIR)/$(TARGET)
- rm -f ./$(OBJECTS)
-
-install-exec-local:
- install ../$(TARGET) $(SYSDIR)extra
diff --git a/externals/grill/flext/tutorial/attr2/attr2.mcp b/externals/grill/flext/tutorial/attr2/attr2.mcp
deleted file mode 100755
index c2713289..00000000
--- a/externals/grill/flext/tutorial/attr2/attr2.mcp
+++ /dev/null
Binary files differ
diff --git a/externals/grill/flext/tutorial/attr2/attr2.vcproj b/externals/grill/flext/tutorial/attr2/attr2.vcproj
deleted file mode 100644
index 7cce4376..00000000
--- a/externals/grill/flext/tutorial/attr2/attr2.vcproj
+++ /dev/null
@@ -1,176 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="attr2"
- SccProjectName="attr2"
- SccAuxPath=""
- SccLocalPath="."
- SccProvider="MSSCCI:Jalindi Igloo">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Release|Win32"
- OutputDirectory=".\msvc"
- IntermediateDirectory=".\msvc"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src,..\..\source"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;PD"
- StringPooling="TRUE"
- RuntimeLibrary="4"
- EnableFunctionLevelLinking="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile=".\msvc/attr2.pch"
- AssemblerListingLocation=".\msvc/"
- ObjectFile=".\msvc/"
- ProgramDataBaseFileName=".\msvc/"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib flext-pdwin.lib"
- OutputFile="../pd-msvc/attr2.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\pd-msvc"
- ProgramDatabaseFile=".\msvc/attr2.pdb"
- ImportLibrary=".\msvc/attr2.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\msvc/attr2.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory=".\msvc-debug"
- IntermediateDirectory=".\msvc-debug"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src,..\..\source"
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;PD"
- BasicRuntimeChecks="3"
- RuntimeLibrary="5"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile=".\msvc-debug/attr2.pch"
- AssemblerListingLocation=".\msvc-debug/"
- ObjectFile=".\msvc-debug/"
- ProgramDataBaseFileName=".\msvc-debug/"
- BrowseInformation="1"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="4"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib flext_d-pdwin.lib"
- OutputFile=".\msvc-debug/attr2.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\pd-msvc"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile=".\msvc-debug/attr2.pdb"
- ImportLibrary=".\msvc-debug/attr2.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="_DEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\msvc-debug/attr2.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath="main.cpp">
- <FileConfiguration
- Name="Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;PD;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;PD;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/externals/grill/flext/tutorial/attr2/main.cpp b/externals/grill/flext/tutorial/attr2/main.cpp
deleted file mode 100644
index fe61f6da..00000000
--- a/externals/grill/flext/tutorial/attr2/main.cpp
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
-flext tutorial - attributes 2
-
-Copyright (c) 2002,2003 Thomas Grill (xovo@gmx.net)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
--------------------------------------------------------------------------
-
-This is an example of an object doing various float operations.
-
-Methods and attributes are registered at class level (opposed to object level in example "attr1").
-For details, see also example "adv2"
-
-*/
-
-
-// IMPORTANT: enable attribute processing (specify before inclusion of flext headers!)
-// For clarity, this is done here, but you'd better specify it as a compiler definition
-// FLEXT_ATTRIBUTES must be 0 or 1,
-#define FLEXT_ATTRIBUTES 1
-
-
-// include flext header
-#include <flext.h>
-
-// check for appropriate flext version
-#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 401)
-#error You need at least flext version 0.4.1
-#endif
-
-#include <math.h>
-
-
-class attr2:
- public flext_base
-{
- // compulsory flext header with a class setup function
- FLEXT_HEADER_S(attr2,flext_base,setup)
-
-public:
- // constructor
- attr2();
-
-protected:
- void m_trigger(float f);
-
- // stored argument of operation
- float arg;
-
- // stored result
- float res;
-
- enum operation {
- op_set,op_add,op_sub,op_mul,op_div,op_pow
- } op;
-
- static const t_symbol *sym_set,*sym_add,*sym_sub,*sym_div,*sym_mul,*sym_pow;
-
-private:
-
- static void setup(t_classid);
-
- // callback for method "m_trigger" (with one float argument)
- FLEXT_CALLBACK_F(m_trigger)
-
- // define attribute callbacks for variable "arg" ("ATTRVAR" means GET and SET)
- FLEXT_ATTRVAR_F(arg)
-
- // define attribute callbacks for variable "res" (GET only)
- FLEXT_ATTRGET_F(res)
-
- // methods for getting/setting the operation mode
- void opget(const t_symbol *&s) const;
- void opset(const t_symbol *&s);
-
- // define attribute callbacks for variable "res" (GET only)
- FLEXT_CALLGET_S(opget)
- FLEXT_CALLSET_S(opset)
-};
-
-// instantiate the class
-FLEXT_NEW("attr2",attr2)
-
-
-// instantiate static variables
-const t_symbol
- *attr2::sym_set,
- *attr2::sym_add,*attr2::sym_sub,
- *attr2::sym_div,*attr2::sym_mul,
- *attr2::sym_pow;
-
-void attr2::setup(t_classid c)
-{
- // Upon class creation setup some symbols
- // This is done only upon creation of of the first "attr2" object
- sym_set = MakeSymbol("=");
- sym_add = MakeSymbol("+");
- sym_sub = MakeSymbol("-");
- sym_mul = MakeSymbol("*");
- sym_div = MakeSymbol("/");
- sym_pow = MakeSymbol("**");
-
-
- // setup methods and attributes at class scope
-
- // register method (for floats) "m_trigger" for inlet 0
- FLEXT_CADDMETHOD(c,0,m_trigger);
-
- // register attribute "arg" with the variable "arg"
- FLEXT_CADDATTR_VAR1(c,"arg",arg);
-
- // register attribute "result" with variable "res"
- FLEXT_CADDATTR_GET(c,"result",res);
-
- // register attribute "op" with methods "opget" and "opset"
- FLEXT_CADDATTR_VAR(c,"op",opget,opset);
-}
-
-
-attr2::attr2():
- arg(0),res(0), // initialize argument and result
- op(op_set) // initialize operation
-{
- // define inlets
- AddInAnything(); // first inlet of type anything (index 0)
-
- // define outlets
- AddOutFloat(); // one float outlet (has index 0)
-}
-
-// receive an operand, do the math operation and trigger the output
-void attr2::m_trigger(float f)
-{
- switch(op) {
- case op_set: res = f; break;
- case op_add: res = f+arg; break;
- case op_sub: res = f-arg; break;
- case op_mul: res = f*arg; break;
- case op_div:
- if(arg) res = f/arg;
- else {
- post("%s - argument to division is 0: result set to 0",thisName());
- res = 0;
- }
- break;
- case op_pow: res = (float)pow(f,arg); break;
-#ifdef FLEXT_DEBUG
- default: ERRINTERNAL(); // operation not defined
-#endif
- }
-
- // output value to outlet
- ToOutFloat(0,res); // (0 stands for the outlet index 0)
-}
-
-
-// report the operation mode
-void attr2::opget(const t_symbol *&s) const
-{
-
- switch(op) {
- case op_set: s = sym_set; break;
- case op_add: s = sym_add; break;
- case op_sub: s = sym_sub; break;
- case op_mul: s = sym_mul; break;
- case op_div: s = sym_div; break;
- case op_pow: s = sym_pow; break;
-#ifdef FLEXT_DEBUG
- default: ERRINTERNAL(); // operation not defined
-#endif
- }
-}
-
-// set the operation mode
-void attr2::opset(const t_symbol *&s)
-{
- if(s == sym_set)
- op = op_set;
- else if(s == sym_add)
- op = op_add;
- else if(s == sym_sub)
- op = op_sub;
- else if(s == sym_mul)
- op = op_mul;
- else if(s == sym_div)
- op = op_div;
- else if(s == sym_pow)
- op = op_pow;
- else {
- post("%s - operation is not defined, set to =",thisName());
- op = op_set;
- }
-}
-
diff --git a/externals/grill/flext/tutorial/attr2/package.txt b/externals/grill/flext/tutorial/attr2/package.txt
deleted file mode 100644
index d028f1b4..00000000
--- a/externals/grill/flext/tutorial/attr2/package.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-NAME=attr2
-SRCS=main.cpp
diff --git a/externals/grill/flext/tutorial/attr3/Makefile.am b/externals/grill/flext/tutorial/attr3/Makefile.am
deleted file mode 100644
index eb4befbb..00000000
--- a/externals/grill/flext/tutorial/attr3/Makefile.am
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# automake template
-# added by tim blechmann
-#
-
-NAME = attr3
-
-BUILT_SOURCES = main.cpp
-
-EXTRA_DIST = main.cpp \
- $(NAME).mcp \
- $(NAME).vcproj
-
-CXXFLAGS = @CXXFLAGS@ \
- @OPT_FLAGS@ \
- @INCLUDEDIR@ \
- -I../../source \
- $(DEFS) \
- -DFLEXT_SHARED
-
-LDFLAGS = @DYNAMIC_LDFLAGS@ @LDFLAGS@ \
- $(patsubst %,-framework %,$(FRAMEWORKS))
-
-LIBS = @LIBS@ -lflext-pd
-
-FRAMEWORKS = @FRAMEWORKS@
-
-TARGETDIR = @TARGETDIR@
-
-TARGET =$(NAME).@EXTENSION@
-
-OBJECTS = $(patsubst %.cpp,./%.@OBJEXT@,$(BUILT_SOURCES))
-
-SYSDIR = @SYSDIR@
-
-
-# ----------------------------- targets --------------------------------
-
-all-local: $(OBJECTS)
- $(CXX) $(LDFLAGS) ./*.@OBJEXT@ $(LIBS) -o ../$(TARGETDIR)/$(TARGET)
- strip --strip-unneeded ../$(TARGETDIR)/$(TARGET)
-
-./%.@OBJEXT@ : %.cpp
- $(CXX) -c $(CXXFLAGS) $< -o $@
-
-clean-local:
- rm -f ../$(TARGETDIR)/$(TARGET)
- rm -f ./$(OBJECTS)
-
-install-exec-local:
- install ../$(TARGET) $(SYSDIR)extra
diff --git a/externals/grill/flext/tutorial/attr3/attr3.mcp b/externals/grill/flext/tutorial/attr3/attr3.mcp
deleted file mode 100755
index 644c96a6..00000000
--- a/externals/grill/flext/tutorial/attr3/attr3.mcp
+++ /dev/null
Binary files differ
diff --git a/externals/grill/flext/tutorial/attr3/attr3.vcproj b/externals/grill/flext/tutorial/attr3/attr3.vcproj
deleted file mode 100644
index 0e2a0680..00000000
--- a/externals/grill/flext/tutorial/attr3/attr3.vcproj
+++ /dev/null
@@ -1,176 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="attr3"
- SccProjectName="attr3"
- SccAuxPath=""
- SccLocalPath="."
- SccProvider="MSSCCI:Jalindi Igloo">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Release|Win32"
- OutputDirectory=".\msvc"
- IntermediateDirectory=".\msvc"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src,..\..\source"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;PD"
- StringPooling="TRUE"
- RuntimeLibrary="4"
- EnableFunctionLevelLinking="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile=".\msvc/attr3.pch"
- AssemblerListingLocation=".\msvc/"
- ObjectFile=".\msvc/"
- ProgramDataBaseFileName=".\msvc/"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib flext-pdwin.lib"
- OutputFile="../pd-msvc/attr3.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\pd-msvc"
- ProgramDatabaseFile=".\msvc/attr3.pdb"
- ImportLibrary=".\msvc/attr3.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\msvc/attr3.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory=".\msvc-debug"
- IntermediateDirectory=".\msvc-debug"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src,..\..\source"
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;PD"
- BasicRuntimeChecks="3"
- RuntimeLibrary="5"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile=".\msvc-debug/attr3.pch"
- AssemblerListingLocation=".\msvc-debug/"
- ObjectFile=".\msvc-debug/"
- ProgramDataBaseFileName=".\msvc-debug/"
- BrowseInformation="1"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="4"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib flext_d-pdwin.lib"
- OutputFile=".\msvc-debug/attr3.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\pd-msvc"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile=".\msvc-debug/attr3.pdb"
- ImportLibrary=".\msvc-debug/attr3.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="_DEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\msvc-debug/attr3.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath="main.cpp">
- <FileConfiguration
- Name="Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;PD;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;PD;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/externals/grill/flext/tutorial/attr3/main.cpp b/externals/grill/flext/tutorial/attr3/main.cpp
deleted file mode 100644
index 8d37f467..00000000
--- a/externals/grill/flext/tutorial/attr3/main.cpp
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
-flext tutorial - attributes 3
-
-Copyright (c) 2002,2003 Thomas Grill (xovo@gmx.net)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
--------------------------------------------------------------------------
-
-This is tutorial example "advanced 3" with the usage of attributes.
-
-*/
-
-
-// IMPORTANT: enable attribute processing (specify before inclusion of flext headers!)
-// For clarity, this is done here, but you'd better specify it as a compiler definition
-// FLEXT_ATTRIBUTES must be 0 or 1,
-#define FLEXT_ATTRIBUTES 1
-
-
-// include flext header
-#include <flext.h>
-
-
-// check for appropriate flext version
-#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 401)
-#error You need at least flext version 0.4.1
-#endif
-
-
-class attr3:
- public flext_base
-{
- FLEXT_HEADER_S(attr3,flext_base,setup)
-
-public:
- // constructor with no arguments
- // initial values are set by attributes at creation time (see help file)
- attr3():
- // initialize data members
- i_down(0),i_up(0),i_count(0),i_step(1)
- {
- // --- define inlets and outlets ---
- AddInAnything(); // default inlet
- AddInList(); // inlet for bounds
- AddInInt(); // inlet for step size
-
- AddOutInt(); // outlet for integer count
- AddOutBang(); // outlet for bang
- }
-
-protected:
-
- void m_reset() { i_count = i_down; }
-
- void m_set(int argc,t_atom *argv)
- {
- i_count = argc?GetAInt(argv[0]):0;
- }
-
- void m_bang()
- {
- int f = i_count;
- i_count += i_step;
- if(i_down != i_up) {
- if((i_step > 0) && (i_count > i_up)) {
- i_count = i_down;
- ToOutBang(1);
- }
- else if(i_count < i_down) {
- i_count = i_up;
- ToOutBang(1);
- }
- }
- ToOutInt(0,f);
- }
-
- void m_bounds(int f1,int f2)
- {
- i_down = f1 < f2?f1:f2;
- i_up = f1 > f2?f1:f2;
- }
-
- void m_step(int s) { i_step = s; }
-
-
- // setter method of bounds variables
- void ms_bounds(const AtomList &l)
- {
- if(l.Count() == 2 && CanbeInt(l[0]) && CanbeInt(l[1]))
- // if it is a two element integer list use m_bounds method
- m_bounds(GetAInt(l[0]),GetAInt(l[1]));
- else
- // else post a warning
- post("%s - 'bounds' needs two integer parameters",thisName());
- }
-
- // getter method of bounds variables
- void mg_bounds(AtomList &l) const
- {
- l(2); // initialize two element list
- SetInt(l[0],i_down); // set first element
- SetInt(l[1],i_up); // set second element
- }
-
-
- int i_count,i_down,i_up,i_step;
-
-private:
-
- static void setup(t_classid c)
- {
- // --- set up methods (class scope) ---
-
- // register a bang method to the default inlet (0)
- FLEXT_CADDBANG(c,0,m_bang);
-
- // set up tagged methods for the default inlet (0)
- FLEXT_CADDMETHOD_(c,0,"reset",m_reset);
- FLEXT_CADDMETHOD_(c,0,"set",m_set);
-
- // set up methods for inlets 1 and 2
- // no message tag used
- FLEXT_CADDMETHOD(c,1,m_bounds); // variable arg type recognized automatically
- FLEXT_CADDMETHOD(c,2,m_step); // single int arg also recognized automatically
-
- // --- set up attributes (class scope) ---
-
- // these have equally named getters and setters
- // see the wrappers below
- FLEXT_CADDATTR_VAR1(c,"count",i_count);
- FLEXT_CADDATTR_VAR1(c,"step",i_step);
-
- // bounds has differently named getter and setter functions
- // see the wrappers below
- FLEXT_CADDATTR_VAR(c,"bounds",mg_bounds,ms_bounds);
- }
-
- // normal method callbacks for bang and reset
- FLEXT_CALLBACK(m_bang)
- FLEXT_CALLBACK(m_reset)
-
- FLEXT_CALLBACK_V(m_set) // normal method wrapper for m_set
- FLEXT_ATTRVAR_I(i_count) // wrapper functions (get and set) for integer variable i_count
-
- FLEXT_CALLBACK_II(m_bounds) // normal method wrapper for m_bounds
- FLEXT_CALLVAR_V(mg_bounds,ms_bounds) // getter and setter method of bounds
-
- FLEXT_CALLBACK_I(m_step) // normal method wrapper for m_step
- FLEXT_ATTRVAR_I(i_step) // wrapper functions (get and set) for integer variable i_step
-};
-
-
-// instantiate the class (constructor takes no arguments)
-FLEXT_NEW("attr3",attr3)
-
-
diff --git a/externals/grill/flext/tutorial/attr3/package.txt b/externals/grill/flext/tutorial/attr3/package.txt
deleted file mode 100644
index a87c4e1e..00000000
--- a/externals/grill/flext/tutorial/attr3/package.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-NAME=attr3
-SRCS=main.cpp
diff --git a/externals/grill/flext/tutorial/bind1/Makefile.am b/externals/grill/flext/tutorial/bind1/Makefile.am
deleted file mode 100644
index 085de2d2..00000000
--- a/externals/grill/flext/tutorial/bind1/Makefile.am
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# automake template
-# added by tim blechmann
-#
-
-NAME = bind1
-
-BUILT_SOURCES = main.cpp
-
-EXTRA_DIST = main.cpp \
- $(NAME).mcp \
- $(NAME).vcproj
-
-CXXFLAGS = @CXXFLAGS@ \
- @OPT_FLAGS@ \
- @INCLUDEDIR@ \
- -I../../source \
- $(DEFS) \
- -DFLEXT_SHARED
-
-LDFLAGS = @DYNAMIC_LDFLAGS@ @LDFLAGS@ \
- $(patsubst %,-framework %,$(FRAMEWORKS))
-
-LIBS = @LIBS@ -lflext-pd
-
-FRAMEWORKS = @FRAMEWORKS@
-
-TARGETDIR = @TARGETDIR@
-
-TARGET =$(NAME).@EXTENSION@
-
-OBJECTS = $(patsubst %.cpp,./%.@OBJEXT@,$(BUILT_SOURCES))
-
-SYSDIR = @SYSDIR@
-
-
-# ----------------------------- targets --------------------------------
-
-all-local: $(OBJECTS)
- $(CXX) $(LDFLAGS) ./*.@OBJEXT@ $(LIBS) -o ../$(TARGETDIR)/$(TARGET)
- strip --strip-unneeded ../$(TARGETDIR)/$(TARGET)
-
-./%.@OBJEXT@ : %.cpp
- $(CXX) -c $(CXXFLAGS) $< -o $@
-
-clean-local:
- rm -f ../$(TARGETDIR)/$(TARGET)
- rm -f ./$(OBJECTS)
-
-install-exec-local:
- install ../$(TARGET) $(SYSDIR)extra
diff --git a/externals/grill/flext/tutorial/bind1/bind1.mcp b/externals/grill/flext/tutorial/bind1/bind1.mcp
deleted file mode 100755
index 750d275b..00000000
--- a/externals/grill/flext/tutorial/bind1/bind1.mcp
+++ /dev/null
Binary files differ
diff --git a/externals/grill/flext/tutorial/bind1/bind1.vcproj b/externals/grill/flext/tutorial/bind1/bind1.vcproj
deleted file mode 100644
index b0a3a2da..00000000
--- a/externals/grill/flext/tutorial/bind1/bind1.vcproj
+++ /dev/null
@@ -1,177 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="bind1"
- SccProjectName="max/flext/tutorial/bind1"
- SccAuxPath=""
- SccLocalPath="."
- SccProvider="MSSCCI:Jalindi Igloo">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory=".\msvc-debug"
- IntermediateDirectory=".\msvc-debug"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src,..\..\source"
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;PD"
- BasicRuntimeChecks="3"
- RuntimeLibrary="5"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile=".\msvc-debug/bind1.pch"
- AssemblerListingLocation=".\msvc-debug/"
- ObjectFile=".\msvc-debug/"
- ProgramDataBaseFileName=".\msvc-debug/"
- BrowseInformation="1"
- BrowseInformationFile=".\msvc-debug/"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="4"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib flext_d-pdwin.lib"
- OutputFile="msvc-debug/bind1.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\pd-msvc"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile=".\msvc-debug/bind1.pdb"
- ImportLibrary=".\msvc-debug/bind1.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="_DEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\msvc-debug/bind1.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory=".\msvc"
- IntermediateDirectory=".\msvc"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src,..\..\source"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;PD"
- StringPooling="TRUE"
- RuntimeLibrary="4"
- EnableFunctionLevelLinking="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile=".\msvc/bind1.pch"
- AssemblerListingLocation=".\msvc/"
- ObjectFile=".\msvc/"
- ProgramDataBaseFileName=".\msvc/"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib flext-pdwin.lib"
- OutputFile="../pd-msvc/bind1.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\pd-msvc"
- ProgramDatabaseFile=".\msvc/bind1.pdb"
- ImportLibrary=".\msvc/bind1.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\msvc/bind1.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath="main.cpp">
- <FileConfiguration
- Name="Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;PD;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;PD;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/externals/grill/flext/tutorial/bind1/main.cpp b/externals/grill/flext/tutorial/bind1/main.cpp
deleted file mode 100644
index debfa68a..00000000
--- a/externals/grill/flext/tutorial/bind1/main.cpp
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
-flext tutorial - bind 1
-
-Copyright (c) 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 an example of a simple object demonstrating method to symbol binding and message forwarding
-*/
-
-
-// include flext header
-#include <flext.h>
-
-// check for appropriate flext version
-#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 400)
-#error You need at least flext version 0.4.0
-#endif
-
-
-// define the class that stands for a pd/Max object
-
-class bind1:
- // inherit from basic flext class
- public flext_base
-{
- // obligatory flext header (class name,base class name) featuring a setup function
- FLEXT_HEADER_S(bind1,flext_base,setup)
-
-public:
- // constructor with no arguments
- bind1()
- {
- // define inlets:
- // first inlet must always be of type anything (or signal for dsp objects)
- AddInAnything("message inlet"); // add one inlet for any message
- AddInAnything("forwarding inlet"); // add one inlet for any message
-
- AddOutAnything("bound message"); // output received bound message
- }
-
- /*
- no destructor necessary here:
- flext frees all eventually remaining bound symbols when the object is destroyed
- (but NOT the data that can be passed via the FLEXT_BINDMETHOD call!)
- */
-
-protected:
- const t_symbol *bufname;
- buffer *buf;
-
- // bind object
- void m_bind(const t_symbol *s)
- {
- if(!Bind(s)) {
- post("%s (%s) - Binding failed",thisName(),GetString(thisTag()));
- }
- }
-
- // unbind object
- void m_unbind(const t_symbol *s)
- {
- if(!Unbind(s)) {
- post("%s (%s) - Binding failed",thisName(),GetString(thisTag()));
- }
- }
-
- // bind method
- void m_bindmethod(const t_symbol *s)
- {
- if(!FLEXT_BINDMETHOD(s,m_bound,NULL)) {
- post("%s (%s) - Binding failed",thisName(),GetString(thisTag()));
- }
- }
-
- // unbind method
- void m_unbindmethod(const t_symbol *s)
- {
- if(!FLEXT_UNBINDMETHOD(s)) {
- post("%s (%s) - Binding failed",thisName(),GetString(thisTag()));
- }
- }
-
- // forward message
- void m_forward(const t_symbol *s,int argc,const t_atom *argv)
- {
- Forward(s,argc,argv);
- }
-
- // method for symbol-bound messages
- void m_bound(const t_symbol *sym,int argc,const t_atom *argv,void *data)
- {
- ToOutAnything(0,sym,argc,argv);
- }
-
- // method for binding test
- void m_test(float value)
- {
- post("%s - TEST METHOD: value %f",thisName(),value);
- }
-
-private:
- static void setup(t_classid c)
- {
- // register methods
-
- FLEXT_CADDMETHOD_(c,0,"bind",m_bind); // register method "bind" for inlet 0
- FLEXT_CADDMETHOD_(c,0,"unbind",m_unbind); // register method "unbind" for inlet 0
- FLEXT_CADDMETHOD_(c,0,"bindmethod",m_bindmethod); // register method "bindmethod" for inlet 0
- FLEXT_CADDMETHOD_(c,0,"unbindmethod",m_unbindmethod); // register method "unbindmethod" for inlet 0
-
- FLEXT_CADDMETHOD_(c,0,"test",m_test); // register method m_test for inlet 0
-
- FLEXT_CADDMETHOD(c,1,m_forward); // register method m_forward for inlet 1
- }
-
- FLEXT_CALLBACK_S(m_bind) // wrapper for method m_bind (with symbol argument)
- FLEXT_CALLBACK_S(m_unbind) // wrapper for method m_unbind (with symbol argument)
- FLEXT_CALLBACK_S(m_bindmethod) // wrapper for method m_bindmethod (with symbol argument)
- FLEXT_CALLBACK_S(m_unbindmethod) // wrapper for method m_unbindmethod (with symbol argument)
-
- FLEXT_CALLBACK_A(m_forward) // wrapper for method m_forward (with anything argument)
-
- FLEXT_CALLBACK_AX(m_bound) // wrapper for method m_bound (anything+data arguments)
- FLEXT_CALLBACK_F(m_test) // wrapper for method m_test (one float argument)
-};
-
-// instantiate the class
-FLEXT_NEW("bind1",bind1)
-
-
-
diff --git a/externals/grill/flext/tutorial/bind1/package.txt b/externals/grill/flext/tutorial/bind1/package.txt
deleted file mode 100644
index c7e82359..00000000
--- a/externals/grill/flext/tutorial/bind1/package.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-NAME=bind1
-SRCS=main.cpp
diff --git a/externals/grill/flext/tutorial/buffer1/Makefile.am b/externals/grill/flext/tutorial/buffer1/Makefile.am
deleted file mode 100644
index 05a9b98a..00000000
--- a/externals/grill/flext/tutorial/buffer1/Makefile.am
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# automake template
-# added by tim blechmann
-#
-
-NAME = buffer1
-
-BUILT_SOURCES = main.cpp
-
-EXTRA_DIST = main.cpp \
- $(NAME).mcp \
- $(NAME).vcproj
-
-CXXFLAGS = @CXXFLAGS@ \
- @OPT_FLAGS@ \
- @INCLUDEDIR@ \
- -I../../source \
- $(DEFS) \
- -DFLEXT_SHARED
-
-LDFLAGS = @DYNAMIC_LDFLAGS@ @LDFLAGS@ \
- $(patsubst %,-framework %,$(FRAMEWORKS))
-
-LIBS = @LIBS@ -lflext-pd
-
-FRAMEWORKS = @FRAMEWORKS@
-
-TARGETDIR = @TARGETDIR@
-
-TARGET =$(NAME).@EXTENSION@
-
-OBJECTS = $(patsubst %.cpp,./%.@OBJEXT@,$(BUILT_SOURCES))
-
-SYSDIR = @SYSDIR@
-
-
-# ----------------------------- targets --------------------------------
-
-all-local: $(OBJECTS)
- $(CXX) $(LDFLAGS) ./*.@OBJEXT@ $(LIBS) -o ../$(TARGETDIR)/$(TARGET)
- strip --strip-unneeded ../$(TARGETDIR)/$(TARGET)
-
-./%.@OBJEXT@ : %.cpp
- $(CXX) -c $(CXXFLAGS) $< -o $@
-
-clean-local:
- rm -f ../$(TARGETDIR)/$(TARGET)
- rm -f ./$(OBJECTS)
-
-install-exec-local:
- install ../$(TARGET) $(SYSDIR)extra
diff --git a/externals/grill/flext/tutorial/buffer1/buffer1.mcp b/externals/grill/flext/tutorial/buffer1/buffer1.mcp
deleted file mode 100755
index 31671b11..00000000
--- a/externals/grill/flext/tutorial/buffer1/buffer1.mcp
+++ /dev/null
Binary files differ
diff --git a/externals/grill/flext/tutorial/buffer1/buffer1.vcproj b/externals/grill/flext/tutorial/buffer1/buffer1.vcproj
deleted file mode 100644
index c583befb..00000000
--- a/externals/grill/flext/tutorial/buffer1/buffer1.vcproj
+++ /dev/null
@@ -1,177 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="buffer1"
- SccProjectName="max/flext/tutorial/buffer1"
- SccAuxPath=""
- SccLocalPath="."
- SccProvider="MSSCCI:Jalindi Igloo">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory=".\msvc-debug"
- IntermediateDirectory=".\msvc-debug"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src,..\..\source"
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;PD"
- BasicRuntimeChecks="3"
- RuntimeLibrary="5"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile=".\msvc-debug/buffer1.pch"
- AssemblerListingLocation=".\msvc-debug/"
- ObjectFile=".\msvc-debug/"
- ProgramDataBaseFileName=".\msvc-debug/"
- BrowseInformation="1"
- BrowseInformationFile=".\msvc-debug/"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="4"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib flext_d-pdwin.lib"
- OutputFile="msvc-debug/buffer1.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\pd-msvc"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile=".\msvc-debug/buffer1.pdb"
- ImportLibrary=".\msvc-debug/buffer1.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="_DEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\msvc-debug/buffer1.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory=".\msvc"
- IntermediateDirectory=".\msvc"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src,..\..\source"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;PD"
- StringPooling="TRUE"
- RuntimeLibrary="4"
- EnableFunctionLevelLinking="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile=".\msvc/buffer1.pch"
- AssemblerListingLocation=".\msvc/"
- ObjectFile=".\msvc/"
- ProgramDataBaseFileName=".\msvc/"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib flext-pdwin.lib"
- OutputFile="../pd-msvc/buffer1.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\pd-msvc"
- ProgramDatabaseFile=".\msvc/buffer1.pdb"
- ImportLibrary=".\msvc/buffer1.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\msvc/buffer1.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath="main.cpp">
- <FileConfiguration
- Name="Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;PD;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;PD;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/externals/grill/flext/tutorial/buffer1/main.cpp b/externals/grill/flext/tutorial/buffer1/main.cpp
deleted file mode 100644
index 7f604c87..00000000
--- a/externals/grill/flext/tutorial/buffer1/main.cpp
+++ /dev/null
@@ -1,257 +0,0 @@
-/*
-flext tutorial - buffer 1
-
-Copyright (c) 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 an example of a simple object doing some basic buffer operation
-*/
-
-
-// IMPORTANT: enable attribute processing (specify before inclusion of flext headers!)
-// For clarity, this is done here, but you'd better specify it as a compiler definition
-// FLEXT_ATTRIBUTES must be 0 or 1,
-#define FLEXT_ATTRIBUTES 1
-
-
-// include flext header
-#include <flext.h>
-
-// check for appropriate flext version
-#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 400)
-#error You need at least flext version 0.4.0
-#endif
-
-
-// define the class that stands for a pd/Max object
-
-class buffer1:
- // inherit from basic flext class
- public flext_base
-{
- // obligatory flext header (class name,base class name) featuring a setup function
- FLEXT_HEADER_S(buffer1,flext_base,setup)
-
-public:
- // constructor with a variable argument list
- buffer1(int argc,const t_atom *argv);
-
-protected:
- const t_symbol *bufname;
- buffer *buf;
-
- // set new buffer (or none if name omitted)
- void m_set(int argc,const t_atom *argv);
-
- // get buffer name
- void mg_buf(AtomList &lst) const;
- // set buffer name (simply reuse m_set method)
- inline void ms_buf(const AtomList &lst) { m_set(lst.Count(),lst.Atoms()); }
-
- // get buffer channels
- inline void mg_chns(int &chns) { chns = Check()?buf->Channels():0; }
-
- // get buffer length in frames
- inline void mg_frames(int &frames) { frames = Check()?buf->Frames():0; }
- // set buffer length in frames
- inline void ms_frames(int frames) { if(Check()) buf->Frames(frames); }
-
- // get sample (index channel)
- void m_peek(int argc,const t_atom *argv);
- // set sample (index value channel)
- void m_poke(int argc,const t_atom *argv);
-
- // delete eventual existing buffer
- void Clear();
-
- // check and eventually update buffer reference (return true if valid)
- bool Check();
-
-private:
- static void setup(t_classid c);
-
- FLEXT_CALLBACK_V(m_set) // wrapper for method m_set (with variable argument list)
- FLEXT_CALLBACK_V(m_peek) // wrapper for method m_peek (with variable argument list)
- FLEXT_CALLBACK_V(m_poke) // wrapper for method m_poke (with variable argument list)
-
- FLEXT_CALLVAR_V(mg_buf,ms_buf) // wrappers for attribute getter/setter mg_buffer/ms_buffer (with variable argument list)
- FLEXT_CALLGET_I(mg_chns) // wrappers for attribute getter mg_chns (with integer arguments)
- FLEXT_CALLVAR_I(mg_frames,ms_frames) // wrappers for attribute getter/setter mg_frames/ms_frames (with integer arguments)
-};
-
-// instantiate the class
-FLEXT_NEW_V("buffer1",buffer1)
-
-
-void buffer1::setup(t_classid c)
-{
- // register methods and attributes
-
- FLEXT_CADDMETHOD_(c,0,"set",m_set); // register method "set" for inlet 0
- FLEXT_CADDMETHOD_(c,0,"peek",m_peek); // register method "peek" for inlet 0
- FLEXT_CADDMETHOD_(c,0,"poke",m_poke); // register method "poke" for inlet 0
-
- FLEXT_CADDATTR_VAR(c,"buffer",mg_buf,ms_buf); // register attribute "buffer"
- FLEXT_CADDATTR_GET(c,"channels",mg_chns); // register attribute "channels"
- FLEXT_CADDATTR_VAR(c,"frames",mg_frames,ms_frames); // register attribute "frames"
-}
-
-
-buffer1::buffer1(int argc,const t_atom *argv):
- // clear buffer
- buf(NULL),bufname(NULL)
-{
- // define inlets:
- // first inlet must always be of type anything (or signal for dsp objects)
- AddInAnything("message inlet"); // add one inlet for any message
-
- // peek outlet
- AddOutFloat("peek value outlet");
-
- // set buffer according to creation arguments
- m_set(argc,argv);
-}
-
-
-void buffer1::Clear()
-{
- if(buf) {
- delete buf;
- buf = NULL; bufname = NULL;
- }
-}
-
-bool buffer1::Check()
-{
- if(!buf || !buf->Valid()) {
- post("%s (%s) - no valid buffer defined",thisName(),GetString(thisTag()));
- // return zero length
- return false;
- }
- else {
- if(buf->Update()) {
- // buffer parameters have been updated
- if(buf->Valid()) {
- post("%s (%s) - updated buffer reference",thisName(),GetString(thisTag()));
- return true;
- }
- else {
- post("%s (%s) - buffer has become invalid",thisName(),GetString(thisTag()));
- return false;
- }
- }
- else
- return true;
- }
-}
-
-void buffer1::m_set(int argc,const t_atom *argv)
-{
- if(argc == 0) {
- // argument list is empty
-
- // clear existing buffer
- Clear();
- }
- else if(argc == 1 && IsSymbol(argv[0])) {
- // one symbol given as argument
-
- // clear existing buffer
- Clear();
- // save buffer name
- bufname = GetSymbol(argv[0]);
- // make new reference to system buffer object
- buf = new buffer(bufname);
-
- if(!buf->Ok()) {
- post("%s (%s) - warning: buffer is currently not valid!",thisName(),GetString(thisTag()));
- }
- }
- else {
- // invalid argument list, leave buffer as is but issue error message to console
- post("%s (%s) - message argument must be a symbol (or left blank)",thisName(),GetString(thisTag()));
- }
-}
-
-void buffer1::mg_buf(AtomList &lst) const
-{
- if(buf) {
- // buffer exists: return buffer name
- lst(1); SetSymbol(lst[0],bufname);
- }
- else
- // no buffer: set empty list
- lst(0);
-}
-
-
-void buffer1::m_poke(int argc,const t_atom *argv)
-{
- // if buffer is invalid bail out
- if(!Check()) return;
-
- bool ok = true;
- int ix,chn = 0;
- float val;
-
- if(argc == 3) {
- if(CanbeInt(argv[2]))
- // get channel index
- chn = GetAInt(argv[2]);
- else
- ok = false;
- }
-
- if(ok && (argc == 2 || argc == 3) && CanbeInt(argv[0]) && CanbeFloat(argv[1])) {
- // get frame index
- ix = GetAInt(argv[0]);
- // get value
- val = GetAFloat(argv[1]);
- }
- else
- ok = false;
-
- if(ok) {
- // correct syntax, set sample
- buf->Data()[ix] = val;
- }
- else
- post("%s (%s) - syntax error - use \"poke index value [channel]\"",thisName(),GetString(thisTag()));
-}
-
-void buffer1::m_peek(int argc,const t_atom *argv)
-{
- // if buffer is invalid bail out
- if(!Check()) return;
-
- bool ok = true;
- int ix,chn = 0;
-
- if(argc == 2) {
- if(CanbeInt(argv[1]))
- // get channel index
- chn = GetAInt(argv[1]);
- else
- ok = false;
- }
-
- if(ok && (argc == 1 || argc == 2) && CanbeInt(argv[0])) {
- // get frame index
- ix = GetAInt(argv[0]);
- }
- else
- ok = false;
-
- if(ok)
- // correct syntax, output value
- ToOutFloat(0,buf->Data()[ix]);
- else
- post("%s (%s) - syntax error - use \"peek index [channel]\"",thisName(),GetString(thisTag()));
-}
-
-
-
-
diff --git a/externals/grill/flext/tutorial/buffer1/package.txt b/externals/grill/flext/tutorial/buffer1/package.txt
deleted file mode 100644
index 2e8fceec..00000000
--- a/externals/grill/flext/tutorial/buffer1/package.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-NAME=buffer1
-SRCS=main.cpp
diff --git a/externals/grill/flext/tutorial/build.bat b/externals/grill/flext/tutorial/build.bat
deleted file mode 100644
index 431454d4..00000000
--- a/externals/grill/flext/tutorial/build.bat
+++ /dev/null
@@ -1,32 +0,0 @@
-@echo off
-
-if "%1"=="" goto syntax
-if "%2"=="" goto syntax
-
-rem first check configuration
-call ..\build.bat %1 %2 config "PKGINFO=" "NAME=tutorial" "SRCS=."
-if errorlevel 1 goto end
-
-for /D %%i in (*) do (
- pushd %%i
- if exist package.txt (
- call ..\..\build.bat %1 %2
- )
- popd
-)
-
-goto end
-
-rem -----------------------------------------
-:syntax
-
-echo .
-echo SYNTAX: build [system] [compiler]
-echo system ... pd / max
-echo compiler ... msvc / gcc / mingw / cygwin / bcc / icc
-echo .
-echo Please make sure that your make program and compiler can be accessed with the
-echo system path and that all relevant environment variables are properly set.
-echo .
-
-:end
diff --git a/externals/grill/flext/tutorial/build.sh b/externals/grill/flext/tutorial/build.sh
deleted file mode 100644
index 6ea19cb1..00000000
--- a/externals/grill/flext/tutorial/build.sh
+++ /dev/null
@@ -1,27 +0,0 @@
-#! /bin/bash
-
-if
- [ -n "$1" -a -n "$2" ]
-then
- # make config first
- if
- bash ../build.sh $1 $2 config "PKGINFO=" "NAME=tutorial" "SRCS=\"\""
- then
- for i in * ; do
- if [ -e $i/package.txt ] ; then
- pushd $i
- bash ../../build.sh $1 $2
- popd
- fi
- done
- fi
-else
- echo
- echo SYNTAX: build.sh [platform] [system] [compiler]
- echo system ..... pd / max
- echo compiler ... msvc / gcc / mingw / cygwin / bcc / icc
- echo
- echo Please make sure that your make program and compiler can be accessed with the
- echo system path and that all relevant environment variables are properly set.
- echo
-fi
diff --git a/externals/grill/flext/tutorial/gpl.txt b/externals/grill/flext/tutorial/gpl.txt
deleted file mode 100644
index 5ea29a7d..00000000
--- a/externals/grill/flext/tutorial/gpl.txt
+++ /dev/null
@@ -1,346 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) 19yy <name of author>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) 19yy name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Library General
-Public License instead of this License.
-
diff --git a/externals/grill/flext/tutorial/lib1/Makefile.am b/externals/grill/flext/tutorial/lib1/Makefile.am
deleted file mode 100644
index 6083365d..00000000
--- a/externals/grill/flext/tutorial/lib1/Makefile.am
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# automake template
-# added by tim blechmann
-#
-
-NAME = lib1
-
-BUILT_SOURCES = main.cpp
-
-EXTRA_DIST = main.cpp \
- $(NAME).mcp \
- $(NAME).vcproj
-
-CXXFLAGS = @CXXFLAGS@ \
- @OPT_FLAGS@ \
- @INCLUDEDIR@ \
- -I../../source \
- $(DEFS) \
- -DFLEXT_SHARED
-
-LDFLAGS = @DYNAMIC_LDFLAGS@ @LDFLAGS@ \
- $(patsubst %,-framework %,$(FRAMEWORKS))
-
-LIBS = @LIBS@ -lflext-pd
-
-FRAMEWORKS = @FRAMEWORKS@
-
-TARGETDIR = @TARGETDIR@
-
-TARGET =$(NAME).@EXTENSION@
-
-OBJECTS = $(patsubst %.cpp,./%.@OBJEXT@,$(BUILT_SOURCES))
-
-SYSDIR = @SYSDIR@
-
-
-# ----------------------------- targets --------------------------------
-
-all-local: $(OBJECTS)
- $(CXX) $(LDFLAGS) ./*.@OBJEXT@ $(LIBS) -o ../$(TARGETDIR)/$(TARGET)
- strip --strip-unneeded ../$(TARGETDIR)/$(TARGET)
-
-./%.@OBJEXT@ : %.cpp
- $(CXX) -c $(CXXFLAGS) $< -o $@
-
-clean-local:
- rm -f ../$(TARGETDIR)/$(TARGET)
- rm -f ./$(OBJECTS)
-
-install-exec-local:
- install ../$(TARGET) $(SYSDIR)extra
diff --git a/externals/grill/flext/tutorial/lib1/lib1.mcp b/externals/grill/flext/tutorial/lib1/lib1.mcp
deleted file mode 100755
index afa029c5..00000000
--- a/externals/grill/flext/tutorial/lib1/lib1.mcp
+++ /dev/null
Binary files differ
diff --git a/externals/grill/flext/tutorial/lib1/lib1.vcproj b/externals/grill/flext/tutorial/lib1/lib1.vcproj
deleted file mode 100644
index 3c713151..00000000
--- a/externals/grill/flext/tutorial/lib1/lib1.vcproj
+++ /dev/null
@@ -1,177 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="lib1"
- SccProjectName="lib1"
- SccAuxPath=""
- SccLocalPath="."
- SccProvider="MSSCCI:Jalindi Igloo">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory=".\msvc-debug"
- IntermediateDirectory=".\msvc-debug"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src,..\..\source"
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;PD"
- BasicRuntimeChecks="3"
- RuntimeLibrary="5"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile=".\msvc-debug/lib1.pch"
- AssemblerListingLocation=".\msvc-debug/"
- ObjectFile=".\msvc-debug/"
- ProgramDataBaseFileName=".\msvc-debug/"
- BrowseInformation="1"
- BrowseInformationFile=".\msvc-debug/"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="4"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib flext_d-pdwin.lib"
- OutputFile=".\msvc-debug/lib1.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\pd-msvc"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile=".\msvc-debug/lib1.pdb"
- ImportLibrary=".\msvc-debug/lib1.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="_DEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\msvc-debug/lib1.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory=".\msvc"
- IntermediateDirectory=".\msvc"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src,..\..\source"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;PD"
- StringPooling="TRUE"
- RuntimeLibrary="4"
- EnableFunctionLevelLinking="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile=".\msvc/lib1.pch"
- AssemblerListingLocation=".\msvc/"
- ObjectFile=".\msvc/"
- ProgramDataBaseFileName=".\msvc/"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib flext-pdwin.lib"
- OutputFile="../pd-msvc/lib1.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\pd-msvc"
- ProgramDatabaseFile=".\msvc/lib1.pdb"
- ImportLibrary=".\msvc/lib1.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\msvc/lib1.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath="main.cpp">
- <FileConfiguration
- Name="Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;PD;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;PD;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/externals/grill/flext/tutorial/lib1/main.cpp b/externals/grill/flext/tutorial/lib1/main.cpp
deleted file mode 100644
index e90c154d..00000000
--- a/externals/grill/flext/tutorial/lib1/main.cpp
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
-flext tutorial - library 1
-
-Copyright (c) 2002,2003 Thomas Grill (xovo@gmx.net)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
--------------------------------------------------------------------------
-
-This is an example of an external library containing a few simple objects
-
-It uses attributes, so be sure that you've already worked through attr1 and attr2
-
-*/
-
-// Enable attribute processing
-// For clarity, this is done here, but you'd better specify it as a compiler definition
-#define FLEXT_ATTRIBUTES 1
-
-// include flext header
-#include <flext.h>
-
-// check for appropriate flext version
-#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 400)
-#error You need at least flext version 0.4.0
-#endif
-
-
-// -------------------------------------------------------------------------------------
-// Define the base class
-// Note that you don't have to instantiate the base class (with FLEXT_NEW or variants)
-
-class libbase:
- // inherit from basic flext class
- public flext_base
-{
- // obligatory flext header (class name,base class name)
- FLEXT_HEADER(libbase,flext_base)
-
-public:
- // constructor
- libbase();
-
-protected:
- void Output(float f) const { ToOutFloat(0,f); }
-
- // method for floats into left inlet
- virtual void m_trigger(float f) = 0;
-
- float arg; // argument variable
-private:
- FLEXT_CALLBACK_F(m_trigger) // callback for method "m_trigger" (with one float argument)
- FLEXT_ATTRVAR_F(arg)
-};
-
-libbase::libbase():
- arg(0) // initialize argument
-{
- // define inlets:
- // first inlet must always by of type anything (or signal for dsp objects)
- AddInAnything(); // add one inlet for any message
-
- // define outlets:
- AddOutFloat(); // add one float outlet (has index 0)
-
- // register methods
- FLEXT_ADDMETHOD(0,m_trigger); // register method (for float messages) "m_float" for inlet 0
-
- // register attributes
- FLEXT_ADDATTR_VAR1("arg",arg); // register attribute "arg"
-}
-
-
-// ------------------------------------------------------------------
-// Define the actual library objects (derived from the base class)
-// These classes have an implementation of the virtual function m_trigger
-
-class libadd:
- public libbase
-{
- // obligatory flext header, inherit from libbase
- FLEXT_HEADER(libadd,libbase)
-public:
- virtual void m_trigger(float f) { Output(f+arg); }
-};
-
-FLEXT_LIB("lib1.+",libadd);
-
-
-
-class libsub:
- public libbase
-{
- // obligatory flext header, inherit from libbase
- FLEXT_HEADER(libsub,libbase)
-public:
- virtual void m_trigger(float f) { Output(f-arg); }
-};
-
-FLEXT_LIB("lib1.-",libsub);
-
-
-
-class libmul:
- public libbase
-{
- // obligatory flext header, inherit from libbase
- FLEXT_HEADER(libmul,libbase)
-public:
- virtual void m_trigger(float f) { Output(f*arg); }
-};
-
-FLEXT_LIB("lib1.*",libmul);
-
-
-// ------------------------------------------------
-// Do the library setup
-
-static void lib_setup()
-{
- post("flext tutorial lib1, (C)2002 Thomas Grill");
- post("lib1: lib1.+ lib1.- lib1.*");
- post("");
-
- // call the objects' setup routines
- FLEXT_SETUP(libadd);
- FLEXT_SETUP(libsub);
- FLEXT_SETUP(libmul);
-}
-
-// setup the library
-FLEXT_LIB_SETUP(lib1,lib_setup)
diff --git a/externals/grill/flext/tutorial/lib1/package.txt b/externals/grill/flext/tutorial/lib1/package.txt
deleted file mode 100644
index 1a60aa12..00000000
--- a/externals/grill/flext/tutorial/lib1/package.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-NAME=lib1
-SRCS=main.cpp
diff --git a/externals/grill/flext/tutorial/license.txt b/externals/grill/flext/tutorial/license.txt
deleted file mode 100644
index d48095bd..00000000
--- a/externals/grill/flext/tutorial/license.txt
+++ /dev/null
@@ -1,50 +0,0 @@
-flext - C++ layer for Max/MSP and pd (pure data) externals
-Copyright (C) 2001-2006 Thomas Grill
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-In the official flext distribution, the GNU General Public License is
-in the file gpl.txt
-
----------------------------------------------------------
-
- OTHER COPYRIGHT NOTICES
-
----------------------------------------------------------
-This package uses a lot of code from GEM by Mark Danks
-
-See the license text below:
-
---- GEM --------------------------------------
-GEM - Graphics Environment for Multimedia
-Copyright (C) 1997-2000 Mark Danks
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-In the official GEM distribution, the GNU General Public License is
-in the file GnuGPL.LICENSE
-
diff --git a/externals/grill/flext/tutorial/maxmsp/Makefile.am b/externals/grill/flext/tutorial/maxmsp/Makefile.am
deleted file mode 100644
index 63406221..00000000
--- a/externals/grill/flext/tutorial/maxmsp/Makefile.am
+++ /dev/null
@@ -1,6 +0,0 @@
-#
-# automake template
-# added by tim blechmann
-#
-
-EXTRA_DIST = *.pat \ No newline at end of file
diff --git a/externals/grill/flext/tutorial/maxmsp/ex-adv1.pat b/externals/grill/flext/tutorial/maxmsp/ex-adv1.pat
deleted file mode 100755
index f086ab57..00000000
--- a/externals/grill/flext/tutorial/maxmsp/ex-adv1.pat
+++ /dev/null
Binary files differ
diff --git a/externals/grill/flext/tutorial/maxmsp/ex-adv2.pat b/externals/grill/flext/tutorial/maxmsp/ex-adv2.pat
deleted file mode 100755
index b6aa0065..00000000
--- a/externals/grill/flext/tutorial/maxmsp/ex-adv2.pat
+++ /dev/null
Binary files differ
diff --git a/externals/grill/flext/tutorial/maxmsp/ex-adv3.pat b/externals/grill/flext/tutorial/maxmsp/ex-adv3.pat
deleted file mode 100755
index 1f041257..00000000
--- a/externals/grill/flext/tutorial/maxmsp/ex-adv3.pat
+++ /dev/null
Binary files differ
diff --git a/externals/grill/flext/tutorial/maxmsp/ex-attr1.pat b/externals/grill/flext/tutorial/maxmsp/ex-attr1.pat
deleted file mode 100755
index 5dc46f10..00000000
--- a/externals/grill/flext/tutorial/maxmsp/ex-attr1.pat
+++ /dev/null
Binary files differ
diff --git a/externals/grill/flext/tutorial/maxmsp/ex-attr2.pat b/externals/grill/flext/tutorial/maxmsp/ex-attr2.pat
deleted file mode 100755
index aab02c92..00000000
--- a/externals/grill/flext/tutorial/maxmsp/ex-attr2.pat
+++ /dev/null
Binary files differ
diff --git a/externals/grill/flext/tutorial/maxmsp/ex-attr3.pat b/externals/grill/flext/tutorial/maxmsp/ex-attr3.pat
deleted file mode 100755
index 7ef7292f..00000000
--- a/externals/grill/flext/tutorial/maxmsp/ex-attr3.pat
+++ /dev/null
Binary files differ
diff --git a/externals/grill/flext/tutorial/maxmsp/ex-bind1.pat b/externals/grill/flext/tutorial/maxmsp/ex-bind1.pat
deleted file mode 100755
index 96421f2d..00000000
--- a/externals/grill/flext/tutorial/maxmsp/ex-bind1.pat
+++ /dev/null
Binary files differ
diff --git a/externals/grill/flext/tutorial/maxmsp/ex-buffer1.pat b/externals/grill/flext/tutorial/maxmsp/ex-buffer1.pat
deleted file mode 100755
index 979774ac..00000000
--- a/externals/grill/flext/tutorial/maxmsp/ex-buffer1.pat
+++ /dev/null
Binary files differ
diff --git a/externals/grill/flext/tutorial/maxmsp/ex-lib1.pat b/externals/grill/flext/tutorial/maxmsp/ex-lib1.pat
deleted file mode 100755
index 26f65f2b..00000000
--- a/externals/grill/flext/tutorial/maxmsp/ex-lib1.pat
+++ /dev/null
Binary files differ
diff --git a/externals/grill/flext/tutorial/maxmsp/ex-signal1.pat b/externals/grill/flext/tutorial/maxmsp/ex-signal1.pat
deleted file mode 100755
index aa50e2e3..00000000
--- a/externals/grill/flext/tutorial/maxmsp/ex-signal1.pat
+++ /dev/null
Binary files differ
diff --git a/externals/grill/flext/tutorial/maxmsp/ex-signal2.pat b/externals/grill/flext/tutorial/maxmsp/ex-signal2.pat
deleted file mode 100755
index 21c12f88..00000000
--- a/externals/grill/flext/tutorial/maxmsp/ex-signal2.pat
+++ /dev/null
Binary files differ
diff --git a/externals/grill/flext/tutorial/maxmsp/ex-simple1.pat b/externals/grill/flext/tutorial/maxmsp/ex-simple1.pat
deleted file mode 100755
index 133eefe9..00000000
--- a/externals/grill/flext/tutorial/maxmsp/ex-simple1.pat
+++ /dev/null
Binary files differ
diff --git a/externals/grill/flext/tutorial/maxmsp/ex-simple2.pat b/externals/grill/flext/tutorial/maxmsp/ex-simple2.pat
deleted file mode 100755
index acc74744..00000000
--- a/externals/grill/flext/tutorial/maxmsp/ex-simple2.pat
+++ /dev/null
Binary files differ
diff --git a/externals/grill/flext/tutorial/maxmsp/ex-simple3.pat b/externals/grill/flext/tutorial/maxmsp/ex-simple3.pat
deleted file mode 100755
index 7dda678c..00000000
--- a/externals/grill/flext/tutorial/maxmsp/ex-simple3.pat
+++ /dev/null
Binary files differ
diff --git a/externals/grill/flext/tutorial/maxmsp/ex-thread1.pat b/externals/grill/flext/tutorial/maxmsp/ex-thread1.pat
deleted file mode 100755
index cd204b4a..00000000
--- a/externals/grill/flext/tutorial/maxmsp/ex-thread1.pat
+++ /dev/null
Binary files differ
diff --git a/externals/grill/flext/tutorial/maxmsp/ex-thread2.pat b/externals/grill/flext/tutorial/maxmsp/ex-thread2.pat
deleted file mode 100755
index d68690c4..00000000
--- a/externals/grill/flext/tutorial/maxmsp/ex-thread2.pat
+++ /dev/null
Binary files differ
diff --git a/externals/grill/flext/tutorial/maxmsp/ex-timer1.pat b/externals/grill/flext/tutorial/maxmsp/ex-timer1.pat
deleted file mode 100755
index d3828986..00000000
--- a/externals/grill/flext/tutorial/maxmsp/ex-timer1.pat
+++ /dev/null
Binary files differ
diff --git a/externals/grill/flext/tutorial/pd/Makefile.am b/externals/grill/flext/tutorial/pd/Makefile.am
deleted file mode 100644
index d2f5ad4d..00000000
--- a/externals/grill/flext/tutorial/pd/Makefile.am
+++ /dev/null
@@ -1,6 +0,0 @@
-#
-# automake template
-# added by tim blechmann
-#
-
-EXTRA_DIST = *.pd \ No newline at end of file
diff --git a/externals/grill/flext/tutorial/pd/ex-adv1.pd b/externals/grill/flext/tutorial/pd/ex-adv1.pd
deleted file mode 100644
index 8dd10bc1..00000000
--- a/externals/grill/flext/tutorial/pd/ex-adv1.pd
+++ /dev/null
@@ -1,23 +0,0 @@
-#N canvas 46 58 592 347 12;
-#X msg 34 92 or two words;
-#X msg 169 93 2 3;
-#X msg 48 291 one or two words;
-#X obj 72 213 print result;
-#X obj 49 172 adv1 one;
-#X obj 48 263 prepend set;
-#X text 162 257 you can also use "prepend";
-#X obj 16 8 cnv 15 550 40 empty empty adv1 10 22 0 24 -260818 -1 0
-;
-#X text 175 28 http://grrrr.org;
-#X text 199 214 watch the console!;
-#X text 210 110 send the object various messages;
-#X text 160 274 (if adv1 has already been loaded);
-#X text 145 10 flext tutorial \, (C)2002-2006 Thomas Grill;
-#X obj 66 127 nbx 3 18 0 100 0 0 empty empty empty 0 -6 0 14 -262144
--1 -1 24 256;
-#X connect 0 0 4 0;
-#X connect 1 0 4 0;
-#X connect 4 0 3 0;
-#X connect 4 0 5 0;
-#X connect 5 0 2 0;
-#X connect 13 0 4 0;
diff --git a/externals/grill/flext/tutorial/pd/ex-adv2.pd b/externals/grill/flext/tutorial/pd/ex-adv2.pd
deleted file mode 100644
index b4fa1ce4..00000000
--- a/externals/grill/flext/tutorial/pd/ex-adv2.pd
+++ /dev/null
@@ -1,23 +0,0 @@
-#N canvas 329 97 595 356 12;
-#X msg 26 97 help;
-#X msg 123 146 born;
-#X msg 172 147 to;
-#X msg 214 149 hula;
-#X msg 228 192 hula 1;
-#X text 261 150 tag without argument;
-#X text 297 190 tag and argument;
-#X text 72 97 print a help message;
-#X obj 16 7 cnv 15 550 40 empty empty adv2 10 22 0 24 -260818 -1 0
-;
-#X text 146 27 http://grrrr.org;
-#X obj 148 293 adv2;
-#X text 21 49 this is identical to the simple3 example;
-#X text 145 9 flext tutorial \, (C)2002-2006 Thomas Grill;
-#X text 345 231 symbol message;
-#X msg 228 230 symbol yeah;
-#X connect 0 0 10 0;
-#X connect 1 0 10 0;
-#X connect 2 0 10 0;
-#X connect 3 0 10 0;
-#X connect 4 0 10 0;
-#X connect 14 0 10 0;
diff --git a/externals/grill/flext/tutorial/pd/ex-adv3.pd b/externals/grill/flext/tutorial/pd/ex-adv3.pd
deleted file mode 100644
index 0fdfc735..00000000
--- a/externals/grill/flext/tutorial/pd/ex-adv3.pd
+++ /dev/null
@@ -1,40 +0,0 @@
-#N canvas 175 139 603 361 12;
-#X obj 16 7 cnv 15 550 40 empty empty adv3 10 22 0 24 -260818 -1 0
-;
-#X text 174 28 http://grrrr.org;
-#X obj 229 266 adv3 2 5 1;
-#X obj 305 303 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X obj 223 300 nbx 5 18 -1e+037 1e+037 0 0 empty empty empty 0 -6 0
-12 -228992 -1 -1 2 256;
-#X msg 269 130 1 10;
-#X msg 389 128 1;
-#X msg 429 128 -1;
-#X msg 469 128 2;
-#X obj 88 129 bng 25 250 50 0 empty empty empty 0 -6 0 8 -258699 -1
--1;
-#X msg 317 130 7 2;
-#X text 325 300 end has been reached;
-#X obj 157 127 nbx 5 18 -1e+037 1e+037 0 0 empty empty empty 0 -6 0
-12 -228992 -1 -1 25 256;
-#X msg 158 150 set \$1;
-#X text 72 108 trigger;
-#X text 147 108 set counter;
-#X text 264 109 set bounds;
-#X text 390 106 set step size;
-#X msg 80 196 reset;
-#X text 83 176 reset;
-#X text 174 8 flext tutorial \, (C)2002-2006 Thomas Grill;
-#X text 21 49 this is a port of IOhannes Zmoelnigs "counter" example
-;
-#X connect 2 0 4 0;
-#X connect 2 1 3 0;
-#X connect 5 0 2 1;
-#X connect 6 0 2 2;
-#X connect 7 0 2 2;
-#X connect 8 0 2 2;
-#X connect 9 0 2 0;
-#X connect 10 0 2 1;
-#X connect 12 0 13 0;
-#X connect 13 0 2 0;
-#X connect 18 0 2 0;
diff --git a/externals/grill/flext/tutorial/pd/ex-attr1.pd b/externals/grill/flext/tutorial/pd/ex-attr1.pd
deleted file mode 100644
index 27ab0bb6..00000000
--- a/externals/grill/flext/tutorial/pd/ex-attr1.pd
+++ /dev/null
@@ -1,31 +0,0 @@
-#N canvas 70 150 694 465 12;
-#X obj 59 296 attr1 @arg 3;
-#X text 114 273 attribute as a creation arg;
-#X msg 160 98 getattributes;
-#X text 167 319 there is one additional outlet;
-#X text 167 334 for all attribute-enabled objects;
-#X obj 150 367 print;
-#X msg 160 141 getarg;
-#X text 12 92 trigger output;
-#X msg 160 203 arg \$1;
-#X text 230 191 set attribute "arg";
-#X text 295 98 query object attributes (watch console);
-#X text 228 142 query attribute "arg" (watch console);
-#X obj 16 8 cnv 15 550 40 empty empty attr1 10 22 0 24 -260818 -1 0
-;
-#X text 175 28 http://grrrr.org;
-#X text 26 388 result;
-#X obj 23 114 nbx 4 16 -999 999 0 0 empty empty empty 0 -6 0 12 -261681
--1 -1 0 256;
-#X obj 29 370 nbx 7 16 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 12
--228992 -1 -1 0 256;
-#X obj 161 181 nbx 4 16 -999 999 0 0 empty empty empty 0 -6 0 12 -261681
--1 -1 0 256;
-#X text 175 10 flext tutorial \, (C)2002-2006 Thomas Grill;
-#X connect 0 0 16 0;
-#X connect 0 1 5 0;
-#X connect 2 0 0 0;
-#X connect 6 0 0 0;
-#X connect 8 0 0 0;
-#X connect 15 0 0 0;
-#X connect 17 0 8 0;
diff --git a/externals/grill/flext/tutorial/pd/ex-attr2.pd b/externals/grill/flext/tutorial/pd/ex-attr2.pd
deleted file mode 100644
index 4e377725..00000000
--- a/externals/grill/flext/tutorial/pd/ex-attr2.pd
+++ /dev/null
@@ -1,47 +0,0 @@
-#N canvas 364 29 620 426 12;
-#X msg 22 88 getattributes;
-#X text 264 326 there is one additional outlet;
-#X text 264 341 for all attribute-enabled objects;
-#X obj 246 365 print;
-#X msg 22 124 getarg;
-#X text 14 218 trigger output;
-#X msg 270 263 arg \$1;
-#X text 159 87 query object attributes (watch console);
-#X msg 95 124 getop;
-#X obj 158 306 attr2 @op +;
-#X text 251 124 query attributes;
-#X text 332 179 set attributes;
-#X msg 168 169 op +;
-#X msg 167 194 op -;
-#X msg 218 169 op *;
-#X msg 268 193 op **;
-#X msg 268 169 op =;
-#X msg 218 193 op /;
-#X msg 157 124 getresult;
-#X obj 16 8 cnv 15 550 40 empty empty attr2 10 22 0 24 -260818 -1 0
-;
-#X text 173 28 http://grrrr.org;
-#X text 90 367 result;
-#X obj 22 240 nbx 4 16 -999 999 0 0 empty empty empty 0 -6 0 12 -261681
--1 -1 0 256;
-#X obj 270 242 nbx 4 16 -999 999 0 0 empty empty empty 0 -6 0 12 -261681
--1 -1 0 256;
-#X obj 150 367 nbx 7 16 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 12
--228992 -1 -1 0 256;
-#X text 171 10 flext tutorial \, (C)2002-2006 Thomas Grill;
-#X text 327 243 set argument;
-#X connect 0 0 9 0;
-#X connect 4 0 9 0;
-#X connect 6 0 9 0;
-#X connect 8 0 9 0;
-#X connect 9 0 24 0;
-#X connect 9 1 3 0;
-#X connect 12 0 9 0;
-#X connect 13 0 9 0;
-#X connect 14 0 9 0;
-#X connect 15 0 9 0;
-#X connect 16 0 9 0;
-#X connect 17 0 9 0;
-#X connect 18 0 9 0;
-#X connect 22 0 9 0;
-#X connect 23 0 6 0;
diff --git a/externals/grill/flext/tutorial/pd/ex-attr3.pd b/externals/grill/flext/tutorial/pd/ex-attr3.pd
deleted file mode 100644
index b2832c18..00000000
--- a/externals/grill/flext/tutorial/pd/ex-attr3.pd
+++ /dev/null
@@ -1,60 +0,0 @@
-#N canvas 175 139 607 457 12;
-#X obj 16 7 cnv 15 550 40 empty empty attr3 10 22 0 24 -260818 -1 0
-;
-#X text 174 28 http://grrrr.org;
-#X obj 293 364 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X obj 196 361 nbx 5 18 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 12
--228992 -1 -1 2 256;
-#X msg 296 126 1 10;
-#X msg 419 127 1;
-#X msg 459 127 -1;
-#X msg 498 127 2;
-#X obj 36 128 bng 25 250 50 0 empty empty empty 0 -6 0 8 -258699 -1
--1;
-#X msg 344 126 7 2;
-#X obj 173 119 nbx 5 18 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 12
--228992 -1 -1 20 256;
-#X msg 174 142 set \$1;
-#X text 20 107 trigger;
-#X text 163 100 set counter;
-#X text 291 105 set bounds;
-#X text 420 105 set step size;
-#X msg 97 135 reset;
-#X text 100 115 reset;
-#X text 21 64 with attributes;
-#X obj 197 327 attr3 @bounds 2 5 @step 1;
-#X msg 32 195 getattributes;
-#X obj 392 363 print;
-#X text 385 381 attributes;
-#X msg 32 237 getcount;
-#X msg 388 232 getstep;
-#X text 22 178 list all attributes;
-#X msg 32 266 count 3;
-#X text 117 238 get count;
-#X text 112 266 set count;
-#X msg 387 259 step 3;
-#X text 21 49 this is a port of IOhannes Zmoelnigs "counter" example
-;
-#X msg 258 234 getbounds;
-#X msg 257 261 bounds 5 15;
-#X text 174 8 flext tutorial \, (C)2002-2006 Thomas Grill;
-#X connect 4 0 19 1;
-#X connect 5 0 19 2;
-#X connect 6 0 19 2;
-#X connect 7 0 19 2;
-#X connect 8 0 19 0;
-#X connect 9 0 19 1;
-#X connect 10 0 11 0;
-#X connect 11 0 19 0;
-#X connect 16 0 19 0;
-#X connect 19 0 3 0;
-#X connect 19 1 2 0;
-#X connect 19 2 21 0;
-#X connect 20 0 19 0;
-#X connect 23 0 19 0;
-#X connect 24 0 19 0;
-#X connect 26 0 19 0;
-#X connect 29 0 19 0;
-#X connect 31 0 19 0;
-#X connect 32 0 19 0;
diff --git a/externals/grill/flext/tutorial/pd/ex-bind1.pd b/externals/grill/flext/tutorial/pd/ex-bind1.pd
deleted file mode 100644
index 355b97e8..00000000
--- a/externals/grill/flext/tutorial/pd/ex-bind1.pd
+++ /dev/null
@@ -1,55 +0,0 @@
-#N canvas 405 36 626 400 12;
-#X obj 15 8 cnv 15 550 40 empty empty bind1 10 22 0 24 -260818 -1 0
-;
-#X text 175 28 http://grrrr.org;
-#X text 175 8 flext tutorial \, (C)2002-2006 Thomas Grill;
-#X obj 14 330 bind1;
-#X text 48 72 bind object to symbol;
-#X msg 50 94 bind sym1;
-#X msg 174 94 bind sym2;
-#X msg 48 126 unbind sym1;
-#X msg 173 125 unbind sym2;
-#X text 43 159 bind object to symbol;
-#X msg 45 181 bindmethod sym1;
-#X msg 47 213 unbindmethod sym1;
-#X msg 227 181 bindmethod sym2;
-#X msg 230 212 unbindmethod sym2;
-#X obj 13 359 print OUT;
-#X text 109 358 watch the console!;
-#X obj 351 103 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10
--262131 -1 -1 0 256;
-#X obj 446 103 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10
--262131 -1 -1 0 256;
-#X msg 351 122 test \$1;
-#X msg 446 122 test \$1;
-#X msg 521 100 1 2 3;
-#X obj 351 155 s sym1;
-#X obj 446 155 s sym2;
-#X text 349 67 send message to bound;
-#X text 350 81 object or method;
-#X obj 345 272 r sym3;
-#X text 344 250 receive forwarded message;
-#X obj 347 299 print MSG;
-#X text 47 258 receive forwarded message;
-#X msg 48 279 sym3 myforward;
-#X obj 202 280 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10
--262131 -1 -1 0 256;
-#X msg 201 297 sym3 \$1;
-#X connect 3 0 14 0;
-#X connect 5 0 3 0;
-#X connect 6 0 3 0;
-#X connect 7 0 3 0;
-#X connect 8 0 3 0;
-#X connect 10 0 3 0;
-#X connect 11 0 3 0;
-#X connect 12 0 3 0;
-#X connect 13 0 3 0;
-#X connect 16 0 18 0;
-#X connect 17 0 19 0;
-#X connect 18 0 21 0;
-#X connect 19 0 22 0;
-#X connect 20 0 22 0;
-#X connect 25 0 27 0;
-#X connect 29 0 3 1;
-#X connect 30 0 31 0;
-#X connect 31 0 3 1;
diff --git a/externals/grill/flext/tutorial/pd/ex-buffer1.pd b/externals/grill/flext/tutorial/pd/ex-buffer1.pd
deleted file mode 100644
index 09d0655a..00000000
--- a/externals/grill/flext/tutorial/pd/ex-buffer1.pd
+++ /dev/null
@@ -1,121 +0,0 @@
-#N canvas 94 140 763 489 12;
-#X obj 11 -12 cnv 15 550 40 empty empty buffer1 10 22 0 24 -260818
--1 0;
-#X text 178 8 http://grrrr.org;
-#X text 178 -12 flext tutorial \, (C)2002-2006 Thomas Grill;
-#N canvas 0 22 450 300 graph1 0;
-#X array buf1 1000 float 1;
-#A 0 -0.0142856 -0.0142856 -0.0142856 -0.0142856 -0.0142856 -0.0142856
--0.0142856 -0.0142856 -0.0142856 -0.0142856 -0.0142856 -0.0142856 -0.0142856
--0.0142856 -0.0142856 -0.0142856 -0.0142856 -0.0142856 -0.0142856 -0.0142856
--0.0142856 -0.0142856 -0.0142856 -0.0142856 -0.0142856 -0.0142856 -0.0142856
--0.0142856 -0.0142856 -0.0142856 -0.0142856 -0.0142856 -0.0142856 -0.0142856
--0.0142856 -0.0142856 -0.0142856 -0.0142856 -0.0142856 -0.0142856 -0.0142856
--0.0142856 -0.0142856 -0.0142856 -0.0142856 -0.0142856 -0.0142856 -0.0142856
--0.0142856 -0.0142856 -0.0114285 -0.00857134 -0.00571423 -0.00285711
-5.58794e-10 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0
--0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0
--0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0
--0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0
--0 -0 0.51 0.51 0 0 0 0 0 0 0 0 0 0 0 0 0 0.51 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 -0 -0 0.51 0.51 -5.58794e-10 0.00285711 0.00571423 0.00857134
-0.0114285 0.0142856 0.0166665 0.0190474 0.0214283 0.0238093 0.0261902
-0.0285711 0.030952 0.033333 0.0357139 0.51 0.0404758 0.51 0.0452376
-0.0476185 0.0499995 0.0523804 0.0547613 0.0571422 0.0595232 0.0619041
-0.064285 0.0666659 0.0690469 0.51 0.0738087 0.0761897 0.0785706 0.0809515
-0.0833325 0.0857134 0.0857134 0.0857134 0.0857134 0.0857134 0.0857134
-0.51 0.0799992 0.51 0.0742849 0.0571423 0 0 0 0 0.51 0 0 0 0 0 0 0
-0 0 0.51 0 0 0 0 0 0.51 0 0 0 0 0 0.51 0 0.51 0 0 0.51 0 0 0.51 0 0.51
-0 0.51 0.51 0 0.51 0.51 0 0 0 0 0 0.51 0 0 0 0 0 0.51 0 0 0.51 0 0
-0 0 0 0.51 0 0 0 0 0 0 0 0.51 0 0 0 0 0 0 0 0.51 0 0 0 0 0.51 0 0 0
-0 0 0 0.51 0 0 0 0 0 0 0 0 0 0 0.51 0 0 0 0 0 0 0 0 0.51 0.51 0 0 0.51
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0.00357139 0.00714278 0.0107142
-0.0142856 0.0171427 0.0199998 0.0228569 0.025714 0.0285711 0.0314283
-0.0342854 0.0371425 0.0399996 0.0428567 0.0457138 0.0485709 0.051428
-0.0542852 0.0571423 0.0599994 0.0628565 0.0657136 0.0685707 0.0714278
-0.0728564 0.0742849 0.0757135 0.077142 0.0785706 0.0799991 0.0814277
-0.0828563 0.0842848 0.0857134 0.0857134 0.0857134 0.0857134 0.0857134
-0.0857134 0.0857134 0.0857134 0.0857134 0.0857134 0.0857134 0.0857134
-0.0857134 0.0857134 0.0857134 0.0857134 0.0828563 0.0799992 0.077142
-0.0742849 0.0714278 0.0714278 0.0714278 0.0714278 0.0714278 0.0714278
-0.0714278 0.0714278 0.0714278 0.0714278 0.0714278 0.0685707 0.0657136
-0.0628565 0.0599994 0.0571423 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 999 -1 200 140 1;
-#X restore 539 49 graph;
-#N canvas 0 22 450 300 graph1 0;
-#X array buf2 300 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;
-#X coords 0 1 299 -1 200 140 1;
-#X restore 539 194 graph;
-#X obj 24 406 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10
--262131 -1 -1 1.06 256;
-#X text 19 423 peek value;
-#X obj 137 400 print A;
-#X text 137 421 print attributes to the console;
-#X msg 41 46 set;
-#X msg 65 98 set buf1;
-#X msg 154 98 buffer buf2;
-#X msg 65 129 getbuffer;
-#X text 164 129 query current buffer;
-#X text 73 43 set no buffer;
-#X text 68 78 set buffer;
-#X msg 84 185 frames 1000;
-#X msg 85 213 getframes;
-#X text 199 185 set buffer length;
-#X text 184 213 query buffer length;
-#X msg 16 265 getchannels;
-#X text 23 290 always 1 for PD!;
-#X obj 231 281 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10
--262131 -1 -1 13 256;
-#X obj 336 281 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10
--262131 -1 -1 91 256;
-#X obj 394 281 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10
--262131 -1 -1 0.51 256;
-#X obj 334 304 pack 0 0;
-#X msg 335 331 poke \$1 \$2 0;
-#X msg 230 331 peek \$1 0;
-#X text 230 258 get sample;
-#X text 338 258 set sample;
-#X text 348 363 the change is not immediately seen on PD;
-#X text 350 376 (you'll have to draw in the window);
-#X obj 24 368 buffer1;
-#X connect 9 0 32 0;
-#X connect 10 0 32 0;
-#X connect 11 0 32 0;
-#X connect 12 0 32 0;
-#X connect 16 0 32 0;
-#X connect 17 0 32 0;
-#X connect 20 0 32 0;
-#X connect 22 0 27 0;
-#X connect 23 0 25 0;
-#X connect 24 0 25 1;
-#X connect 25 0 26 0;
-#X connect 26 0 32 0;
-#X connect 27 0 32 0;
-#X connect 32 0 5 0;
-#X connect 32 1 7 0;
diff --git a/externals/grill/flext/tutorial/pd/ex-lib1.pd b/externals/grill/flext/tutorial/pd/ex-lib1.pd
deleted file mode 100644
index 1f1390b2..00000000
--- a/externals/grill/flext/tutorial/pd/ex-lib1.pd
+++ /dev/null
@@ -1,51 +0,0 @@
-#N canvas 120 205 580 295 12;
-#X msg 102 172 arg \$1;
-#X obj 30 208 lib1.+ @arg 3;
-#X text 101 124 set arg;
-#X msg 285 171 arg \$1;
-#X text 284 125 set arg;
-#X msg 472 174 arg \$1;
-#X text 471 128 set arg;
-#X obj 392 212 lib1.* @arg 2;
-#X obj 210 210 lib1.- @arg 7;
-#X text 25 123 trigger;
-#X text 207 127 trigger;
-#X text 391 128 trigger;
-#X obj 16 8 cnv 15 550 40 empty empty lib1 10 22 0 24 -260818 -1 0
-;
-#X text 173 28 http://grrrr.org;
-#X obj 30 147 nbx 4 16 -999 999 0 0 empty empty empty 0 -6 0 12 -261681
--1 -1 0 256;
-#X obj 101 146 nbx 4 16 -999 999 0 0 empty empty empty 0 -6 0 12 -261681
--1 -1 0 256;
-#X obj 212 147 nbx 4 16 -999 999 0 0 empty empty empty 0 -6 0 12 -261681
--1 -1 0 256;
-#X obj 284 149 nbx 4 16 -999 999 0 0 empty empty empty 0 -6 0 12 -261681
--1 -1 0 256;
-#X obj 394 149 nbx 4 16 -999 999 0 0 empty empty empty 0 -6 0 12 -261681
--1 -1 0 256;
-#X obj 472 152 nbx 4 16 -999 999 0 0 empty empty empty 0 -6 0 12 -261681
--1 -1 0 256;
-#X obj 30 241 nbx 7 16 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 12
--228992 -1 -1 0 256;
-#X obj 210 241 nbx 7 16 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 12
--228992 -1 -1 0 256;
-#X obj 392 241 nbx 7 16 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 12
--228992 -1 -1 0 256;
-#X text 25 56 In order to use the objects the library must have been
-;
-#X text 26 74 loaded at PD startup (with the "-lib lib1" argument)
-;
-#X text 173 8 flext tutorial \, (C)2002-2006 Thomas Grill;
-#X connect 0 0 1 0;
-#X connect 1 0 20 0;
-#X connect 3 0 8 0;
-#X connect 5 0 7 0;
-#X connect 7 0 22 0;
-#X connect 8 0 21 0;
-#X connect 14 0 1 0;
-#X connect 15 0 0 0;
-#X connect 16 0 8 0;
-#X connect 17 0 3 0;
-#X connect 18 0 7 0;
-#X connect 19 0 5 0;
diff --git a/externals/grill/flext/tutorial/pd/ex-signal1.pd b/externals/grill/flext/tutorial/pd/ex-signal1.pd
deleted file mode 100644
index 45b9a94c..00000000
--- a/externals/grill/flext/tutorial/pd/ex-signal1.pd
+++ /dev/null
@@ -1,27 +0,0 @@
-#N canvas 335 232 586 291 12;
-#X obj 250 121 hsl 128 15 0 1 0 0 empty empty empty 20 8 0 8 -261681
--1 -1 0 1;
-#X obj 28 121 osc~ 440;
-#X obj 87 248 dac~;
-#X obj 123 121 osc~ 880;
-#X obj 97 175 signal1~;
-#X obj 16 8 cnv 15 550 40 empty empty signal1 10 22 0 24 -260818 -1
-0;
-#X text 175 28 http://grrrr.org;
-#X text 342 138 control the mixing;
-#X text 166 210 adjust the volume;
-#X obj 97 209 *~ 0.5;
-#X text 25 102 source 1;
-#X text 125 101 source 2;
-#X obj 248 143 nbx 5 16 0 1 0 0 empty empty empty 0 -6 0 12 -261681
--1 -1 0 256;
-#X text 175 8 flext tutorial \, (C)2002-2006 Thomas Grill;
-#X text 21 51 this is a port of IOhannes Zmoelnigs pan~ example;
-#X text 21 66 done by Frank Barknecht;
-#X connect 0 0 12 0;
-#X connect 1 0 4 0;
-#X connect 3 0 4 1;
-#X connect 4 0 9 0;
-#X connect 9 0 2 0;
-#X connect 9 0 2 1;
-#X connect 12 0 4 2;
diff --git a/externals/grill/flext/tutorial/pd/ex-signal2.pd b/externals/grill/flext/tutorial/pd/ex-signal2.pd
deleted file mode 100644
index 750828a0..00000000
--- a/externals/grill/flext/tutorial/pd/ex-signal2.pd
+++ /dev/null
@@ -1,25 +0,0 @@
-#N canvas 41 125 585 250 12;
-#X obj 109 126 signal2~;
-#X obj 104 81 bng 25 250 50 0 empty empty empty 0 -6 0 8 -261681 -1
--1;
-#X text 136 87 bang to get audio system parameters;
-#X text 261 205 channels in and out;
-#X obj 16 8 cnv 15 550 40 empty empty signal2 10 22 0 24 -260818 -1
-0;
-#X text 175 28 http://grrrr.org;
-#X obj 66 184 nbx 5 16 -1e+037 1e+037 0 0 empty empty empty 0 -6 0
-12 -228992 -1 -1 0 256;
-#X obj 158 184 nbx 5 16 -1e+037 1e+037 0 0 empty empty empty 0 -6 0
-12 -228992 -1 -1 0 256;
-#X obj 261 184 nbx 5 16 -1e+037 1e+037 0 0 empty empty empty 0 -6 0
-12 -228992 -1 -1 0 256;
-#X obj 353 184 nbx 5 16 -1e+037 1e+037 0 0 empty empty empty 0 -6 0
-12 -228992 -1 -1 0 256;
-#X text 40 204 samplerate;
-#X text 156 204 blocksize;
-#X text 173 10 flext tutorial \, (C)2002-2006 Thomas Grill;
-#X connect 0 0 6 0;
-#X connect 0 1 7 0;
-#X connect 0 2 8 0;
-#X connect 0 3 9 0;
-#X connect 1 0 0 0;
diff --git a/externals/grill/flext/tutorial/pd/ex-simple1.pd b/externals/grill/flext/tutorial/pd/ex-simple1.pd
deleted file mode 100644
index 271afd0b..00000000
--- a/externals/grill/flext/tutorial/pd/ex-simple1.pd
+++ /dev/null
@@ -1,12 +0,0 @@
-#N canvas 85 178 594 230 12;
-#X obj 40 129 simple1;
-#X obj 16 8 cnv 15 550 40 empty empty simple1 10 22 0 24 -260818 -1
-0;
-#X text 167 30 http://grrrr.org;
-#X obj 41 94 nbx 4 16 -999 999 0 0 empty empty input 0 -6 0 12 -261681
--1 -1 35 256;
-#X obj 39 171 nbx 7 16 -1e+37 1e+37 0 0 empty empty inverse 0 -6 0
-12 -228992 -1 -1 0.0285714 256;
-#X text 167 10 flext tutorial \, (C)2002-2006 Thomas Grill;
-#X connect 0 0 4 0;
-#X connect 3 0 0 0;
diff --git a/externals/grill/flext/tutorial/pd/ex-simple2.pd b/externals/grill/flext/tutorial/pd/ex-simple2.pd
deleted file mode 100644
index c379cd5b..00000000
--- a/externals/grill/flext/tutorial/pd/ex-simple2.pd
+++ /dev/null
@@ -1,16 +0,0 @@
-#N canvas 72 265 599 317 12;
-#X obj 42 196 simple2 3;
-#X text 121 177 default argument;
-#X obj 16 8 cnv 15 550 40 empty empty simple2 10 22 0 24 -260818 -1
-0;
-#X text 167 29 http://grrrr.org;
-#X obj 41 110 nbx 4 16 -999 999 0 0 empty empty triggering 0 -6 0 12
--261681 -1 -1 0 256;
-#X obj 148 110 nbx 4 16 -999 999 0 0 empty empty non-triggering 0 -6
-0 12 -261681 -1 -1 0 256;
-#X obj 42 239 nbx 7 16 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 12
--228992 -1 -1 0 256;
-#X text 167 11 flext tutorial \, (C)2002-2006 Thomas Grill;
-#X connect 0 0 6 0;
-#X connect 4 0 0 0;
-#X connect 5 0 0 1;
diff --git a/externals/grill/flext/tutorial/pd/ex-simple3.pd b/externals/grill/flext/tutorial/pd/ex-simple3.pd
deleted file mode 100644
index fbdafca5..00000000
--- a/externals/grill/flext/tutorial/pd/ex-simple3.pd
+++ /dev/null
@@ -1,22 +0,0 @@
-#N canvas 329 97 593 354 12;
-#X msg 22 87 help;
-#X msg 119 136 born;
-#X msg 168 137 to;
-#X msg 210 139 hula;
-#X msg 224 182 hula 1;
-#X obj 144 283 simple3;
-#X text 257 140 tag without argument;
-#X text 293 180 tag and argument;
-#X text 68 87 print a help message;
-#X obj 16 8 cnv 15 550 40 empty empty simple3 10 22 0 24 -260818 -1
-0;
-#X text 174 28 http://grrrr.org;
-#X text 174 10 flext tutorial \, (C)2002-2006 Thomas Grill;
-#X msg 224 220 symbol yeah;
-#X text 350 219 symbol message;
-#X connect 0 0 5 0;
-#X connect 1 0 5 0;
-#X connect 2 0 5 0;
-#X connect 3 0 5 0;
-#X connect 4 0 5 0;
-#X connect 12 0 5 0;
diff --git a/externals/grill/flext/tutorial/pd/ex-sndobj1.pd b/externals/grill/flext/tutorial/pd/ex-sndobj1.pd
deleted file mode 100644
index 01ee937c..00000000
--- a/externals/grill/flext/tutorial/pd/ex-sndobj1.pd
+++ /dev/null
@@ -1,34 +0,0 @@
-#N canvas 405 36 584 392 12;
-#X obj 56 348 dac~;
-#X obj 15 8 cnv 15 550 40 empty empty sndobj1 10 22 0 24 -260818 -1
-0;
-#X text 175 28 http://grrrr.org;
-#X text 170 285 adjust the volume;
-#X text 35 97 source;
-#X obj 171 268 hsl 128 15 0.01 1 1 0 empty empty empty -2 -6 0 8 -261681
--1 -1 0 1;
-#X msg 160 148 shL \$1;
-#X msg 218 148 shR \$1;
-#X obj 244 84 hsl 128 15 0.5 2 1 0 empty empty empty -2 -6 0 8 -261681
--1 -1 0 1;
-#X obj 244 104 hsl 128 15 0.5 2 1 0 empty empty empty -2 -6 0 8 -261681
--1 -1 0 1;
-#X text 149 82 pitch left;
-#X text 149 102 pitch right;
-#X obj 31 119 osc~ 442;
-#X obj 32 226 sndobj1~ @shL 0.7 @shR 1.2;
-#X obj 32 304 *~ 0.3;
-#X obj 91 304 *~ 0.3;
-#X text 175 8 flext tutorial \, (C)2002-2006 Thomas Grill;
-#X connect 5 0 14 1;
-#X connect 5 0 15 1;
-#X connect 6 0 13 0;
-#X connect 7 0 13 0;
-#X connect 8 0 6 0;
-#X connect 9 0 7 0;
-#X connect 12 0 13 0;
-#X connect 12 0 13 1;
-#X connect 13 0 14 0;
-#X connect 13 1 15 0;
-#X connect 14 0 0 0;
-#X connect 15 0 0 1;
diff --git a/externals/grill/flext/tutorial/pd/ex-stk1.pd b/externals/grill/flext/tutorial/pd/ex-stk1.pd
deleted file mode 100644
index b61b9833..00000000
--- a/externals/grill/flext/tutorial/pd/ex-stk1.pd
+++ /dev/null
@@ -1,15 +0,0 @@
-#N canvas 237 9 577 257 12;
-#X obj 66 186 dac~;
-#X obj 15 8 cnv 15 550 40 empty empty stk1 10 22 0 24 -260818 -1 0
-;
-#X text 175 28 http://grrrr.org;
-#X text 184 118 adjust the volume;
-#X obj 185 101 hsl 128 15 0.01 1 1 0 empty empty empty -2 -6 0 8 -261681
--1 -1 0 1;
-#X obj 76 132 *~ 0.3;
-#X text 175 8 flext tutorial \, (C)2002-2006 Thomas Grill;
-#X obj 76 86 stk1~;
-#X connect 4 0 5 1;
-#X connect 5 0 0 0;
-#X connect 5 0 0 1;
-#X connect 7 0 5 0;
diff --git a/externals/grill/flext/tutorial/pd/ex-stk2.pd b/externals/grill/flext/tutorial/pd/ex-stk2.pd
deleted file mode 100644
index 6ce56330..00000000
--- a/externals/grill/flext/tutorial/pd/ex-stk2.pd
+++ /dev/null
@@ -1,32 +0,0 @@
-#N canvas 245 28 594 364 12;
-#X obj 68 318 dac~;
-#X obj 15 8 cnv 15 550 40 empty empty stk2 10 22 0 24 -260818 -1 0
-;
-#X text 175 28 http://grrrr.org;
-#X text 193 229 adjust the volume;
-#X obj 194 212 hsl 128 15 0.01 1 1 0 empty empty empty -2 -6 0 8 -261681
--1 -1 0 1;
-#X obj 68 263 *~ 0.3;
-#X text 175 8 flext tutorial \, (C)2002-2006 Thomas Grill;
-#X obj 68 215 stk2~;
-#X obj 125 263 *~ 0.3;
-#X msg 183 139 shL \$1;
-#X msg 241 139 shR \$1;
-#X obj 267 77 hsl 128 15 0.5 2 1 0 empty empty empty -2 -6 0 8 -261681
--1 -1 0 1;
-#X obj 267 95 hsl 128 15 0.5 2 1 0 empty empty empty -2 -6 0 8 -261681
--1 -1 0 1;
-#X text 172 73 pitch left;
-#X text 172 93 pitch right;
-#X obj 68 78 osc~ 442;
-#X connect 4 0 5 1;
-#X connect 4 0 8 1;
-#X connect 5 0 0 0;
-#X connect 7 0 5 0;
-#X connect 7 1 8 0;
-#X connect 8 0 0 1;
-#X connect 9 0 7 0;
-#X connect 10 0 7 0;
-#X connect 11 0 9 0;
-#X connect 12 0 10 0;
-#X connect 15 0 7 0;
diff --git a/externals/grill/flext/tutorial/pd/ex-thread1.pd b/externals/grill/flext/tutorial/pd/ex-thread1.pd
deleted file mode 100644
index 38707f44..00000000
--- a/externals/grill/flext/tutorial/pd/ex-thread1.pd
+++ /dev/null
@@ -1,43 +0,0 @@
-#N canvas 105 266 608 311 12;
-#X obj 39 91 bng 25 250 50 0 empty empty start 0 -6 0 8 -261681 -1
--1;
-#X obj 130 231 thread1;
-#X obj 228 233 thread1;
-#X obj 324 231 thread1;
-#X obj 422 232 thread1;
-#X obj 131 185 delay 200;
-#X obj 228 185 delay 200;
-#X obj 325 185 delay 200;
-#X obj 421 185 delay 200;
-#X text 78 85 click to start;
-#X text 126 103 (if you click twice \, the same thread is started a
-second time);
-#X obj 16 8 cnv 15 550 40 empty empty thread1 10 22 0 24 -260818 -1
-0;
-#X text 170 29 http://grrrr.org;
-#X obj 131 262 nbx 5 16 -1e+037 1e+037 0 0 empty empty empty 0 -6 0
-12 -228992 -1 -1 0 256;
-#X obj 229 263 nbx 5 16 -1e+037 1e+037 0 0 empty empty empty 0 -6 0
-12 -228992 -1 -1 0 256;
-#X obj 323 261 nbx 5 16 -1e+037 1e+037 0 0 empty empty empty 0 -6 0
-12 -228992 -1 -1 0 256;
-#X obj 423 261 nbx 5 16 -1e+037 1e+037 0 0 empty empty empty 0 -6 0
-12 -228992 -1 -1 0 256;
-#X obj 39 229 thread1;
-#X obj 39 262 nbx 5 16 -1e+037 1e+037 0 0 empty empty empty 0 -6 0
-12 -228992 -1 -1 0 256;
-#X text 170 11 flext tutorial \, (C)2002-2006 Thomas Grill;
-#X connect 0 0 5 0;
-#X connect 0 0 17 0;
-#X connect 1 0 13 0;
-#X connect 2 0 14 0;
-#X connect 3 0 15 0;
-#X connect 4 0 16 0;
-#X connect 5 0 1 0;
-#X connect 5 0 6 0;
-#X connect 6 0 2 0;
-#X connect 6 0 7 0;
-#X connect 7 0 3 0;
-#X connect 7 0 8 0;
-#X connect 8 0 4 0;
-#X connect 17 0 18 0;
diff --git a/externals/grill/flext/tutorial/pd/ex-thread2.pd b/externals/grill/flext/tutorial/pd/ex-thread2.pd
deleted file mode 100644
index 4d72392f..00000000
--- a/externals/grill/flext/tutorial/pd/ex-thread2.pd
+++ /dev/null
@@ -1,47 +0,0 @@
-#N canvas 116 192 593 338 12;
-#X msg 84 188 stop;
-#X msg 255 192 stop;
-#X obj 199 99 bng 25 250 50 0 empty empty empty 0 -6 0 8 -261681 -1
--1;
-#X obj 291 99 bng 25 250 50 0 empty empty empty 0 -6 0 8 -261681 -1
--1;
-#X text 191 78 start;
-#X text 283 77 stop;
-#X msg 39 188 0;
-#X msg 210 192 0;
-#X msg 423 190 stop;
-#X msg 378 190 0;
-#X obj 404 229 thread2 50;
-#X obj 232 229 thread2 15;
-#X obj 66 228 thread2 3;
-#X msg 133 188 text;
-#X msg 302 192 text;
-#X msg 470 190 text;
-#X obj 16 8 cnv 15 550 40 empty empty thread2 10 22 0 24 -260818 -1
-0;
-#X text 173 29 http://grrrr.org;
-#X obj 65 264 nbx 5 16 -1e+037 1e+037 0 0 empty empty empty 0 -6 0
-12 -228992 -1 -1 0 256;
-#X obj 231 265 nbx 5 16 -1e+037 1e+037 0 0 empty empty empty 0 -6 0
-12 -228992 -1 -1 0 256;
-#X obj 403 267 nbx 5 16 -1e+037 1e+037 0 0 empty empty empty 0 -6 0
-12 -228992 -1 -1 0 256;
-#X text 173 11 flext tutorial \, (C)2002-2006 Thomas Grill;
-#X connect 0 0 12 0;
-#X connect 1 0 11 0;
-#X connect 2 0 6 0;
-#X connect 2 0 7 0;
-#X connect 2 0 9 0;
-#X connect 3 0 0 0;
-#X connect 3 0 1 0;
-#X connect 3 0 8 0;
-#X connect 6 0 12 0;
-#X connect 7 0 11 0;
-#X connect 8 0 10 0;
-#X connect 9 0 10 0;
-#X connect 10 0 20 0;
-#X connect 11 0 19 0;
-#X connect 12 0 18 0;
-#X connect 13 0 12 0;
-#X connect 14 0 11 0;
-#X connect 15 0 10 0;
diff --git a/externals/grill/flext/tutorial/pd/ex-timer1.pd b/externals/grill/flext/tutorial/pd/ex-timer1.pd
deleted file mode 100644
index 303d8f26..00000000
--- a/externals/grill/flext/tutorial/pd/ex-timer1.pd
+++ /dev/null
@@ -1,62 +0,0 @@
-#N canvas 110 259 825 368 12;
-#X obj 16 8 cnv 15 550 40 empty empty timer1 10 22 0 24 -260818 -1
-0;
-#X text 167 30 http://grrrr.org;
-#X text 167 10 flext tutorial \, (C)2003-2006 Thomas Grill;
-#X obj 241 241 timer1;
-#X obj 241 267 print;
-#X msg 105 104 resetA;
-#X msg 176 104 resetB;
-#X msg 260 147 oneshotA \$1;
-#X obj 259 124 f 100;
-#X obj 303 107 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10
--262144 -1 -1 0 256;
-#X obj 260 105 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
--1;
-#X obj 382 124 f 100;
-#X obj 426 107 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10
--262144 -1 -1 0 256;
-#X obj 383 105 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
--1;
-#X obj 515 124 f 100;
-#X obj 559 107 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10
--262144 -1 -1 0 256;
-#X obj 516 105 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
--1;
-#X obj 652 123 f 100;
-#X obj 696 106 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10
--262144 -1 -1 0 256;
-#X obj 653 104 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
--1;
-#X msg 383 147 oneshotB \$1;
-#X msg 516 147 periodicA \$1;
-#X msg 653 146 periodicB \$1;
-#X text 119 82 reset timer;
-#X text 275 81 trigger single event;
-#X text 523 80 trigger periodic event;
-#X msg 30 161 gettime;
-#X msg 30 191 getostime;
-#X text 106 162 get time;
-#X text 127 191 get OS time;
-#X connect 3 0 4 0;
-#X connect 3 1 4 0;
-#X connect 5 0 3 0;
-#X connect 6 0 3 0;
-#X connect 7 0 3 0;
-#X connect 8 0 7 0;
-#X connect 9 0 8 1;
-#X connect 10 0 8 0;
-#X connect 11 0 20 0;
-#X connect 12 0 11 1;
-#X connect 13 0 11 0;
-#X connect 14 0 21 0;
-#X connect 15 0 14 1;
-#X connect 16 0 14 0;
-#X connect 17 0 22 0;
-#X connect 18 0 17 1;
-#X connect 19 0 17 0;
-#X connect 20 0 3 0;
-#X connect 21 0 3 0;
-#X connect 22 0 3 0;
-#X connect 26 0 3 0;
-#X connect 27 0 3 0;
diff --git a/externals/grill/flext/tutorial/readme.txt b/externals/grill/flext/tutorial/readme.txt
deleted file mode 100644
index beecb20e..00000000
--- a/externals/grill/flext/tutorial/readme.txt
+++ /dev/null
@@ -1,77 +0,0 @@
-flext - C++ layer for Max/MSP and pd (pure data) externals
-tutorial examples
-
-Copyright (c) 2001-2006 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-----------------------------------------------------------------------------
-
-These are a few examples to demonstrate some flext features.
-Contribution of examples to the package is higly appreciated!
-
-----------------------------------------------------------------------------
-
-The recommended order to go through the tutorial examples is the following:
-
-1) simple*
-2) adv*
-3) attr*
-4) timer*
-5) signal*
-6) lib*
-7) thread*
-
-and, if needed
-8) sndobj* and/or stk*
-
-if you choose to compile with SndObj support you will need the respective library
-download from: http://www.may.ie/academic/music/musictec/SndObj/main.html
-
-if you choose to compile with STK support you will need the respective package and build a library
-download from: http://ccrma-www.stanford.edu/software/stk/
-Under linux you can create such a library from the STK directory with:
-"g++ -c -pipe -I include -D __LINUX_OSS__ src/*.cpp && ar r libstk.a *.o && rm -f *.o"
-
-
-----------------------------------------------------------------------------
-
-The package should at least compile (and is tested) with the following compilers:
-
-pd - Windows:
--------------
-o Microsoft Visual C++ 6: edit "config-pd-msvc.txt" & run "build-pd-msvc.bat"
-
-o Borland C++ 5.5 (free): edit "config-pd-bcc.txt" & run "build-pd-bcc.bat"
- (no threading support for that compiler!)
-
-o Cygwin: edit "config-pd-cygwin.txt" & run "sh build-pd-cygwin.sh"
- (no threading support for that compiler!)
-
-pd - linux:
------------
-o GCC: edit "config-pd-linux.txt" & run "sh build-pd-linux.sh"
-
-pd - MacOSX:
------------
-o GCC: edit "config-pd-darwin.txt" & run "sh build-pd-darwin.sh"
-
-
-Max/MSP - MacOS 9:
-------------------
-o Metrowerks CodeWarrior V6: edit & use the several ".cw" project files
-
-You must have the following "Source Trees" defined:
-"flext" - Pointing to the flext main directory
-"Cycling74" - Pointing to the Cycling 74 SDK
-
-Max/MSP - MacOSX:
-------------------
-o Metrowerks CodeWarrior V6: edit & use the several ".cw" project files
-
-You must have the following "Source Trees" defined:
-"OS X Volume" - Pointing to your OSX boot drive
-"flext" - Pointing to the flext main directory
-"Cycling74 OSX" - Pointing to the Cycling 74 SDK for xmax
-"MP SDK" - Pointing to the Multiprocessing SDK (for threading support)
-
diff --git a/externals/grill/flext/tutorial/signal1/Makefile.am b/externals/grill/flext/tutorial/signal1/Makefile.am
deleted file mode 100644
index 857be41e..00000000
--- a/externals/grill/flext/tutorial/signal1/Makefile.am
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# automake template
-# added by tim blechmann
-#
-
-NAME = signal1
-
-BUILT_SOURCES = main.cpp
-
-EXTRA_DIST = main.cpp \
- $(NAME).mcp \
- $(NAME).vcproj
-
-CXXFLAGS = @CXXFLAGS@ \
- @OPT_FLAGS@ \
- @INCLUDEDIR@ \
- -I../../source \
- $(DEFS) \
- -DFLEXT_SHARED
-
-LDFLAGS = @DYNAMIC_LDFLAGS@ @LDFLAGS@ \
- $(patsubst %,-framework %,$(FRAMEWORKS))
-
-LIBS = @LIBS@ -lflext-pd
-
-FRAMEWORKS = @FRAMEWORKS@
-
-TARGETDIR = @TARGETDIR@
-
-TARGET =$(NAME).@EXTENSION@
-
-OBJECTS = $(patsubst %.cpp,./%.@OBJEXT@,$(BUILT_SOURCES))
-
-SYSDIR = @SYSDIR@
-
-
-# ----------------------------- targets --------------------------------
-
-all-local: $(OBJECTS)
- $(CXX) $(LDFLAGS) ./*.@OBJEXT@ $(LIBS) -o ../$(TARGETDIR)/$(TARGET)
- strip --strip-unneeded ../$(TARGETDIR)/$(TARGET)
-
-./%.@OBJEXT@ : %.cpp
- $(CXX) -c $(CXXFLAGS) $< -o $@
-
-clean-local:
- rm -f ../$(TARGETDIR)/$(TARGET)
- rm -f ./$(OBJECTS)
-
-install-exec-local:
- install ../$(TARGET) $(SYSDIR)extra
diff --git a/externals/grill/flext/tutorial/signal1/main.cpp b/externals/grill/flext/tutorial/signal1/main.cpp
deleted file mode 100644
index 3714e1f6..00000000
--- a/externals/grill/flext/tutorial/signal1/main.cpp
+++ /dev/null
@@ -1,129 +0,0 @@
-// signal1~ - a flext tutorial external written by Frank Barknecht
-//
-// This is a commented port of the pan~ example from the PD-Externals-Howto to
-// illustrate the usage of flext. You can get the original code at
-// http://iem.kug.ac.at/pd/externals-HOWTO/
-
-#include <flext.h>
-
-#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 401)
-#error You need at least flext version 0.4.1
-#endif
-
-
-// A flext dsp external ("tilde object") inherits from the class flext_dsp
-class signal1:
- public flext_dsp
-{
- // Each external that is written in C++ needs to use #defines
- // from flbase.h
- //
- // The define
- //
- // FLEXT_HEADER(NEW_CLASS, PARENT_CLASS)
- //
- // should be somewhere in your dsp file.
- // A good place is here:
-
- FLEXT_HEADER(signal1, flext_dsp)
-
- public:
- signal1():
- f_pan(0) // initialize f_pan
- {
- // The constructor of your class is responsible for
- // setting up inlets and outlets and for registering
- // inlet-methods:
- // The descriptions of the inlets and outlets are output
- // via the Max/MSP assist method (when mousing over them in edit mode).
- // PD will hopefully provide such a feature as well soon
-
- AddInSignal("left audio in"); // left audio in
- AddInSignal("right audio in"); // right audio in
- AddInFloat("panning parameter"); // 1 float in
- AddOutSignal("audio out"); // 1 audio out
-
- // Now we need to bind the handler function to our
- // panning inlet, which is inlet 2 (counting all inlets
- // from 0). We want the function "setPan" to get
- // called on incoming float messages:
-
- FLEXT_ADDMETHOD(2,setPan);
-
- // We're done constructing:
- post("-- pan~ with flext ---");
-
- } // end of constructor
-
-
- protected:
- // here we declare the virtual DSP function
- virtual void m_signal(int n, float *const *in, float *const *out);
- private:
- float f_pan; // holds our panning factor
-
- // Before we can use "setPan" as a handler, we must register this
- // function as a callback to PD or Max. This is done using the
- // FLEXT_CALLBACK* macros. There are several of them.
- //
- // FLEXT_CALLBACK_F is a shortcut, that registers a function
- // expecting one float arg (thus ending in "_F"). There are
- // other shortcuts that register other types of functions. Look
- // into flext.h. No semicolon at the end of line!!!
- FLEXT_CALLBACK_F(setPan)
-
- // Now setPan can get declared and defined here.
- void setPan(float f)
- {
- // set our private panning factor "f_pan" to the inlet
- // value float "f" in the intervall [0,1]
- f_pan = (f<0) ? 0.0f : (f>1) ? 1.0f : f ;
-
- // if you want to debug if this worked, comment out the
- // following line:
- //post("Set panning to %.2f, maybe clipped from %.2f", f_pan,f);
- } // end setPan
-}; // end of class declaration for signal1
-
-
-// Before we can run our signal1-class in PD, the object has to be registered as a
-// PD object. Otherwise it would be a simple C++-class, and what good would
-// that be for? Registering is made easy with the FLEXT_NEW_* macros defined
-// in flext.h. For tilde objects without arguments call:
-
-FLEXT_NEW_DSP("signal1~ pan~", signal1)
-// T.Grill: there are two names for the object: signal1~ as main name and pan~ as its alias
-
-// Now we define our DSP function. It gets this arguments:
-//
-// int n: length of signal vector. Loop over this for your signal processing.
-// float *const *in, float *const *out:
-// These are arrays of the signals in the objects signal inlets rsp.
-// oulets. We come to that later inside the function.
-
-void signal1::m_signal(int n, float *const *in, float *const *out)
-{
-
- const float *ins1 = in[0];
- const float *ins2 = in[1];
- // As said above "in" holds a list of the signal vectors in all inlets.
- // After these two lines, ins1 holds the signal vector ofthe first
- // inlet, index 0, and ins2 holds the signal vector of the second
- // inlet, with index 1.
-
- float *outs = out[0];
- // Now outs holds the signal vector at the one signal outlet we have.
-
- // We are now ready for the main signal loop
- while (n--)
- {
-
- // The "++" after the pointers outs, ins1 and ins2 walks us
- // through the signal vector with each n, of course. Before
- // each step we change the signal value in the outlet *outs
- // according to our panning factor "f_pan" and according to the
- // signals at the two signal inlets, *ins1 and *ins2
-
- *outs++ = (*ins1++) * (1-f_pan) + (*ins2++) * f_pan;
- }
-} // end m_signal
diff --git a/externals/grill/flext/tutorial/signal1/package.txt b/externals/grill/flext/tutorial/signal1/package.txt
deleted file mode 100644
index b4861858..00000000
--- a/externals/grill/flext/tutorial/signal1/package.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-NAME=signal1~
-SRCS=main.cpp
diff --git a/externals/grill/flext/tutorial/signal1/signal1.mcp b/externals/grill/flext/tutorial/signal1/signal1.mcp
deleted file mode 100644
index 32e82771..00000000
--- a/externals/grill/flext/tutorial/signal1/signal1.mcp
+++ /dev/null
Binary files differ
diff --git a/externals/grill/flext/tutorial/signal1/signal1.vcproj b/externals/grill/flext/tutorial/signal1/signal1.vcproj
deleted file mode 100644
index 136003b7..00000000
--- a/externals/grill/flext/tutorial/signal1/signal1.vcproj
+++ /dev/null
@@ -1,177 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="signal1"
- SccProjectName="max/flext/tutorial/signal1"
- SccAuxPath=""
- SccLocalPath="."
- SccProvider="MSSCCI:Jalindi Igloo">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Release|Win32"
- OutputDirectory=".\msvc"
- IntermediateDirectory=".\msvc"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src,..\..\source"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;PD"
- StringPooling="TRUE"
- RuntimeLibrary="4"
- EnableFunctionLevelLinking="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile=".\msvc/signal1.pch"
- AssemblerListingLocation=".\msvc/"
- ObjectFile=".\msvc/"
- ProgramDataBaseFileName=".\msvc/"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib flext-pdwin.lib"
- OutputFile="../pd-msvc/signal1~.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\pd-msvc"
- ProgramDatabaseFile=".\msvc/signal1~.pdb"
- ImportLibrary=".\msvc/signal1~.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\msvc/signal1.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory=".\msvc-debug"
- IntermediateDirectory=".\msvc-debug"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src,..\..\source"
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;PD"
- BasicRuntimeChecks="3"
- RuntimeLibrary="5"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile=".\msvc-debug/signal1.pch"
- AssemblerListingLocation=".\msvc-debug/"
- ObjectFile=".\msvc-debug/"
- ProgramDataBaseFileName=".\msvc-debug/"
- BrowseInformation="1"
- BrowseInformationFile=".\msvc-debug/"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="4"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib flext_d-pdwin.lib"
- OutputFile="msvc-debug/signal1~.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\pd-msvc"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile=".\msvc-debug/signal1~.pdb"
- ImportLibrary=".\msvc-debug/signal1~.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="_DEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\msvc-debug/signal1.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath="main.cpp">
- <FileConfiguration
- Name="Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;PD;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;PD;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/externals/grill/flext/tutorial/signal2/Makefile.am b/externals/grill/flext/tutorial/signal2/Makefile.am
deleted file mode 100644
index 6aaf483d..00000000
--- a/externals/grill/flext/tutorial/signal2/Makefile.am
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# automake template
-# added by tim blechmann
-#
-
-NAME = signal2
-
-BUILT_SOURCES = main.cpp
-
-EXTRA_DIST = main.cpp \
- $(NAME).mcp \
- $(NAME).vcproj
-
-CXXFLAGS = @CXXFLAGS@ \
- @OPT_FLAGS@ \
- @INCLUDEDIR@ \
- -I../../source \
- $(DEFS) \
- -DFLEXT_SHARED
-
-LDFLAGS = @DYNAMIC_LDFLAGS@ @LDFLAGS@ \
- $(patsubst %,-framework %,$(FRAMEWORKS))
-
-LIBS = @LIBS@ -lflext-pd
-
-FRAMEWORKS = @FRAMEWORKS@
-
-TARGETDIR = @TARGETDIR@
-
-TARGET =$(NAME).@EXTENSION@
-
-OBJECTS = $(patsubst %.cpp,./%.@OBJEXT@,$(BUILT_SOURCES))
-
-SYSDIR = @SYSDIR@
-
-
-# ----------------------------- targets --------------------------------
-
-all-local: $(OBJECTS)
- $(CXX) $(LDFLAGS) ./*.@OBJEXT@ $(LIBS) -o ../$(TARGETDIR)/$(TARGET)
- strip --strip-unneeded ../$(TARGETDIR)/$(TARGET)
-
-./%.@OBJEXT@ : %.cpp
- $(CXX) -c $(CXXFLAGS) $< -o $@
-
-clean-local:
- rm -f ../$(TARGETDIR)/$(TARGET)
- rm -f ./$(OBJECTS)
-
-install-exec-local:
- install ../$(TARGET) $(SYSDIR)extra
diff --git a/externals/grill/flext/tutorial/signal2/main.cpp b/externals/grill/flext/tutorial/signal2/main.cpp
deleted file mode 100644
index 7793bb00..00000000
--- a/externals/grill/flext/tutorial/signal2/main.cpp
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
-flext tutorial - signal 2
-
-Copyright (c) 2002,2003 Thomas Grill (xovo@gmx.net)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
--------------------------------------------------------------------------
-
-This is an object showing varous parameters of the pd audio system
-*/
-
-// include flext header
-#include <flext.h>
-
-// check for appropriate flext version
-#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 400)
-#error You need at least flext version 0.4.0
-#endif
-
-
-// define the class that stands for a pd/Max object
-// Attention: the class name must be the same as the object name!! (without the ~)
-
-class signal2:
- // inherit from flext dsp class
- public flext_dsp
-{
- // obligatory flext header (class name,base class name)
- FLEXT_HEADER(signal2,flext_dsp)
-
-public:
- // constructor
- signal2();
-
-protected:
- void m_bang(); // method for bang
-
-private:
- FLEXT_CALLBACK(m_bang) // callback for method "m_bang"
-};
-
-// instantiate the class
-FLEXT_NEW_DSP("signal2~",signal2)
-
-
-signal2::signal2()
-{
- // define inlets:
- // first inlet must always by of type anything (or signal for dsp objects)
- AddInAnything(); // add one inlet for any message
-
- // add outlets for sample rate, block size, audio in and out channel count
- AddOutFloat(1);
- AddOutInt(3); // although PD knows no int type, flext does!
-
- // register methods
- FLEXT_ADDBANG(0,m_bang); // register method "m_bang" for bang message into inlet 0
-}
-
-void signal2::m_bang()
-{
- // output various parameters of the pd audio system
- ToOutFloat(0,Samplerate());
- ToOutInt(1,Blocksize());
- ToOutInt(2,CntInSig());
- ToOutInt(3,CntOutSig());
-}
-
diff --git a/externals/grill/flext/tutorial/signal2/package.txt b/externals/grill/flext/tutorial/signal2/package.txt
deleted file mode 100644
index a258255c..00000000
--- a/externals/grill/flext/tutorial/signal2/package.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-NAME=signal2~
-SRCS=main.cpp
diff --git a/externals/grill/flext/tutorial/signal2/signal2.mcp b/externals/grill/flext/tutorial/signal2/signal2.mcp
deleted file mode 100644
index 260893e2..00000000
--- a/externals/grill/flext/tutorial/signal2/signal2.mcp
+++ /dev/null
Binary files differ
diff --git a/externals/grill/flext/tutorial/signal2/signal2.vcproj b/externals/grill/flext/tutorial/signal2/signal2.vcproj
deleted file mode 100644
index 4923b1a7..00000000
--- a/externals/grill/flext/tutorial/signal2/signal2.vcproj
+++ /dev/null
@@ -1,177 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="signal2"
- SccProjectName="max/flext/tutorial/signal2"
- SccAuxPath=""
- SccLocalPath="."
- SccProvider="MSSCCI:Jalindi Igloo">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory=".\msvc-debug"
- IntermediateDirectory=".\msvc-debug"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src,..\..\source"
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;PD"
- BasicRuntimeChecks="3"
- RuntimeLibrary="5"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile=".\msvc-debug/signal2.pch"
- AssemblerListingLocation=".\msvc-debug/"
- ObjectFile=".\msvc-debug/"
- ProgramDataBaseFileName=".\msvc-debug/"
- BrowseInformation="1"
- BrowseInformationFile=".\msvc-debug/"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="4"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib flext_d-pdwin.lib"
- OutputFile="msvc-debug/signal2~.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\pd-msvc"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile=".\msvc-debug/signal2~.pdb"
- ImportLibrary=".\msvc-debug/signal2~.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="_DEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\msvc-debug/signal2.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory=".\msvc"
- IntermediateDirectory=".\msvc"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src,..\..\source"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;PD"
- StringPooling="TRUE"
- RuntimeLibrary="4"
- EnableFunctionLevelLinking="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile=".\msvc/signal2.pch"
- AssemblerListingLocation=".\msvc/"
- ObjectFile=".\msvc/"
- ProgramDataBaseFileName=".\msvc/"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib flext-pdwin.lib"
- OutputFile="../pd-msvc/signal2~.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\pd-msvc"
- ProgramDatabaseFile=".\msvc/signal2~.pdb"
- ImportLibrary=".\msvc/signal2~.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\msvc/signal2.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath="main.cpp">
- <FileConfiguration
- Name="Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;PD;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;PD;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/externals/grill/flext/tutorial/simple1/Makefile.am b/externals/grill/flext/tutorial/simple1/Makefile.am
deleted file mode 100644
index d918a68d..00000000
--- a/externals/grill/flext/tutorial/simple1/Makefile.am
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# automake template
-# added by tim blechmann
-#
-
-NAME = simple1
-
-BUILT_SOURCES = main.cpp
-
-EXTRA_DIST = main.cpp \
- $(NAME).mcp \
- $(NAME).vcproj
-
-CXXFLAGS = @CXXFLAGS@ \
- @OPT_FLAGS@ \
- @INCLUDEDIR@ \
- -I../../source \
- $(DEFS) \
- -DFLEXT_SHARED
-
-LDFLAGS = @DYNAMIC_LDFLAGS@ @LDFLAGS@ \
- $(patsubst %,-framework %,$(FRAMEWORKS))
-
-LIBS = @LIBS@ -lflext-pd
-
-FRAMEWORKS = @FRAMEWORKS@
-
-TARGETDIR = @TARGETDIR@
-
-TARGET =$(NAME).@EXTENSION@
-
-OBJECTS = $(patsubst %.cpp,./%.@OBJEXT@,$(BUILT_SOURCES))
-
-SYSDIR = @SYSDIR@
-
-
-# ----------------------------- targets --------------------------------
-
-all-local: $(OBJECTS)
- $(CXX) $(LDFLAGS) ./*.@OBJEXT@ $(LIBS) -o ../$(TARGETDIR)/$(TARGET)
- strip --strip-unneeded ../$(TARGETDIR)/$(TARGET)
-
-./%.@OBJEXT@ : %.cpp
- $(CXX) -c $(CXXFLAGS) $< -o $@
-
-clean-local:
- rm -f ../$(TARGETDIR)/$(TARGET)
- rm -f ./$(OBJECTS)
-
-install-exec-local:
- install ../$(TARGET) $(SYSDIR)extra
diff --git a/externals/grill/flext/tutorial/simple1/main.cpp b/externals/grill/flext/tutorial/simple1/main.cpp
deleted file mode 100644
index ed3c3ea3..00000000
--- a/externals/grill/flext/tutorial/simple1/main.cpp
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
-flext tutorial - simple 1
-
-Copyright (c) 2002,2003 Thomas Grill (xovo@gmx.net)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
--------------------------------------------------------------------------
-
-This is an example of a simple object doing a float inversion
-*/
-
-// include flext header
-#include <flext.h>
-
-// check for appropriate flext version
-#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 400)
-#error You need at least flext version 0.4.0
-#endif
-
-
-// define the class that stands for a pd/Max object
-// Attention: the class name must be the same as the object name!! (without an eventual ~)
-// Special names are possible with the usage of libraries (see the lib1 tutorial example)
-
-class simple1:
- // inherit from basic flext class
- public flext_base
-{
- // obligatory flext header (class name,base class name)
- FLEXT_HEADER(simple1,flext_base)
-
-public:
- // constructor
- simple1()
- {
- // define inlets:
- // first inlet must always be of type anything (or signal for dsp objects)
- AddInAnything(); // add one inlet for any message
-
- // define outlets:
- AddOutFloat(); // add one float outlet (has index 0)
-
- // register methods
- FLEXT_ADDMETHOD(0,m_float); // register method (for float messages) "m_float" for inlet 0
- }
-
-protected:
- void m_float(float input) // method for float values
- {
- float result;
-
- if(input == 0) {
- // special case 0
- post("%s - zero can't be inverted!",thisName());
- result = 0;
- }
- else
- // normal case
- result = 1/input;
-
- // output value to outlet
- ToOutFloat(0,result); // (0 stands for the outlet index 0 - the leftmost outlet)
- }
-
-private:
- FLEXT_CALLBACK_1(m_float,float) // callback for method "m_float" (with one float argument)
-};
-
-// instantiate the class
-FLEXT_NEW("simple1",simple1)
-
-
diff --git a/externals/grill/flext/tutorial/simple1/package.txt b/externals/grill/flext/tutorial/simple1/package.txt
deleted file mode 100644
index 8a3da416..00000000
--- a/externals/grill/flext/tutorial/simple1/package.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-NAME=simple1
-SRCS=main.cpp
diff --git a/externals/grill/flext/tutorial/simple1/simple1.mcp b/externals/grill/flext/tutorial/simple1/simple1.mcp
deleted file mode 100755
index 6e778ba5..00000000
--- a/externals/grill/flext/tutorial/simple1/simple1.mcp
+++ /dev/null
Binary files differ
diff --git a/externals/grill/flext/tutorial/simple1/simple1.vcproj b/externals/grill/flext/tutorial/simple1/simple1.vcproj
deleted file mode 100644
index e6ad7d68..00000000
--- a/externals/grill/flext/tutorial/simple1/simple1.vcproj
+++ /dev/null
@@ -1,177 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="simple1"
- SccProjectName="simple1"
- SccAuxPath=""
- SccLocalPath="."
- SccProvider="MSSCCI:Jalindi Igloo">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory=".\msvc-debug"
- IntermediateDirectory=".\msvc-debug"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src,..\..\source"
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;PD"
- BasicRuntimeChecks="3"
- RuntimeLibrary="5"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile=".\msvc-debug/simple1.pch"
- AssemblerListingLocation=".\msvc-debug/"
- ObjectFile=".\msvc-debug/"
- ProgramDataBaseFileName=".\msvc-debug/"
- BrowseInformation="1"
- BrowseInformationFile=".\msvc-debug/"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="4"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib flext_d-pdwin.lib"
- OutputFile=".\msvc-debug/simple1.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\pd-msvc"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile=".\msvc-debug/simple1.pdb"
- ImportLibrary=".\msvc-debug/simple1.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="_DEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\msvc-debug/simple1.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory=".\msvc"
- IntermediateDirectory=".\msvc"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src,..\..\source"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;PD"
- StringPooling="TRUE"
- RuntimeLibrary="4"
- EnableFunctionLevelLinking="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile=".\msvc/simple1.pch"
- AssemblerListingLocation=".\msvc/"
- ObjectFile=".\msvc/"
- ProgramDataBaseFileName=".\msvc/"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib flext-pdwin.lib"
- OutputFile="../pd-msvc/simple1.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\pd-msvc"
- ProgramDatabaseFile=".\msvc/simple1.pdb"
- ImportLibrary=".\msvc/simple1.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\msvc/simple1.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath="main.cpp">
- <FileConfiguration
- Name="Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;PD;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;PD;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/externals/grill/flext/tutorial/simple2/Makefile.am b/externals/grill/flext/tutorial/simple2/Makefile.am
deleted file mode 100644
index 696c144b..00000000
--- a/externals/grill/flext/tutorial/simple2/Makefile.am
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# automake template
-# added by tim blechmann
-#
-
-NAME = simple2
-
-BUILT_SOURCES = main.cpp
-
-EXTRA_DIST = main.cpp \
- $(NAME).mcp \
- $(NAME).vcproj
-
-CXXFLAGS = @CXXFLAGS@ \
- @OPT_FLAGS@ \
- @INCLUDEDIR@ \
- -I../../source \
- $(DEFS) \
- -DFLEXT_SHARED
-
-LDFLAGS = @DYNAMIC_LDFLAGS@ @LDFLAGS@ \
- $(patsubst %,-framework %,$(FRAMEWORKS))
-
-LIBS = @LIBS@ -lflext-pd
-
-FRAMEWORKS = @FRAMEWORKS@
-
-TARGETDIR = @TARGETDIR@
-
-TARGET =$(NAME).@EXTENSION@
-
-OBJECTS = $(patsubst %.cpp,./%.@OBJEXT@,$(BUILT_SOURCES))
-
-SYSDIR = @SYSDIR@
-
-
-# ----------------------------- targets --------------------------------
-
-all-local: $(OBJECTS)
- $(CXX) $(LDFLAGS) ./*.@OBJEXT@ $(LIBS) -o ../$(TARGETDIR)/$(TARGET)
- strip --strip-unneeded ../$(TARGETDIR)/$(TARGET)
-
-./%.@OBJEXT@ : %.cpp
- $(CXX) -c $(CXXFLAGS) $< -o $@
-
-clean-local:
- rm -f ../$(TARGETDIR)/$(TARGET)
- rm -f ./$(OBJECTS)
-
-install-exec-local:
- install ../$(TARGET) $(SYSDIR)extra
diff --git a/externals/grill/flext/tutorial/simple2/main.cpp b/externals/grill/flext/tutorial/simple2/main.cpp
deleted file mode 100644
index 894ceb47..00000000
--- a/externals/grill/flext/tutorial/simple2/main.cpp
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
-flext tutorial - simple 2
-
-Copyright (c) 2002,2003 Thomas Grill (xovo@gmx.net)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
--------------------------------------------------------------------------
-
-This is an example of a simple object doing a float addition
-*/
-
-// include flext header
-#include <flext.h>
-
-// check for appropriate flext version
-#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 400)
-#error You need at least flext version 0.4.0
-#endif
-
-
-class simple2:
- public flext_base
-{
- FLEXT_HEADER(simple2,flext_base)
-
-public:
- // constructor with float argument
- simple2(float init);
-
-protected:
- void m_float1(float f);
- void m_float2(float f);
-
- // stored argument of right inlet
- float arg;
-
-private:
- // FLEXT_CALLBACK_F(...) is a shortcut for FLEXT_CALLBACK_1(...,float)
- FLEXT_CALLBACK_F(m_float1) // callback for method "m_float1" (with one float argument)
- FLEXT_CALLBACK_F(m_float2) // callback for method "m_float2" (with one float argument)
-};
-
-// instantiate the class (constructor has one float argument)
-FLEXT_NEW_1("simple2",simple2,float)
-
-
-simple2::simple2(float init):
- arg(init) // store argument
-{
- // define inlets
- AddInAnything(); // first inlet of type anything (index 0)
- AddInFloat(); // additional float inlet (index 1)
-
- // define outlets
- AddOutFloat(); // one float outlet (has index 0)
-
- // register methods
- FLEXT_ADDMETHOD(0,m_float1); // register method (for floats) "m_float1" for inlet 0
- FLEXT_ADDMETHOD(1,m_float2); // register method (for floats) "m_float2" for inlet 1
-}
-
-void simple2::m_float1(float f)
-{
- float res;
- res = arg+f;
-
- // output value to outlet
- ToOutFloat(0,res); // (0 stands for the outlet index 0)
-}
-
-void simple2::m_float2(float f)
-{
- // store float
- arg = f;
-}
-
diff --git a/externals/grill/flext/tutorial/simple2/package.txt b/externals/grill/flext/tutorial/simple2/package.txt
deleted file mode 100644
index fd8b2a25..00000000
--- a/externals/grill/flext/tutorial/simple2/package.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-NAME=simple2
-SRCS=main.cpp
diff --git a/externals/grill/flext/tutorial/simple2/simple2.mcp b/externals/grill/flext/tutorial/simple2/simple2.mcp
deleted file mode 100755
index 6ada3deb..00000000
--- a/externals/grill/flext/tutorial/simple2/simple2.mcp
+++ /dev/null
Binary files differ
diff --git a/externals/grill/flext/tutorial/simple2/simple2.vcproj b/externals/grill/flext/tutorial/simple2/simple2.vcproj
deleted file mode 100644
index 5402924e..00000000
--- a/externals/grill/flext/tutorial/simple2/simple2.vcproj
+++ /dev/null
@@ -1,176 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="simple2"
- SccProjectName="simple2"
- SccAuxPath=""
- SccLocalPath="."
- SccProvider="MSSCCI:Jalindi Igloo">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory=".\msvc-debug"
- IntermediateDirectory=".\msvc-debug"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src,..\..\source"
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;PD"
- BasicRuntimeChecks="3"
- RuntimeLibrary="5"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile=".\msvc-debug/simple2.pch"
- AssemblerListingLocation=".\msvc-debug/"
- ObjectFile=".\msvc-debug/"
- ProgramDataBaseFileName=".\msvc-debug/"
- BrowseInformation="1"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="4"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib flext_d-pdwin.lib"
- OutputFile=".\msvc-debug/simple2.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\pd-msvc"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile=".\msvc-debug/simple2.pdb"
- ImportLibrary=".\msvc-debug/simple2.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="_DEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\msvc-debug/simple2.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory=".\msvc"
- IntermediateDirectory=".\msvc"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src,..\..\source"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;PD"
- StringPooling="TRUE"
- RuntimeLibrary="4"
- EnableFunctionLevelLinking="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile=".\msvc/simple2.pch"
- AssemblerListingLocation=".\msvc/"
- ObjectFile=".\msvc/"
- ProgramDataBaseFileName=".\msvc/"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib flext-pdwin.lib"
- OutputFile="../pd-msvc/simple2.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\pd-msvc"
- ProgramDatabaseFile=".\msvc/simple2.pdb"
- ImportLibrary=".\msvc/simple2.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\msvc/simple2.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath="main.cpp">
- <FileConfiguration
- Name="Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;PD;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;PD;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/externals/grill/flext/tutorial/simple3/Makefile.am b/externals/grill/flext/tutorial/simple3/Makefile.am
deleted file mode 100644
index f4436562..00000000
--- a/externals/grill/flext/tutorial/simple3/Makefile.am
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# automake template
-# added by tim blechmann
-#
-
-NAME = simple3
-
-BUILT_SOURCES = main.cpp
-
-EXTRA_DIST = main.cpp \
- $(NAME).mcp \
- $(NAME).vcproj
-
-CXXFLAGS = @CXXFLAGS@ \
- @OPT_FLAGS@ \
- @INCLUDEDIR@ \
- -I../../source \
- $(DEFS) \
- -DFLEXT_SHARED
-
-LDFLAGS = @DYNAMIC_LDFLAGS@ @LDFLAGS@ \
- $(patsubst %,-framework %,$(FRAMEWORKS))
-
-LIBS = @LIBS@ -lflext-pd
-
-FRAMEWORKS = @FRAMEWORKS@
-
-TARGETDIR = @TARGETDIR@
-
-TARGET =$(NAME).@EXTENSION@
-
-OBJECTS = $(patsubst %.cpp,./%.@OBJEXT@,$(BUILT_SOURCES))
-
-SYSDIR = @SYSDIR@
-
-
-# ----------------------------- targets --------------------------------
-
-all-local: $(OBJECTS)
- $(CXX) $(LDFLAGS) ./*.@OBJEXT@ $(LIBS) -o ../$(TARGETDIR)/$(TARGET)
- strip --strip-unneeded ../$(TARGETDIR)/$(TARGET)
-
-./%.@OBJEXT@ : %.cpp
- $(CXX) -c $(CXXFLAGS) $< -o $@
-
-clean-local:
- rm -f ../$(TARGETDIR)/$(TARGET)
- rm -f ./$(OBJECTS)
-
-install-exec-local:
- install ../$(TARGET) $(SYSDIR)extra
diff --git a/externals/grill/flext/tutorial/simple3/main.cpp b/externals/grill/flext/tutorial/simple3/main.cpp
deleted file mode 100644
index d1630e77..00000000
--- a/externals/grill/flext/tutorial/simple3/main.cpp
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
-flext tutorial - simple 3
-
-Copyright (c) 2002-2006 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
--------------------------------------------------------------------------
-
-This is an example of an object digesting several "tagged" messages
-
-*/
-
-// include flext header
-#include <flext.h>
-
-// check for appropriate flext version
-#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 500)
-#error You need at least flext version 0.5.0
-#endif
-
-class simple3:
- public flext_base
-{
- FLEXT_HEADER(simple3,flext_base)
-
-public:
- // constructor with no arguments
- simple3();
-
-protected:
- void m_tag();
- void m_tag_and_int(int i);
- void m_sym(t_symbol *s);
-
- // override default flext help function
- void m_help();
-
-private:
-
- FLEXT_CALLBACK(m_tag) // callback for method "m_tag" (no arguments)
- FLEXT_CALLBACK_I(m_tag_and_int) // callback for method "m_tag_and_int" (int arguments)
- FLEXT_CALLBACK_S(m_sym) // callback for method "m_sym" (with one symbol argument)
-
- FLEXT_CALLBACK(m_help) // callback for method "m_help" (no arguments)
-};
-
-// instantiate the class (constructor takes no arguments)
-FLEXT_NEW("simple3",simple3)
-
-
-simple3::simple3()
-{
- // define inlets
- AddInAnything(); // add inlet of type anything (index 0)
-
- // register methods
- FLEXT_ADDMETHOD_(0,"born",m_tag); // register method for tag "born"
- FLEXT_ADDMETHOD_(0,"to",m_tag); // register method for tag "to"
- FLEXT_ADDMETHOD_(0,"hula",m_tag); // register method for tag "hula"
- FLEXT_ADDMETHOD_I(0,"hula",m_tag_and_int); // register method for tag "hula" and int argument
-
- FLEXT_ADDMETHOD(0,m_sym); // register method for all other symbols
-
- FLEXT_ADDMETHOD_(0,"help",m_help); // register method for "help" message
-}
-
-void simple3::m_tag()
-{
- post("tag recognized");
-}
-
-void simple3::m_tag_and_int(int i)
-{
- post("tag recognized (has int arg: %i)",i);
-}
-
-void simple3::m_sym(t_symbol *s)
-{
- post("symbol: %s",GetString(s));
-}
-
-
-void simple3::m_help()
-{
- // post a help message
- // thisName() returns a char * for the object name
- post("%s - example for tagged messages",thisName());
-}
-
-
diff --git a/externals/grill/flext/tutorial/simple3/package.txt b/externals/grill/flext/tutorial/simple3/package.txt
deleted file mode 100644
index acfca5e2..00000000
--- a/externals/grill/flext/tutorial/simple3/package.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-NAME=simple3
-SRCS=main.cpp
diff --git a/externals/grill/flext/tutorial/simple3/simple3.mcp b/externals/grill/flext/tutorial/simple3/simple3.mcp
deleted file mode 100644
index bda7a203..00000000
--- a/externals/grill/flext/tutorial/simple3/simple3.mcp
+++ /dev/null
Binary files differ
diff --git a/externals/grill/flext/tutorial/simple3/simple3.vcproj b/externals/grill/flext/tutorial/simple3/simple3.vcproj
deleted file mode 100644
index cfb4fc08..00000000
--- a/externals/grill/flext/tutorial/simple3/simple3.vcproj
+++ /dev/null
@@ -1,176 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="simple3"
- SccProjectName="simple3"
- SccAuxPath=""
- SccLocalPath="."
- SccProvider="MSSCCI:Jalindi Igloo">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Release|Win32"
- OutputDirectory=".\msvc"
- IntermediateDirectory=".\msvc"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src,..\..\source"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;PD"
- StringPooling="TRUE"
- RuntimeLibrary="4"
- EnableFunctionLevelLinking="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile=".\msvc/simple3.pch"
- AssemblerListingLocation=".\msvc/"
- ObjectFile=".\msvc/"
- ProgramDataBaseFileName=".\msvc/"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib flext-pdwin.lib"
- OutputFile="../pd-msvc/simple3.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\pd-msvc"
- ProgramDatabaseFile=".\msvc/simple3.pdb"
- ImportLibrary=".\msvc/simple3.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\msvc/simple3.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory=".\msvc-debug"
- IntermediateDirectory=".\msvc-debug"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src,..\..\source"
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;PD"
- BasicRuntimeChecks="3"
- RuntimeLibrary="5"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile=".\msvc-debug/simple3.pch"
- AssemblerListingLocation=".\msvc-debug/"
- ObjectFile=".\msvc-debug/"
- ProgramDataBaseFileName=".\msvc-debug/"
- BrowseInformation="1"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="4"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib flext_d-pdwin.lib"
- OutputFile=".\msvc-debug/simple3.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\pd-msvc"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile=".\msvc-debug/simple3.pdb"
- ImportLibrary=".\msvc-debug/simple3.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="_DEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\msvc-debug/simple3.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath="main.cpp">
- <FileConfiguration
- Name="Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;PD;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;PD;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/externals/grill/flext/tutorial/sndobj1/Makefile.am b/externals/grill/flext/tutorial/sndobj1/Makefile.am
deleted file mode 100644
index 40dcd384..00000000
--- a/externals/grill/flext/tutorial/sndobj1/Makefile.am
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# automake template
-# added by tim blechmann
-#
-
-NAME = sndobj1
-
-BUILT_SOURCES = main.cpp
-
-EXTRA_DIST = main.cpp \
- $(NAME).mcp \
- $(NAME).vcproj
-
-CXXFLAGS = @CXXFLAGS@ \
- @OPT_FLAGS@ \
- @INCLUDEDIR@ \
- -I../../source \
- $(DEFS) \
- -DFLEXT_SHARED
-
-LDFLAGS = @DYNAMIC_LDFLAGS@ @LDFLAGS@ \
- $(patsubst %,-framework %,$(FRAMEWORKS))
-
-LIBS = @LIBS@ -lflext-pd
-
-FRAMEWORKS = @FRAMEWORKS@
-
-TARGETDIR = @TARGETDIR@
-
-TARGET =$(NAME).@EXTENSION@
-
-OBJECTS = $(patsubst %.cpp,./%.@OBJEXT@,$(BUILT_SOURCES))
-
-SYSDIR = @SYSDIR@
-
-
-# ----------------------------- targets --------------------------------
-
-all-local: $(OBJECTS)
- $(CXX) $(LDFLAGS) ./*.@OBJEXT@ $(LIBS) -o ../$(TARGETDIR)/$(TARGET)
- strip --strip-unneeded ../$(TARGETDIR)/$(TARGET)
-
-./%.@OBJEXT@ : %.cpp
- $(CXX) -c $(CXXFLAGS) $< -o $@
-
-clean-local:
- rm -f ../$(TARGETDIR)/$(TARGET)
- rm -f ./$(OBJECTS)
-
-install-exec-local:
- install ../$(TARGET) $(SYSDIR)extra
diff --git a/externals/grill/flext/tutorial/sndobj1/main.cpp b/externals/grill/flext/tutorial/sndobj1/main.cpp
deleted file mode 100644
index d5587c73..00000000
--- a/externals/grill/flext/tutorial/sndobj1/main.cpp
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
-flext tutorial - sndobj 1
-
-Copyright (c) 2002-2006 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
--------------------------------------------------------------------------
-
-This is an example of an external using the SndObj library.
-See http://www.may.ie/academic/music/musictec/SndObj/
-
-The SndObj library should be compiled multithreaded.
-
-This external features simple stereo pitch shifting.
-
-*/
-
-#define FLEXT_ATTRIBUTES 1
-
-#include <flsndobj.h>
-
-#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 401)
-#error You need at least flext version 0.4.1 with sndobj support
-#endif
-
-
-class sndobj1:
- public flext_sndobj
-{
- FLEXT_HEADER_S(sndobj1,flext_sndobj,Setup)
-
-public:
- sndobj1();
-
- // these are obligatory!
- virtual bool NewObjs();
- virtual void FreeObjs();
- virtual void ProcessObjs();
-
- // space for a few sndobjs
- Pitch *obj1,*obj2;
-
- float sh1,sh2;
-
-private:
- static void Setup(t_classid c);
-
- FLEXT_ATTRVAR_F(sh1)
- FLEXT_ATTRVAR_F(sh2)
-};
-
-FLEXT_NEW_DSP("sndobj1~",sndobj1)
-
-
-sndobj1::sndobj1():
- sh1(1),sh2(1),
- obj1(NULL),obj2(NULL)
-{
- AddInSignal(2); // audio ins
- AddOutSignal(2); // audio outs
-}
-
-void sndobj1::Setup(t_classid c)
-{
- FLEXT_CADDATTR_VAR1(c,"shL",sh1);
- FLEXT_CADDATTR_VAR1(c,"shR",sh2);
-}
-
-// construct needed SndObjs
-bool sndobj1::NewObjs()
-{
- // set up objects
- obj1 = new Pitch(.1f,&InObj(0),sh1,Blocksize(),Samplerate());
- obj2 = new Pitch(.1f,&InObj(1),sh2,Blocksize(),Samplerate());
- return true;
-}
-
-// destroy the SndObjs
-void sndobj1::FreeObjs()
-{
- if(obj1) delete obj1;
- if(obj2) delete obj2;
-}
-
-// this is called on every DSP block
-void sndobj1::ProcessObjs()
-{
- // set current pitch shift
- obj1->SetPitch(sh1);
- obj2->SetPitch(sh2);
-
- // do processing here!!
- obj1->DoProcess();
- obj2->DoProcess();
-
- // output
- *obj1 >> OutObj(0);
- *obj2 >> OutObj(1);
-}
-
diff --git a/externals/grill/flext/tutorial/sndobj1/package.txt b/externals/grill/flext/tutorial/sndobj1/package.txt
deleted file mode 100644
index 21948caa..00000000
--- a/externals/grill/flext/tutorial/sndobj1/package.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-NAME=sndobj1~
-SRCS=main.cpp
diff --git a/externals/grill/flext/tutorial/sndobj1/sndobj1.mcp b/externals/grill/flext/tutorial/sndobj1/sndobj1.mcp
deleted file mode 100644
index 8385296a..00000000
--- a/externals/grill/flext/tutorial/sndobj1/sndobj1.mcp
+++ /dev/null
Binary files differ
diff --git a/externals/grill/flext/tutorial/sndobj1/sndobj1.vcproj b/externals/grill/flext/tutorial/sndobj1/sndobj1.vcproj
deleted file mode 100644
index 013442b4..00000000
--- a/externals/grill/flext/tutorial/sndobj1/sndobj1.vcproj
+++ /dev/null
@@ -1,177 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="sndobj1"
- SccProjectName="sndobj1"
- SccAuxPath=""
- SccLocalPath="."
- SccProvider="MSSCCI:Jalindi Igloo">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory=".\msvc-debug"
- IntermediateDirectory=".\msvc-debug"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src,..\..\source,f:\prog\audio\sndobj\include"
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;PD"
- BasicRuntimeChecks="3"
- RuntimeLibrary="5"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile=".\msvc-debug/sndobj1.pch"
- AssemblerListingLocation=".\msvc-debug/"
- ObjectFile=".\msvc-debug/"
- ProgramDataBaseFileName=".\msvc-debug/"
- BrowseInformation="1"
- BrowseInformationFile=".\msvc-debug/"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="4"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib flext_d-pdwin.lib sndobj.lib"
- OutputFile="msvc-debug/sndobj1~.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\pd-msvc,f:\prog\audio\sndobj\lib"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile=".\msvc-debug/sndobj1~.pdb"
- ImportLibrary=".\msvc-debug/sndobj1~.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="_DEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\msvc-debug/sndobj1.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory=".\msvc"
- IntermediateDirectory=".\msvc"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src,..\..\source,f:\prog\audio\sndobj\include"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;PD"
- StringPooling="TRUE"
- RuntimeLibrary="4"
- EnableFunctionLevelLinking="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile=".\msvc/sndobj1.pch"
- AssemblerListingLocation=".\msvc/"
- ObjectFile=".\msvc/"
- ProgramDataBaseFileName=".\msvc/"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib flext-pdwin.lib sndobj.lib"
- OutputFile="../pd-msvc/sndobj1~.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\pd-msvc,f:\prog\audio\sndobj\lib"
- ProgramDatabaseFile=".\msvc/sndobj1~.pdb"
- ImportLibrary=".\msvc/sndobj1~.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\msvc/sndobj1.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath="main.cpp">
- <FileConfiguration
- Name="Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;PD;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;PD;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/externals/grill/flext/tutorial/stk1/Makefile.am b/externals/grill/flext/tutorial/stk1/Makefile.am
deleted file mode 100644
index 3449f410..00000000
--- a/externals/grill/flext/tutorial/stk1/Makefile.am
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# automake template
-# added by tim blechmann
-#
-
-NAME = stk1
-
-BUILT_SOURCES = main.cpp
-
-EXTRA_DIST = main.cpp \
- $(NAME).mcp \
- $(NAME).vcproj
-
-CXXFLAGS = @CXXFLAGS@ \
- @OPT_FLAGS@ \
- @INCLUDEDIR@ \
- -I../../source \
- $(DEFS) \
- -DFLEXT_SHARED
-
-LDFLAGS = @DYNAMIC_LDFLAGS@ @LDFLAGS@ \
- $(patsubst %,-framework %,$(FRAMEWORKS))
-
-LIBS = @LIBS@ -lflext-pd
-
-FRAMEWORKS = @FRAMEWORKS@
-
-TARGETDIR = @TARGETDIR@
-
-TARGET =$(NAME).@EXTENSION@
-
-OBJECTS = $(patsubst %.cpp,./%.@OBJEXT@,$(BUILT_SOURCES))
-
-SYSDIR = @SYSDIR@
-
-
-# ----------------------------- targets --------------------------------
-
-all-local: $(OBJECTS)
- $(CXX) $(LDFLAGS) ./*.@OBJEXT@ $(LIBS) -o ../$(TARGETDIR)/$(TARGET)
- strip --strip-unneeded ../$(TARGETDIR)/$(TARGET)
-
-./%.@OBJEXT@ : %.cpp
- $(CXX) -c $(CXXFLAGS) $< -o $@
-
-clean-local:
- rm -f ../$(TARGETDIR)/$(TARGET)
- rm -f ./$(OBJECTS)
-
-install-exec-local:
- install ../$(TARGET) $(SYSDIR)extra
diff --git a/externals/grill/flext/tutorial/stk1/main.cpp b/externals/grill/flext/tutorial/stk1/main.cpp
deleted file mode 100644
index 45f39cd9..00000000
--- a/externals/grill/flext/tutorial/stk1/main.cpp
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
-flext tutorial - stk 1
-
-Copyright (c) 2002-2006 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
--------------------------------------------------------------------------
-
-This is an example of an external using the STK ("synthesis toolkit") library.
-For STK see http://ccrma-www.stanford.edu/software/stk
-
-STK needs C++ exceptions switched on.
-
-The STK tutorial examples assume that a static stk library exists which contains all the
-source files (except rt*.cpp) of the stk/src directory.
-The library should be compiled multithreaded and with the appropriate compiler flags for
-the respective platform (e.g. __OS_WINDOWS__ and __LITTLE_ENDIAN__ for Windows)
-
-*/
-
-#include <flstk.h>
-
-#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 401)
-#error You need at least flext version 0.4.1 with STK support
-#endif
-
-#include "Noise.h"
-
-
-class stk1:
- public flext_stk
-{
- FLEXT_HEADER(stk1,flext_stk)
-
-public:
- stk1();
-
-protected:
- // these are obligatory!
- virtual bool NewObjs(); // create STK instruments
- virtual void FreeObjs(); // destroy STK instruments
- virtual void ProcessObjs(int n); // do DSP processing
-
-private:
- Noise *inst;
-};
-
-FLEXT_NEW_DSP("stk1~",stk1)
-
-
-stk1::stk1():
- inst(NULL)
-{
- AddInAnything();
- AddOutSignal();
-}
-
-
-// create STK instruments
-bool stk1::NewObjs()
-{
- bool ok = true;
-
- // set up objects
- try {
- inst = new Noise;
- }
- catch (StkError &) {
- post("%s - Noise() setup failed!",thisName());
- ok = false;
- }
- return ok;
-}
-
-
-// destroy the STK instruments
-void stk1::FreeObjs()
-{
- if(inst) delete inst;
-}
-
-// this is called on every DSP block
-void stk1::ProcessObjs(int n)
-{
- while(n--) Outlet(0).tick(inst->tick());
-}
-
-
diff --git a/externals/grill/flext/tutorial/stk1/package.txt b/externals/grill/flext/tutorial/stk1/package.txt
deleted file mode 100644
index 5f31c5af..00000000
--- a/externals/grill/flext/tutorial/stk1/package.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-NAME=stk1~
-SRCS=main.cpp
diff --git a/externals/grill/flext/tutorial/stk1/stk1.vcproj b/externals/grill/flext/tutorial/stk1/stk1.vcproj
deleted file mode 100644
index b1d9edfa..00000000
--- a/externals/grill/flext/tutorial/stk1/stk1.vcproj
+++ /dev/null
@@ -1,177 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="stk1"
- SccProjectName="stk1"
- SccAuxPath=""
- SccLocalPath="."
- SccProvider="MSSCCI:Jalindi Igloo">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory=".\msvc-debug"
- IntermediateDirectory=".\msvc-debug"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src,..\..\source,f:\prog\audio\stk\include"
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;PD;FLEXT_THREADS"
- BasicRuntimeChecks="3"
- RuntimeLibrary="1"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile=".\msvc-debug/stk1.pch"
- AssemblerListingLocation=".\msvc-debug/"
- ObjectFile=".\msvc-debug/"
- ProgramDataBaseFileName=".\msvc-debug/"
- BrowseInformation="1"
- BrowseInformationFile=".\msvc-debug/"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="4"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib pthreadVC.lib flext_td-pdwin.lib stk_d.lib"
- OutputFile="msvc-debug/stk1~.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\pd-msvc,f:\prog\audio\stk\lib"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile=".\msvc-debug/stk1~.pdb"
- ImportLibrary=".\msvc-debug/stk1~.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="_DEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\msvc-debug/stk1.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory=".\msvc"
- IntermediateDirectory=".\msvc"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src,..\..\source,f:\prog\audio\stk\include"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;PD;FLEXT_THREADS"
- StringPooling="TRUE"
- RuntimeLibrary="0"
- EnableFunctionLevelLinking="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile=".\msvc/stk1.pch"
- AssemblerListingLocation=".\msvc/"
- ObjectFile=".\msvc/"
- ProgramDataBaseFileName=".\msvc/"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib pthreadVC.lib flext_t-pdwin.lib stk.lib"
- OutputFile="../pd-msvc/stk1~.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\pd-msvc,f:\prog\audio\stk\lib"
- ProgramDatabaseFile=".\msvc/stk1~.pdb"
- ImportLibrary=".\msvc/stk1~.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\msvc/stk1.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath="main.cpp">
- <FileConfiguration
- Name="Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;PD;FLEXT_THREADS;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;PD;FLEXT_THREADS;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/externals/grill/flext/tutorial/stk2/Makefile.am b/externals/grill/flext/tutorial/stk2/Makefile.am
deleted file mode 100644
index fe13e6a3..00000000
--- a/externals/grill/flext/tutorial/stk2/Makefile.am
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# automake template
-# added by tim blechmann
-#
-
-NAME = stk2
-
-BUILT_SOURCES = main.cpp
-
-EXTRA_DIST = main.cpp \
- $(NAME).mcp \
- $(NAME).vcproj
-
-CXXFLAGS = @CXXFLAGS@ \
- @OPT_FLAGS@ \
- @INCLUDEDIR@ \
- -I../../source \
- $(DEFS) \
- -DFLEXT_SHARED
-
-LDFLAGS = @DYNAMIC_LDFLAGS@ @LDFLAGS@ \
- $(patsubst %,-framework %,$(FRAMEWORKS))
-
-LIBS = @LIBS@ -lflext-pd
-
-FRAMEWORKS = @FRAMEWORKS@
-
-TARGETDIR = @TARGETDIR@
-
-TARGET =$(NAME).@EXTENSION@
-
-OBJECTS = $(patsubst %.cpp,./%.@OBJEXT@,$(BUILT_SOURCES))
-
-SYSDIR = @SYSDIR@
-
-
-# ----------------------------- targets --------------------------------
-
-all-local: $(OBJECTS)
- $(CXX) $(LDFLAGS) ./*.@OBJEXT@ $(LIBS) -o ../$(TARGETDIR)/$(TARGET)
- strip --strip-unneeded ../$(TARGETDIR)/$(TARGET)
-
-./%.@OBJEXT@ : %.cpp
- $(CXX) -c $(CXXFLAGS) $< -o $@
-
-clean-local:
- rm -f ../$(TARGETDIR)/$(TARGET)
- rm -f ./$(OBJECTS)
-
-install-exec-local:
- install ../$(TARGET) $(SYSDIR)extra
diff --git a/externals/grill/flext/tutorial/stk2/main.cpp b/externals/grill/flext/tutorial/stk2/main.cpp
deleted file mode 100644
index 0e740f60..00000000
--- a/externals/grill/flext/tutorial/stk2/main.cpp
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
-flext tutorial - stk 2
-
-Copyright (c) 2002-2006 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
--------------------------------------------------------------------------
-
-This is an example of an external using the STK ("synthesis toolkit") library.
-For STK see http://ccrma-www.stanford.edu/software/stk
-
-STK needs C++ exceptions switched on.
-
-The STK tutorial examples assume that a static stk library exists which contains all the
-source files (except rt*.cpp) of the stk/src directory.
-The library should be compiled multithreaded and with the appropriate compiler flags for
-the respective platform (e.g. __OS_WINDOWS__ and __LITTLE_ENDIAN__ for Windows)
-
-*/
-
-#include <flstk.h>
-
-#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 401)
-#error You need at least flext version 0.4.1 with STK support
-#endif
-
-#include "PitShift.h"
-
-
-class stk2:
- public flext_stk
-{
- FLEXT_HEADER_S(stk2,flext_stk,Setup)
-
-public:
- stk2();
-
- void m_sh1(float f) { if(inst[0]) inst[0]->setShift(f); }
- void m_sh2(float f) { if(inst[1]) inst[1]->setShift(f); }
-
- // these are obligatory!
- virtual bool NewObjs(); // create STK instruments
- virtual void FreeObjs(); // destroy STK instruments
- virtual void ProcessObjs(int n); // do DSP processing
-
- PitShift *inst[2];
- MY_FLOAT *vec;
-
-private:
- static void Setup(t_classid c);
-
- FLEXT_CALLBACK_F(m_sh1)
- FLEXT_CALLBACK_F(m_sh2)
-};
-
-FLEXT_NEW_DSP("stk2~",stk2)
-
-
-stk2::stk2()
-{
- AddInSignal();
- AddOutSignal(2);
-
- inst[0] = inst[1] = NULL;
-}
-
-void stk2::Setup(t_classid c)
-{
- FLEXT_CADDMETHOD_F(c,0,"shL",m_sh1);
- FLEXT_CADDMETHOD_F(c,0,"shR",m_sh2);
-}
-
-
-// create STK instruments
-bool stk2::NewObjs()
-{
- bool ok = true;
-
- try {
- // set up objects
- for(int i = 0; i < 2; ++i)
- inst[i] = new PitShift;
-
- // reserve one signal vector too
- vec = new MY_FLOAT[Blocksize()];
- }
- catch (StkError &) {
- post("%s - Creation failed!",thisName());
- ok = false;
- }
- return ok;
-}
-
-
-// destroy the STK instruments
-void stk2::FreeObjs()
-{
- for(int i = 0; i < 2; ++i)
- if(inst[i]) delete inst[i];
- if(vec) delete[] vec;
-}
-
-// this is called on every DSP block
-void stk2::ProcessObjs(int n)
-{
- for(int i = 0; i < 2; ++i)
- Outlet(i).tick(
- inst[i]->tick(
- Inlet(0).tick(vec,n)
- ,n)
- ,n);
-}
-
-
diff --git a/externals/grill/flext/tutorial/stk2/package.txt b/externals/grill/flext/tutorial/stk2/package.txt
deleted file mode 100644
index 27b74e30..00000000
--- a/externals/grill/flext/tutorial/stk2/package.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-NAME=stk2~
-SRCS=main.cpp
diff --git a/externals/grill/flext/tutorial/stk2/stk2.vcproj b/externals/grill/flext/tutorial/stk2/stk2.vcproj
deleted file mode 100644
index 2958a08b..00000000
--- a/externals/grill/flext/tutorial/stk2/stk2.vcproj
+++ /dev/null
@@ -1,177 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="stk2"
- SccProjectName="stk2"
- SccAuxPath=""
- SccLocalPath="."
- SccProvider="MSSCCI:Jalindi Igloo">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Release|Win32"
- OutputDirectory=".\msvc"
- IntermediateDirectory=".\msvc"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src,..\..\source,f:\prog\audio\stk\include"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;PD;FLEXT_THREADS"
- StringPooling="TRUE"
- RuntimeLibrary="0"
- EnableFunctionLevelLinking="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile=".\msvc/stk2.pch"
- AssemblerListingLocation=".\msvc/"
- ObjectFile=".\msvc/"
- ProgramDataBaseFileName=".\msvc/"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib pthreadVC.lib flext_t-pdwin.lib stk.lib"
- OutputFile="../pd-msvc/stk2~.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\pd-msvc,f:\prog\audio\stk\lib"
- ProgramDatabaseFile=".\msvc/stk2~.pdb"
- ImportLibrary=".\msvc/stk2~.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\msvc/stk2.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory=".\msvc-debug"
- IntermediateDirectory=".\msvc-debug"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src,..\..\source,f:\prog\audio\stk\include"
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;PD;FLEXT_THREADS"
- BasicRuntimeChecks="3"
- RuntimeLibrary="1"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile=".\msvc-debug/stk2.pch"
- AssemblerListingLocation=".\msvc-debug/"
- ObjectFile=".\msvc-debug/"
- ProgramDataBaseFileName=".\msvc-debug/"
- BrowseInformation="1"
- BrowseInformationFile=".\msvc-debug/"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="4"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib pthreadVC.lib flext_td-pdwin.lib stk_d.lib"
- OutputFile="msvc-debug/stk2~.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\pd-msvc,f:\prog\audio\stk\lib"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile=".\msvc-debug/stk2~.pdb"
- ImportLibrary=".\msvc-debug/stk2~.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="_DEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\msvc-debug/stk2.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath="main.cpp">
- <FileConfiguration
- Name="Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;PD;FLEXT_THREADS;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;PD;FLEXT_THREADS;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/externals/grill/flext/tutorial/thread1/Makefile.am b/externals/grill/flext/tutorial/thread1/Makefile.am
deleted file mode 100644
index e8965b14..00000000
--- a/externals/grill/flext/tutorial/thread1/Makefile.am
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# automake template
-# added by tim blechmann
-#
-
-NAME = thread1
-
-BUILT_SOURCES = main.cpp
-
-EXTRA_DIST = main.cpp \
- $(NAME).mcp \
- $(NAME).vcproj
-
-CXXFLAGS = @CXXFLAGS@ \
- @OPT_FLAGS@ \
- @INCLUDEDIR@ \
- -I../../source \
- $(DEFS) \
- -DFLEXT_SHARED
-
-LDFLAGS = @DYNAMIC_LDFLAGS@ @LDFLAGS@ \
- $(patsubst %,-framework %,$(FRAMEWORKS))
-
-LIBS = @LIBS@ -lflext-pd
-
-FRAMEWORKS = @FRAMEWORKS@
-
-TARGETDIR = @TARGETDIR@
-
-TARGET =$(NAME).@EXTENSION@
-
-OBJECTS = $(patsubst %.cpp,./%.@OBJEXT@,$(BUILT_SOURCES))
-
-SYSDIR = @SYSDIR@
-
-
-# ----------------------------- targets --------------------------------
-
-all-local: $(OBJECTS)
- $(CXX) $(LDFLAGS) ./*.@OBJEXT@ $(LIBS) -o ../$(TARGETDIR)/$(TARGET)
- strip --strip-unneeded ../$(TARGETDIR)/$(TARGET)
-
-./%.@OBJEXT@ : %.cpp
- $(CXX) -c $(CXXFLAGS) $< -o $@
-
-clean-local:
- rm -f ../$(TARGETDIR)/$(TARGET)
- rm -f ./$(OBJECTS)
-
-install-exec-local:
- install ../$(TARGET) $(SYSDIR)extra
diff --git a/externals/grill/flext/tutorial/thread1/main.cpp b/externals/grill/flext/tutorial/thread1/main.cpp
deleted file mode 100644
index e5e0c0e3..00000000
--- a/externals/grill/flext/tutorial/thread1/main.cpp
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
-flext tutorial - threads 1
-
-Copyright (c) 2002,2003 Thomas Grill (xovo@gmx.net)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
--------------------------------------------------------------------------
-
-This shows an example of a method running as a thread
-*/
-
-/* define FLEXT_THREADS for thread usage. Flext must also have been compiled with that defined!
- it's even better to define that as a compiler flag (-D FLEXT_THREADS) for all files of the
- flext external
-*/
-#ifndef FLEXT_THREADS
-#define FLEXT_THREADS
-#endif
-
-#include <flext.h>
-
-#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 400)
-#error You need at least flext version 0.4.0
-#endif
-
-
-class thread1:
- public flext_base
-{
- FLEXT_HEADER(thread1,flext_base)
-
-public:
- thread1();
-
-protected:
- void m_start(); // method function
-
-private:
- // define threaded callback for method m_start
- // the same syntax as with FLEXT_CALLBACK is used here
- FLEXT_THREAD(m_start)
-};
-
-FLEXT_NEW("thread1",thread1)
-
-
-
-thread1::thread1()
-{
- AddInAnything();
- AddOutInt();
-
- FLEXT_ADDBANG(0,m_start); // register method
-}
-
-void thread1::m_start()
-{
- // Please note that this functions needs about 10 seconds to complete
- // Without threads it would block the real-time system
-
- // Okay, that functionality would be far more elegant with timers
- // ... but hey, it's a demo!
-
- for(int i = 0; i < 20 && !ShouldExit(); ++i) {
- ToOutInt(0,i); // output loop count
-// post("%i",i);
-
- // wait for half a second
- for(int j = 0; j < 5 && !ShouldExit(); ++j) Sleep(0.1f);
- // note: we shall not block a thread for a longer time.
- // The system might want to destroy the object in the meantime and
- // expects thread termination. In such a case flext waits
- // for 1 second by default, then it aborts the thread brutally
- }
-
- // output a final zero
- ToOutInt(0,0);
-// post("end");
-}
-
-
-
diff --git a/externals/grill/flext/tutorial/thread1/package.txt b/externals/grill/flext/tutorial/thread1/package.txt
deleted file mode 100644
index 3b07a03e..00000000
--- a/externals/grill/flext/tutorial/thread1/package.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-NAME=thread1
-BUILDTYPE=multi
-SRCS=main.cpp
diff --git a/externals/grill/flext/tutorial/thread1/thread1.mcp b/externals/grill/flext/tutorial/thread1/thread1.mcp
deleted file mode 100644
index 54fc8624..00000000
--- a/externals/grill/flext/tutorial/thread1/thread1.mcp
+++ /dev/null
Binary files differ
diff --git a/externals/grill/flext/tutorial/thread1/thread1.vcproj b/externals/grill/flext/tutorial/thread1/thread1.vcproj
deleted file mode 100644
index 3cf34ebf..00000000
--- a/externals/grill/flext/tutorial/thread1/thread1.vcproj
+++ /dev/null
@@ -1,176 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="thread1"
- SccProjectName="thread1"
- SccAuxPath=""
- SccLocalPath="."
- SccProvider="MSSCCI:Jalindi Igloo">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Release|Win32"
- OutputDirectory=".\msvc"
- IntermediateDirectory=".\msvc"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src,..\..\source"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;PD;FLEXT_THREADS"
- StringPooling="TRUE"
- RuntimeLibrary="0"
- EnableFunctionLevelLinking="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile=".\msvc/thread1.pch"
- AssemblerListingLocation=".\msvc/"
- ObjectFile=".\msvc/"
- ProgramDataBaseFileName=".\msvc/"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib flext_t-pdwin.lib pthreadVC.lib"
- OutputFile="../pd-msvc/thread1.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="C:\Programme\audio\pd\bin;..\..\pd-msvc"
- ProgramDatabaseFile=".\msvc/thread1.pdb"
- ImportLibrary=".\msvc/thread1.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\msvc/thread1.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory=".\msvc-debug"
- IntermediateDirectory=".\msvc-debug"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src,..\..\source"
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;FLEXT_THREADS"
- BasicRuntimeChecks="3"
- RuntimeLibrary="1"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile=".\msvc-debug/thread1.pch"
- AssemblerListingLocation=".\msvc-debug/"
- ObjectFile=".\msvc-debug/"
- ProgramDataBaseFileName=".\msvc-debug/"
- BrowseInformation="1"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="4"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib flext_td-pdwin.lib pthreadVC.lib"
- OutputFile=".\msvc-debug/thread1.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="C:\Programme\audio\pd\bin; ..\..\pd-msvc"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile=".\msvc-debug/thread1.pdb"
- ImportLibrary=".\msvc-debug/thread1.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="_DEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\msvc-debug/thread1.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath="main.cpp">
- <FileConfiguration
- Name="Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;PD;FLEXT_THREADS;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;PD;FLEXT_THREADS;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/externals/grill/flext/tutorial/thread2/Makefile.am b/externals/grill/flext/tutorial/thread2/Makefile.am
deleted file mode 100644
index 8b0e89da..00000000
--- a/externals/grill/flext/tutorial/thread2/Makefile.am
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# automake template
-# added by tim blechmann
-#
-
-NAME = thread2
-
-BUILT_SOURCES = main.cpp
-
-EXTRA_DIST = main.cpp \
- $(NAME).mcp \
- $(NAME).vcproj
-
-CXXFLAGS = @CXXFLAGS@ \
- @OPT_FLAGS@ \
- @INCLUDEDIR@ \
- -I../../source \
- $(DEFS) \
- -DFLEXT_SHARED
-
-LDFLAGS = @DYNAMIC_LDFLAGS@ @LDFLAGS@ \
- $(patsubst %,-framework %,$(FRAMEWORKS))
-
-LIBS = @LIBS@ -lflext-pd
-
-FRAMEWORKS = @FRAMEWORKS@
-
-TARGETDIR = @TARGETDIR@
-
-TARGET =$(NAME).@EXTENSION@
-
-OBJECTS = $(patsubst %.cpp,./%.@OBJEXT@,$(BUILT_SOURCES))
-
-SYSDIR = @SYSDIR@
-
-
-# ----------------------------- targets --------------------------------
-
-all-local: $(OBJECTS)
- $(CXX) $(LDFLAGS) ./*.@OBJEXT@ $(LIBS) -o ../$(TARGETDIR)/$(TARGET)
- strip --strip-unneeded ../$(TARGETDIR)/$(TARGET)
-
-./%.@OBJEXT@ : %.cpp
- $(CXX) -c $(CXXFLAGS) $< -o $@
-
-clean-local:
- rm -f ../$(TARGETDIR)/$(TARGET)
- rm -f ./$(OBJECTS)
-
-install-exec-local:
- install ../$(TARGET) $(SYSDIR)extra
diff --git a/externals/grill/flext/tutorial/thread2/main.cpp b/externals/grill/flext/tutorial/thread2/main.cpp
deleted file mode 100644
index 40e82b3c..00000000
--- a/externals/grill/flext/tutorial/thread2/main.cpp
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
-flext tutorial - threads 2
-
-Copyright (c) 2002,2003 Thomas Grill (xovo@gmx.net)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
--------------------------------------------------------------------------
-
-This shows an example of multiple threads and syncing with a thread conditional
-*/
-
-/* define FLEXT_THREADS for thread usage. Flext must also have been compiled with that defined!
- it's even better to define that as a compiler flag (-D FLEXT_THREADS) for all files of the
- flext external
-*/
-#ifndef FLEXT_THREADS
-#define FLEXT_THREADS
-#endif
-
-#include <flext.h>
-
-#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 400)
-#error You need at least flext version 0.4.0
-#endif
-
-
-class thread2:
- public flext_base
-{
- FLEXT_HEADER(thread2,flext_base)
-
-public:
- thread2(int del);
-
-protected:
- void m_start(int st);
- void m_stop();
- void m_text();
-
- void m_textout();
-
-private:
- FLEXT_THREAD_I(m_start) // define threaded callback for method m_start
- FLEXT_CALLBACK(m_stop) // normal callback for m_stop
- FLEXT_CALLBACK(m_text) // turn on console output
-
- FLEXT_THREAD(m_textout) // text output
-
- float delay;
- volatile int count;
-
- // caution: CodeWarrior seems to ignore volatile modifier!!
- volatile bool stopit,running,blipping; // flags for running and stopping
-
- // thread conditional for stop signal
- ThrCond cond;
-};
-
-FLEXT_NEW_1("thread2",thread2,int)
-
-
-
-thread2::thread2(int del):
- delay(del/1000.f),
- stopit(false),
- running(false),blipping(false)
-{
- AddInAnything();
- AddOutInt(2);
-
- FLEXT_ADDMETHOD(0,m_start); // register start for integer numbers (floats in PD)
- FLEXT_ADDMETHOD_(0,"text",m_text); // register m_text method for "text" tag
- FLEXT_ADDMETHOD_(0,"stop",m_stop); // register m_text method for "stop" tag
-}
-
-void thread2::m_start(int st)
-{
- // if already running, just set back the counter
- if(running) { count = st; return; }
-
- running = true;
-
- // loop until either the system exit flag or the "stopit" flag is set
- for(count = st; !ShouldExit() && !stopit; ++count)
- {
- Sleep(delay);
- ToOutInt(0,count); // output loop count
- }
-
- running = false; // change state flag
-// cond.Lock(); // lock conditional
- cond.Signal(); // signal changed flag to waiting "stop" method
-// cond.Unlock(); // unlock conditional
-}
-
-void thread2::m_stop()
-{
-// cond.Lock(); // lock conditional
- stopit = true; // set termination flag
-
- while(*(&running) || *(&blipping)) // workaround for CodeWarrior (doesn't honor volatile modifier!)
- {
- cond.Wait(); // wait for signal by running threads
- }
-
- // --- Here, the threads should have stopped ---
-
- stopit = false; // reset flag
-// cond.Unlock(); // unlock conditional
-}
-
-
-void thread2::m_text()
-{
- FLEXT_CALLMETHOD(m_textout);
-}
-
-void thread2::m_textout()
-{
- if(blipping) return;
- blipping = true;
-
- while(!ShouldExit() && !stopit) {
- post("%i",count);
- Sleep(1.f);
- }
-
- blipping = false; // change state flag
-// cond.Lock(); // lock conditional
- cond.Signal(); // signal changed flag to waiting "stop" method
-// cond.Unlock(); // unlock conditional
-}
-
diff --git a/externals/grill/flext/tutorial/thread2/package.txt b/externals/grill/flext/tutorial/thread2/package.txt
deleted file mode 100644
index 5d7ae4e8..00000000
--- a/externals/grill/flext/tutorial/thread2/package.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-NAME=thread2
-BUILDTYPE=multi
-SRCS=main.cpp
diff --git a/externals/grill/flext/tutorial/thread2/thread2.mcp b/externals/grill/flext/tutorial/thread2/thread2.mcp
deleted file mode 100755
index 9d051153..00000000
--- a/externals/grill/flext/tutorial/thread2/thread2.mcp
+++ /dev/null
Binary files differ
diff --git a/externals/grill/flext/tutorial/thread2/thread2.vcproj b/externals/grill/flext/tutorial/thread2/thread2.vcproj
deleted file mode 100644
index 99a25bad..00000000
--- a/externals/grill/flext/tutorial/thread2/thread2.vcproj
+++ /dev/null
@@ -1,176 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="thread2"
- SccProjectName="max/flext/tutorial/thread2"
- SccAuxPath=""
- SccLocalPath="."
- SccProvider="MSSCCI:Jalindi Igloo">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Release|Win32"
- OutputDirectory=".\msvc"
- IntermediateDirectory=".\msvc"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src,..\..\source"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;PD;FLEXT_THREADS"
- StringPooling="TRUE"
- RuntimeLibrary="0"
- EnableFunctionLevelLinking="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile=".\msvc/thread2.pch"
- AssemblerListingLocation=".\msvc/"
- ObjectFile=".\msvc/"
- ProgramDataBaseFileName=".\msvc/"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib flext_t-pdwin.lib pthreadVC.lib"
- OutputFile="../pd-msvc/thread2.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="C:\Programme\audio\pd\bin;..\..\pd-msvc"
- ProgramDatabaseFile=".\msvc/thread2.pdb"
- ImportLibrary=".\msvc/thread2.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\msvc/thread2.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory=".\msvc-debug"
- IntermediateDirectory=".\msvc-debug"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src,..\..\source"
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;FLEXT_THREADS"
- BasicRuntimeChecks="3"
- RuntimeLibrary="1"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile=".\msvc-debug/thread2.pch"
- AssemblerListingLocation=".\msvc-debug/"
- ObjectFile=".\msvc-debug/"
- ProgramDataBaseFileName=".\msvc-debug/"
- BrowseInformation="1"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="4"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib flext_td-pdwin.lib pthreadVC.lib"
- OutputFile=".\msvc-debug/thread2.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="c:\programme\audio\pd\bin;..\..\pd-msvc"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile=".\msvc-debug/thread2.pdb"
- ImportLibrary=".\msvc-debug/thread2.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="_DEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\msvc-debug/thread2.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath="main.cpp">
- <FileConfiguration
- Name="Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;PD;FLEXT_THREADS;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;PD;FLEXT_THREADS;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/externals/grill/flext/tutorial/timer1/Makefile.am b/externals/grill/flext/tutorial/timer1/Makefile.am
deleted file mode 100644
index c5ab15f3..00000000
--- a/externals/grill/flext/tutorial/timer1/Makefile.am
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# automake template
-# added by tim blechmann
-#
-
-NAME = timer1
-
-BUILT_SOURCES = main.cpp
-
-EXTRA_DIST = main.cpp \
- $(NAME).mcp \
- $(NAME).vcproj
-
-CXXFLAGS = @CXXFLAGS@ \
- @OPT_FLAGS@ \
- @INCLUDEDIR@ \
- -I../../source \
- $(DEFS) \
- -DFLEXT_SHARED
-
-LDFLAGS = @DYNAMIC_LDFLAGS@ @LDFLAGS@ \
- $(patsubst %,-framework %,$(FRAMEWORKS))
-
-LIBS = @LIBS@ -lflext-pd
-
-FRAMEWORKS = @FRAMEWORKS@
-
-TARGETDIR = @TARGETDIR@
-
-TARGET =$(NAME).@EXTENSION@
-
-OBJECTS = $(patsubst %.cpp,./%.@OBJEXT@,$(BUILT_SOURCES))
-
-SYSDIR = @SYSDIR@
-
-
-# ----------------------------- targets --------------------------------
-
-all-local: $(OBJECTS)
- $(CXX) $(LDFLAGS) ./*.@OBJEXT@ $(LIBS) -o ../$(TARGETDIR)/$(TARGET)
- strip --strip-unneeded ../$(TARGETDIR)/$(TARGET)
-
-./%.@OBJEXT@ : %.cpp
- $(CXX) -c $(CXXFLAGS) $< -o $@
-
-clean-local:
- rm -f ../$(TARGETDIR)/$(TARGET)
- rm -f ./$(OBJECTS)
-
-install-exec-local:
- install ../$(TARGET) $(SYSDIR)extra
diff --git a/externals/grill/flext/tutorial/timer1/main.cpp b/externals/grill/flext/tutorial/timer1/main.cpp
deleted file mode 100644
index d751c784..00000000
--- a/externals/grill/flext/tutorial/timer1/main.cpp
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
-flext tutorial - timer 1
-
-Copyright (c) 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 an example of an object using timers
-*/
-
-// enable flext attributes
-#define FLEXT_ATTRIBUTES 1
-
-// include flext header
-#include <flext.h>
-
-// check for appropriate flext version
-#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 403)
-#error You need at least flext version 0.4.3
-#endif
-
-
-// define the class that stands for a pd/Max object
-
-class timer1:
- // inherit from basic flext class
- public flext_base
-{
- // obligatory flext header (class name,base class name)
- FLEXT_HEADER_S(timer1,flext_base,Setup)
-
-public:
- // constructor
- timer1();
-
-protected:
- // timers
- Timer tmrA,tmrB;
-
- void m_getostime(float &f) { f = (float)GetOSTime(); } // method for operating system time attribute
- void m_getrttime(float &f) { f = (float)GetTime(); } // method for real-time system time attribute
-
- void m_timerA(void *) { ToOutString(0,"Timer A"); } // timer A method
- void m_timerB(void *) { ToOutString(0,"Timer B"); } // timer B method
-
- void m_resetA() { tmrA.Reset(); } // timer A reset
- void m_resetB() { tmrB.Reset(); } // timer B reset
- void m_oneshotA(int del) { tmrA.Delay(del*0.001); } // timer A one shot
- void m_oneshotB(int del) { tmrB.Delay(del*0.001); } // timer B one shot
- void m_periodicA(int del) { tmrA.Periodic(del*0.001); } // timer A periodic
- void m_periodicB(int del) { tmrB.Periodic(del*0.001); } // timer B periodic
-
-private:
- static void Setup(t_classid c);
-
- // register timer callbacks
- FLEXT_CALLBACK_T(m_timerA)
- FLEXT_CALLBACK_T(m_timerB)
-
- // register method callbacks
- FLEXT_CALLGET_F(m_getostime)
- FLEXT_CALLGET_F(m_getrttime)
- FLEXT_CALLBACK(m_resetA)
- FLEXT_CALLBACK(m_resetB)
- FLEXT_CALLBACK_I(m_oneshotA)
- FLEXT_CALLBACK_I(m_oneshotB)
- FLEXT_CALLBACK_I(m_periodicA)
- FLEXT_CALLBACK_I(m_periodicB)
-};
-
-// instantiate the class
-FLEXT_NEW("timer1",timer1)
-
-// class setup function
-void timer1::Setup(t_classid c)
-{
- FLEXT_CADDATTR_GET(c,"ostime",m_getostime); // register attribute for OS time
- FLEXT_CADDATTR_GET(c,"time",m_getrttime); // register attribute for RT time
-
- FLEXT_CADDMETHOD_(c,0,"resetA",m_resetA); // register reset method for timer A
- FLEXT_CADDMETHOD_(c,0,"resetB",m_resetB); // register reset method for timer B
- FLEXT_CADDMETHOD_(c,0,"oneshotA",m_oneshotA); // register one shot method for timer A
- FLEXT_CADDMETHOD_(c,0,"oneshotB",m_oneshotB); // register one shot method for timer B
- FLEXT_CADDMETHOD_(c,0,"periodicA",m_periodicA); // register periodic method for timer A
- FLEXT_CADDMETHOD_(c,0,"periodicB",m_periodicB); // register periodic method for timer B
-}
-
-// class constructor
-timer1::timer1():
- tmrA(false),tmrB(false)
-{
- AddInAnything("Control timers"); // add inlet for control commands
- AddOutAnything("Timer output"); // add outlet for timer output
-
- // register methods
- FLEXT_ADDTIMER(tmrA,m_timerA); // register method "m_timerA" for timer A
- FLEXT_ADDTIMER(tmrB,m_timerB); // register method "m_timerB" for timer B
-}
diff --git a/externals/grill/flext/tutorial/timer1/package.txt b/externals/grill/flext/tutorial/timer1/package.txt
deleted file mode 100644
index 4a23dcae..00000000
--- a/externals/grill/flext/tutorial/timer1/package.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-NAME=timer1
-SRCS=main.cpp
diff --git a/externals/grill/flext/tutorial/timer1/timer1.mcp b/externals/grill/flext/tutorial/timer1/timer1.mcp
deleted file mode 100755
index af4e978a..00000000
--- a/externals/grill/flext/tutorial/timer1/timer1.mcp
+++ /dev/null
Binary files differ
diff --git a/externals/grill/flext/tutorial/timer1/timer1.vcproj b/externals/grill/flext/tutorial/timer1/timer1.vcproj
deleted file mode 100644
index ba39e622..00000000
--- a/externals/grill/flext/tutorial/timer1/timer1.vcproj
+++ /dev/null
@@ -1,177 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="timer1"
- SccProjectName="timer1"
- SccAuxPath=""
- SccLocalPath="."
- SccProvider="MSSCCI:Jalindi Igloo">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory=".\msvc-debug"
- IntermediateDirectory=".\msvc-debug"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src,..\..\source"
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;PD"
- BasicRuntimeChecks="3"
- RuntimeLibrary="5"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile=".\msvc-debug/timer1.pch"
- AssemblerListingLocation=".\msvc-debug/"
- ObjectFile=".\msvc-debug/"
- ProgramDataBaseFileName=".\msvc-debug/"
- BrowseInformation="1"
- BrowseInformationFile=".\msvc-debug/"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="4"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib flext_d-pdwin.lib"
- OutputFile=".\msvc-debug/timer1.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\pd-msvc"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile=".\msvc-debug/timer1.pdb"
- ImportLibrary=".\msvc-debug/timer1.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="_DEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\msvc-debug/timer1.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory=".\msvc"
- IntermediateDirectory=".\msvc"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\source"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;PD"
- StringPooling="TRUE"
- RuntimeLibrary="4"
- EnableFunctionLevelLinking="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile=".\msvc/timer1.pch"
- AssemblerListingLocation=".\msvc/"
- ObjectFile=".\msvc/"
- ProgramDataBaseFileName=".\msvc/"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib flext-pdwin.lib"
- OutputFile="../pd-msvc/timer1.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\pd-msvc"
- ProgramDatabaseFile=".\msvc/timer1.pdb"
- ImportLibrary=".\msvc/timer1.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\msvc/timer1.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath="main.cpp">
- <FileConfiguration
- Name="Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;PD;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;PD;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/externals/grill/flext/tutorial/tutorial.sln b/externals/grill/flext/tutorial/tutorial.sln
deleted file mode 100644
index 7d3ab1e8..00000000
--- a/externals/grill/flext/tutorial/tutorial.sln
+++ /dev/null
@@ -1,473 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 8.00
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "adv1", "adv1\adv1.vcproj", "{A90E248D-52FD-458F-90A5-F20F7ED1D564}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "adv2", "adv2\adv2.vcproj", "{B0C13353-9F2E-4714-A85C-6904B75B4345}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "adv3", "adv3\adv3.vcproj", "{3F3FDEA7-90CC-43CF-A2C5-2BF345705B02}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "attr1", "attr1\attr1.vcproj", "{9A54D435-A3E6-4AA6-ACE3-702D7C411E4E}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "attr2", "attr2\attr2.vcproj", "{D891041F-303E-4E99-868F-11FF58E0C779}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "attr3", "attr3\attr3.vcproj", "{EA839AFE-95F0-47CF-9A78-72EF51CB9940}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bind1", "bind1\bind1.vcproj", "{C568D327-EA97-49C8-AF05-5FD7D35B6191}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "buffer1", "buffer1\buffer1.vcproj", "{723071BA-FE33-4C29-AB7B-6AB30B6057F7}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "flext", "..\flext.vcproj", "{A0882797-7925-4AA3-93EA-7241487CECC5}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lib1", "lib1\lib1.vcproj", "{4560EF26-304A-424F-B882-1F65A1F4DC67}"
- ProjectSection(ProjectDependencies) = postProject
- {A0882797-7925-4AA3-93EA-7241487CECC5} = {A0882797-7925-4AA3-93EA-7241487CECC5}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "signal1", "signal1\signal1.vcproj", "{5F58157D-ABB1-4066-A143-C14515A3D7F9}"
- ProjectSection(ProjectDependencies) = postProject
- {A0882797-7925-4AA3-93EA-7241487CECC5} = {A0882797-7925-4AA3-93EA-7241487CECC5}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "signal2", "signal2\signal2.vcproj", "{B6D40688-2D3E-4DAA-8004-706FAA731F18}"
- ProjectSection(ProjectDependencies) = postProject
- {A0882797-7925-4AA3-93EA-7241487CECC5} = {A0882797-7925-4AA3-93EA-7241487CECC5}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "simple1", "simple1\simple1.vcproj", "{CF5E59F3-2AEE-40DD-8D59-8E8C407864F9}"
- ProjectSection(ProjectDependencies) = postProject
- {A0882797-7925-4AA3-93EA-7241487CECC5} = {A0882797-7925-4AA3-93EA-7241487CECC5}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "simple2", "simple2\simple2.vcproj", "{4880ABD9-1598-4D5E-B4D3-558E8648405D}"
- ProjectSection(ProjectDependencies) = postProject
- {A0882797-7925-4AA3-93EA-7241487CECC5} = {A0882797-7925-4AA3-93EA-7241487CECC5}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "simple3", "simple3\simple3.vcproj", "{325D0FC7-AED9-487E-9FE5-4DEC305C2799}"
- ProjectSection(ProjectDependencies) = postProject
- {A0882797-7925-4AA3-93EA-7241487CECC5} = {A0882797-7925-4AA3-93EA-7241487CECC5}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sndobj1", "sndobj1\sndobj1.vcproj", "{A9B22491-39A4-4010-ABDF-5C8EF80432D7}"
- ProjectSection(ProjectDependencies) = postProject
- {A0882797-7925-4AA3-93EA-7241487CECC5} = {A0882797-7925-4AA3-93EA-7241487CECC5}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "stk1", "stk1\stk1.vcproj", "{AD7C94F9-BB76-4588-BF89-491D7C6D40EC}"
- ProjectSection(ProjectDependencies) = postProject
- {A0882797-7925-4AA3-93EA-7241487CECC5} = {A0882797-7925-4AA3-93EA-7241487CECC5}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "stk2", "stk2\stk2.vcproj", "{18A3D222-AC98-4CFF-82C0-E5421AB39981}"
- ProjectSection(ProjectDependencies) = postProject
- {A0882797-7925-4AA3-93EA-7241487CECC5} = {A0882797-7925-4AA3-93EA-7241487CECC5}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "thread1", "thread1\thread1.vcproj", "{702908EB-47A9-45D0-BCC5-3448C98C73E6}"
- ProjectSection(ProjectDependencies) = postProject
- {A0882797-7925-4AA3-93EA-7241487CECC5} = {A0882797-7925-4AA3-93EA-7241487CECC5}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "thread2", "thread2\thread2.vcproj", "{4CC4B09F-1D36-46C7-A1DE-3C4DC366F485}"
- ProjectSection(ProjectDependencies) = postProject
- {A0882797-7925-4AA3-93EA-7241487CECC5} = {A0882797-7925-4AA3-93EA-7241487CECC5}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "timer1", "timer1\timer1.vcproj", "{EAA8D47B-CFD7-40AC-92A8-189BEF3E8C64}"
- ProjectSection(ProjectDependencies) = postProject
- {A0882797-7925-4AA3-93EA-7241487CECC5} = {A0882797-7925-4AA3-93EA-7241487CECC5}
- EndProjectSection
-EndProject
-Global
- GlobalSection(SourceCodeControl) = preSolution
- SccNumberOfProjects = 21
- SccProjectUniqueName0 = adv1\\adv1.vcproj
- SccProjectName0 = adv1
- SccLocalPath0 = adv1
- SccProvider0 = MSSCCI:Jalindi\u0020Igloo
- CanCheckoutShared = true
- SccProjectUniqueName1 = adv2\\adv2.vcproj
- SccProjectName1 = adv2
- SccLocalPath1 = adv2
- SccProvider1 = MSSCCI:Jalindi\u0020Igloo
- CanCheckoutShared = true
- SccProjectUniqueName2 = adv3\\adv3.vcproj
- SccProjectName2 = adv3
- SccLocalPath2 = adv3
- SccProvider2 = MSSCCI:Jalindi\u0020Igloo
- CanCheckoutShared = true
- SccProjectUniqueName3 = attr1\\attr1.vcproj
- SccProjectName3 = attr1
- SccLocalPath3 = attr1
- SccProvider3 = MSSCCI:Jalindi\u0020Igloo
- CanCheckoutShared = true
- SccProjectUniqueName4 = attr2\\attr2.vcproj
- SccProjectName4 = attr2
- SccLocalPath4 = attr2
- SccProvider4 = MSSCCI:Jalindi\u0020Igloo
- CanCheckoutShared = true
- SccProjectUniqueName5 = attr3\\attr3.vcproj
- SccProjectName5 = attr3
- SccLocalPath5 = attr3
- SccProvider5 = MSSCCI:Jalindi\u0020Igloo
- CanCheckoutShared = true
- SccProjectUniqueName6 = bind1\\bind1.vcproj
- SccProjectName6 = max/flext/tutorial/bind1
- SccLocalPath6 = bind1
- SccProvider6 = MSSCCI:Jalindi\u0020Igloo
- CanCheckoutShared = true
- SccProjectUniqueName7 = buffer1\\buffer1.vcproj
- SccProjectName7 = max/flext/tutorial/buffer1
- SccLocalPath7 = buffer1
- SccProvider7 = MSSCCI:Jalindi\u0020Igloo
- CanCheckoutShared = true
- SccProjectUniqueName8 = ..\\flext.vcproj
- SccProjectName8 = max/flext
- SccLocalPath8 = ..
- SccProvider8 = MSSCCI:Jalindi\u0020Igloo
- CanCheckoutShared = true
- SccProjectUniqueName9 = lib1\\lib1.vcproj
- SccProjectName9 = lib1
- SccLocalPath9 = lib1
- SccProvider9 = MSSCCI:Jalindi\u0020Igloo
- CanCheckoutShared = true
- SccProjectUniqueName10 = signal1\\signal1.vcproj
- SccProjectName10 = max/flext/tutorial/signal1
- SccLocalPath10 = signal1
- SccProvider10 = MSSCCI:Jalindi\u0020Igloo
- CanCheckoutShared = true
- SccProjectUniqueName11 = signal2\\signal2.vcproj
- SccProjectName11 = max/flext/tutorial/signal2
- SccLocalPath11 = signal2
- SccProvider11 = MSSCCI:Jalindi\u0020Igloo
- CanCheckoutShared = true
- SccProjectUniqueName12 = simple1\\simple1.vcproj
- SccProjectName12 = simple1
- SccLocalPath12 = simple1
- SccProvider12 = MSSCCI:Jalindi\u0020Igloo
- CanCheckoutShared = true
- SccProjectUniqueName13 = simple2\\simple2.vcproj
- SccProjectName13 = simple2
- SccLocalPath13 = simple2
- SccProvider13 = MSSCCI:Jalindi\u0020Igloo
- CanCheckoutShared = true
- SccProjectUniqueName14 = simple3\\simple3.vcproj
- SccProjectName14 = simple3
- SccLocalPath14 = simple3
- SccProvider14 = MSSCCI:Jalindi\u0020Igloo
- CanCheckoutShared = true
- SccProjectUniqueName15 = sndobj1\\sndobj1.vcproj
- SccProjectName15 = sndobj1
- SccLocalPath15 = sndobj1
- SccProvider15 = MSSCCI:Jalindi\u0020Igloo
- CanCheckoutShared = true
- SccProjectUniqueName16 = stk1\\stk1.vcproj
- SccProjectName16 = stk1
- SccLocalPath16 = stk1
- SccProvider16 = MSSCCI:Jalindi\u0020Igloo
- CanCheckoutShared = true
- SccProjectUniqueName17 = stk2\\stk2.vcproj
- SccProjectName17 = stk2
- SccLocalPath17 = stk2
- SccProvider17 = MSSCCI:Jalindi\u0020Igloo
- CanCheckoutShared = true
- SccProjectUniqueName18 = thread1\\thread1.vcproj
- SccProjectName18 = thread1
- SccLocalPath18 = thread1
- SccProvider18 = MSSCCI:Jalindi\u0020Igloo
- CanCheckoutShared = true
- SccProjectUniqueName19 = thread2\\thread2.vcproj
- SccProjectName19 = max/flext/tutorial/thread2
- SccLocalPath19 = thread2
- SccProvider19 = MSSCCI:Jalindi\u0020Igloo
- CanCheckoutShared = true
- SccProjectUniqueName20 = timer1\\timer1.vcproj
- SccProjectName20 = timer1
- SccLocalPath20 = timer1
- SccProvider20 = MSSCCI:Jalindi\u0020Igloo
- CanCheckoutShared = true
- EndGlobalSection
- GlobalSection(SolutionConfiguration) = preSolution
- Debug = Debug
- Release = Release
- Threads Debug = Threads Debug
- Threads DLL Debug = Threads DLL Debug
- Threads DLL Release = Threads DLL Release
- Threads Release = Threads Release
- EndGlobalSection
- GlobalSection(ProjectConfiguration) = postSolution
- {A90E248D-52FD-458F-90A5-F20F7ED1D564}.Debug.ActiveCfg = Debug|Win32
- {A90E248D-52FD-458F-90A5-F20F7ED1D564}.Debug.Build.0 = Debug|Win32
- {A90E248D-52FD-458F-90A5-F20F7ED1D564}.Release.ActiveCfg = Release|Win32
- {A90E248D-52FD-458F-90A5-F20F7ED1D564}.Release.Build.0 = Release|Win32
- {A90E248D-52FD-458F-90A5-F20F7ED1D564}.Threads Debug.ActiveCfg = Debug|Win32
- {A90E248D-52FD-458F-90A5-F20F7ED1D564}.Threads Debug.Build.0 = Debug|Win32
- {A90E248D-52FD-458F-90A5-F20F7ED1D564}.Threads DLL Debug.ActiveCfg = Debug|Win32
- {A90E248D-52FD-458F-90A5-F20F7ED1D564}.Threads DLL Debug.Build.0 = Debug|Win32
- {A90E248D-52FD-458F-90A5-F20F7ED1D564}.Threads DLL Release.ActiveCfg = Release|Win32
- {A90E248D-52FD-458F-90A5-F20F7ED1D564}.Threads DLL Release.Build.0 = Release|Win32
- {A90E248D-52FD-458F-90A5-F20F7ED1D564}.Threads Release.ActiveCfg = Release|Win32
- {A90E248D-52FD-458F-90A5-F20F7ED1D564}.Threads Release.Build.0 = Release|Win32
- {B0C13353-9F2E-4714-A85C-6904B75B4345}.Debug.ActiveCfg = Debug|Win32
- {B0C13353-9F2E-4714-A85C-6904B75B4345}.Debug.Build.0 = Debug|Win32
- {B0C13353-9F2E-4714-A85C-6904B75B4345}.Release.ActiveCfg = Release|Win32
- {B0C13353-9F2E-4714-A85C-6904B75B4345}.Release.Build.0 = Release|Win32
- {B0C13353-9F2E-4714-A85C-6904B75B4345}.Threads Debug.ActiveCfg = Debug|Win32
- {B0C13353-9F2E-4714-A85C-6904B75B4345}.Threads Debug.Build.0 = Debug|Win32
- {B0C13353-9F2E-4714-A85C-6904B75B4345}.Threads DLL Debug.ActiveCfg = Debug|Win32
- {B0C13353-9F2E-4714-A85C-6904B75B4345}.Threads DLL Debug.Build.0 = Debug|Win32
- {B0C13353-9F2E-4714-A85C-6904B75B4345}.Threads DLL Release.ActiveCfg = Release|Win32
- {B0C13353-9F2E-4714-A85C-6904B75B4345}.Threads DLL Release.Build.0 = Release|Win32
- {B0C13353-9F2E-4714-A85C-6904B75B4345}.Threads Release.ActiveCfg = Release|Win32
- {B0C13353-9F2E-4714-A85C-6904B75B4345}.Threads Release.Build.0 = Release|Win32
- {3F3FDEA7-90CC-43CF-A2C5-2BF345705B02}.Debug.ActiveCfg = Debug|Win32
- {3F3FDEA7-90CC-43CF-A2C5-2BF345705B02}.Debug.Build.0 = Debug|Win32
- {3F3FDEA7-90CC-43CF-A2C5-2BF345705B02}.Release.ActiveCfg = Release|Win32
- {3F3FDEA7-90CC-43CF-A2C5-2BF345705B02}.Release.Build.0 = Release|Win32
- {3F3FDEA7-90CC-43CF-A2C5-2BF345705B02}.Threads Debug.ActiveCfg = Debug|Win32
- {3F3FDEA7-90CC-43CF-A2C5-2BF345705B02}.Threads Debug.Build.0 = Debug|Win32
- {3F3FDEA7-90CC-43CF-A2C5-2BF345705B02}.Threads DLL Debug.ActiveCfg = Debug|Win32
- {3F3FDEA7-90CC-43CF-A2C5-2BF345705B02}.Threads DLL Debug.Build.0 = Debug|Win32
- {3F3FDEA7-90CC-43CF-A2C5-2BF345705B02}.Threads DLL Release.ActiveCfg = Release|Win32
- {3F3FDEA7-90CC-43CF-A2C5-2BF345705B02}.Threads DLL Release.Build.0 = Release|Win32
- {3F3FDEA7-90CC-43CF-A2C5-2BF345705B02}.Threads Release.ActiveCfg = Release|Win32
- {3F3FDEA7-90CC-43CF-A2C5-2BF345705B02}.Threads Release.Build.0 = Release|Win32
- {9A54D435-A3E6-4AA6-ACE3-702D7C411E4E}.Debug.ActiveCfg = Debug|Win32
- {9A54D435-A3E6-4AA6-ACE3-702D7C411E4E}.Debug.Build.0 = Debug|Win32
- {9A54D435-A3E6-4AA6-ACE3-702D7C411E4E}.Release.ActiveCfg = Release|Win32
- {9A54D435-A3E6-4AA6-ACE3-702D7C411E4E}.Release.Build.0 = Release|Win32
- {9A54D435-A3E6-4AA6-ACE3-702D7C411E4E}.Threads Debug.ActiveCfg = Debug|Win32
- {9A54D435-A3E6-4AA6-ACE3-702D7C411E4E}.Threads Debug.Build.0 = Debug|Win32
- {9A54D435-A3E6-4AA6-ACE3-702D7C411E4E}.Threads DLL Debug.ActiveCfg = Debug|Win32
- {9A54D435-A3E6-4AA6-ACE3-702D7C411E4E}.Threads DLL Debug.Build.0 = Debug|Win32
- {9A54D435-A3E6-4AA6-ACE3-702D7C411E4E}.Threads DLL Release.ActiveCfg = Release|Win32
- {9A54D435-A3E6-4AA6-ACE3-702D7C411E4E}.Threads DLL Release.Build.0 = Release|Win32
- {9A54D435-A3E6-4AA6-ACE3-702D7C411E4E}.Threads Release.ActiveCfg = Release|Win32
- {9A54D435-A3E6-4AA6-ACE3-702D7C411E4E}.Threads Release.Build.0 = Release|Win32
- {D891041F-303E-4E99-868F-11FF58E0C779}.Debug.ActiveCfg = Debug|Win32
- {D891041F-303E-4E99-868F-11FF58E0C779}.Debug.Build.0 = Debug|Win32
- {D891041F-303E-4E99-868F-11FF58E0C779}.Release.ActiveCfg = Release|Win32
- {D891041F-303E-4E99-868F-11FF58E0C779}.Release.Build.0 = Release|Win32
- {D891041F-303E-4E99-868F-11FF58E0C779}.Threads Debug.ActiveCfg = Debug|Win32
- {D891041F-303E-4E99-868F-11FF58E0C779}.Threads Debug.Build.0 = Debug|Win32
- {D891041F-303E-4E99-868F-11FF58E0C779}.Threads DLL Debug.ActiveCfg = Debug|Win32
- {D891041F-303E-4E99-868F-11FF58E0C779}.Threads DLL Debug.Build.0 = Debug|Win32
- {D891041F-303E-4E99-868F-11FF58E0C779}.Threads DLL Release.ActiveCfg = Release|Win32
- {D891041F-303E-4E99-868F-11FF58E0C779}.Threads DLL Release.Build.0 = Release|Win32
- {D891041F-303E-4E99-868F-11FF58E0C779}.Threads Release.ActiveCfg = Release|Win32
- {D891041F-303E-4E99-868F-11FF58E0C779}.Threads Release.Build.0 = Release|Win32
- {EA839AFE-95F0-47CF-9A78-72EF51CB9940}.Debug.ActiveCfg = Debug|Win32
- {EA839AFE-95F0-47CF-9A78-72EF51CB9940}.Debug.Build.0 = Debug|Win32
- {EA839AFE-95F0-47CF-9A78-72EF51CB9940}.Release.ActiveCfg = Release|Win32
- {EA839AFE-95F0-47CF-9A78-72EF51CB9940}.Release.Build.0 = Release|Win32
- {EA839AFE-95F0-47CF-9A78-72EF51CB9940}.Threads Debug.ActiveCfg = Debug|Win32
- {EA839AFE-95F0-47CF-9A78-72EF51CB9940}.Threads Debug.Build.0 = Debug|Win32
- {EA839AFE-95F0-47CF-9A78-72EF51CB9940}.Threads DLL Debug.ActiveCfg = Debug|Win32
- {EA839AFE-95F0-47CF-9A78-72EF51CB9940}.Threads DLL Debug.Build.0 = Debug|Win32
- {EA839AFE-95F0-47CF-9A78-72EF51CB9940}.Threads DLL Release.ActiveCfg = Release|Win32
- {EA839AFE-95F0-47CF-9A78-72EF51CB9940}.Threads DLL Release.Build.0 = Release|Win32
- {EA839AFE-95F0-47CF-9A78-72EF51CB9940}.Threads Release.ActiveCfg = Release|Win32
- {EA839AFE-95F0-47CF-9A78-72EF51CB9940}.Threads Release.Build.0 = Release|Win32
- {C568D327-EA97-49C8-AF05-5FD7D35B6191}.Debug.ActiveCfg = Debug|Win32
- {C568D327-EA97-49C8-AF05-5FD7D35B6191}.Debug.Build.0 = Debug|Win32
- {C568D327-EA97-49C8-AF05-5FD7D35B6191}.Release.ActiveCfg = Release|Win32
- {C568D327-EA97-49C8-AF05-5FD7D35B6191}.Release.Build.0 = Release|Win32
- {C568D327-EA97-49C8-AF05-5FD7D35B6191}.Threads Debug.ActiveCfg = Debug|Win32
- {C568D327-EA97-49C8-AF05-5FD7D35B6191}.Threads Debug.Build.0 = Debug|Win32
- {C568D327-EA97-49C8-AF05-5FD7D35B6191}.Threads DLL Debug.ActiveCfg = Debug|Win32
- {C568D327-EA97-49C8-AF05-5FD7D35B6191}.Threads DLL Debug.Build.0 = Debug|Win32
- {C568D327-EA97-49C8-AF05-5FD7D35B6191}.Threads DLL Release.ActiveCfg = Release|Win32
- {C568D327-EA97-49C8-AF05-5FD7D35B6191}.Threads DLL Release.Build.0 = Release|Win32
- {C568D327-EA97-49C8-AF05-5FD7D35B6191}.Threads Release.ActiveCfg = Release|Win32
- {C568D327-EA97-49C8-AF05-5FD7D35B6191}.Threads Release.Build.0 = Release|Win32
- {723071BA-FE33-4C29-AB7B-6AB30B6057F7}.Debug.ActiveCfg = Debug|Win32
- {723071BA-FE33-4C29-AB7B-6AB30B6057F7}.Debug.Build.0 = Debug|Win32
- {723071BA-FE33-4C29-AB7B-6AB30B6057F7}.Release.ActiveCfg = Release|Win32
- {723071BA-FE33-4C29-AB7B-6AB30B6057F7}.Release.Build.0 = Release|Win32
- {723071BA-FE33-4C29-AB7B-6AB30B6057F7}.Threads Debug.ActiveCfg = Debug|Win32
- {723071BA-FE33-4C29-AB7B-6AB30B6057F7}.Threads Debug.Build.0 = Debug|Win32
- {723071BA-FE33-4C29-AB7B-6AB30B6057F7}.Threads DLL Debug.ActiveCfg = Debug|Win32
- {723071BA-FE33-4C29-AB7B-6AB30B6057F7}.Threads DLL Debug.Build.0 = Debug|Win32
- {723071BA-FE33-4C29-AB7B-6AB30B6057F7}.Threads DLL Release.ActiveCfg = Release|Win32
- {723071BA-FE33-4C29-AB7B-6AB30B6057F7}.Threads DLL Release.Build.0 = Release|Win32
- {723071BA-FE33-4C29-AB7B-6AB30B6057F7}.Threads Release.ActiveCfg = Release|Win32
- {723071BA-FE33-4C29-AB7B-6AB30B6057F7}.Threads Release.Build.0 = Release|Win32
- {A0882797-7925-4AA3-93EA-7241487CECC5}.Debug.ActiveCfg = Debug|Win32
- {A0882797-7925-4AA3-93EA-7241487CECC5}.Debug.Build.0 = Debug|Win32
- {A0882797-7925-4AA3-93EA-7241487CECC5}.Release.ActiveCfg = Release|Win32
- {A0882797-7925-4AA3-93EA-7241487CECC5}.Release.Build.0 = Release|Win32
- {A0882797-7925-4AA3-93EA-7241487CECC5}.Threads Debug.ActiveCfg = Threads Debug|Win32
- {A0882797-7925-4AA3-93EA-7241487CECC5}.Threads Debug.Build.0 = Threads Debug|Win32
- {A0882797-7925-4AA3-93EA-7241487CECC5}.Threads DLL Debug.ActiveCfg = Threads DLL Debug|Win32
- {A0882797-7925-4AA3-93EA-7241487CECC5}.Threads DLL Debug.Build.0 = Threads DLL Debug|Win32
- {A0882797-7925-4AA3-93EA-7241487CECC5}.Threads DLL Release.ActiveCfg = Threads DLL Release|Win32
- {A0882797-7925-4AA3-93EA-7241487CECC5}.Threads DLL Release.Build.0 = Threads DLL Release|Win32
- {A0882797-7925-4AA3-93EA-7241487CECC5}.Threads Release.ActiveCfg = Threads Release|Win32
- {A0882797-7925-4AA3-93EA-7241487CECC5}.Threads Release.Build.0 = Threads Release|Win32
- {4560EF26-304A-424F-B882-1F65A1F4DC67}.Debug.ActiveCfg = Debug|Win32
- {4560EF26-304A-424F-B882-1F65A1F4DC67}.Debug.Build.0 = Debug|Win32
- {4560EF26-304A-424F-B882-1F65A1F4DC67}.Release.ActiveCfg = Release|Win32
- {4560EF26-304A-424F-B882-1F65A1F4DC67}.Release.Build.0 = Release|Win32
- {4560EF26-304A-424F-B882-1F65A1F4DC67}.Threads Debug.ActiveCfg = Debug|Win32
- {4560EF26-304A-424F-B882-1F65A1F4DC67}.Threads Debug.Build.0 = Debug|Win32
- {4560EF26-304A-424F-B882-1F65A1F4DC67}.Threads DLL Debug.ActiveCfg = Debug|Win32
- {4560EF26-304A-424F-B882-1F65A1F4DC67}.Threads DLL Debug.Build.0 = Debug|Win32
- {4560EF26-304A-424F-B882-1F65A1F4DC67}.Threads DLL Release.ActiveCfg = Release|Win32
- {4560EF26-304A-424F-B882-1F65A1F4DC67}.Threads DLL Release.Build.0 = Release|Win32
- {4560EF26-304A-424F-B882-1F65A1F4DC67}.Threads Release.ActiveCfg = Release|Win32
- {4560EF26-304A-424F-B882-1F65A1F4DC67}.Threads Release.Build.0 = Release|Win32
- {5F58157D-ABB1-4066-A143-C14515A3D7F9}.Debug.ActiveCfg = Debug|Win32
- {5F58157D-ABB1-4066-A143-C14515A3D7F9}.Debug.Build.0 = Debug|Win32
- {5F58157D-ABB1-4066-A143-C14515A3D7F9}.Release.ActiveCfg = Release|Win32
- {5F58157D-ABB1-4066-A143-C14515A3D7F9}.Release.Build.0 = Release|Win32
- {5F58157D-ABB1-4066-A143-C14515A3D7F9}.Threads Debug.ActiveCfg = Debug|Win32
- {5F58157D-ABB1-4066-A143-C14515A3D7F9}.Threads Debug.Build.0 = Debug|Win32
- {5F58157D-ABB1-4066-A143-C14515A3D7F9}.Threads DLL Debug.ActiveCfg = Debug|Win32
- {5F58157D-ABB1-4066-A143-C14515A3D7F9}.Threads DLL Debug.Build.0 = Debug|Win32
- {5F58157D-ABB1-4066-A143-C14515A3D7F9}.Threads DLL Release.ActiveCfg = Release|Win32
- {5F58157D-ABB1-4066-A143-C14515A3D7F9}.Threads DLL Release.Build.0 = Release|Win32
- {5F58157D-ABB1-4066-A143-C14515A3D7F9}.Threads Release.ActiveCfg = Release|Win32
- {5F58157D-ABB1-4066-A143-C14515A3D7F9}.Threads Release.Build.0 = Release|Win32
- {B6D40688-2D3E-4DAA-8004-706FAA731F18}.Debug.ActiveCfg = Debug|Win32
- {B6D40688-2D3E-4DAA-8004-706FAA731F18}.Debug.Build.0 = Debug|Win32
- {B6D40688-2D3E-4DAA-8004-706FAA731F18}.Release.ActiveCfg = Release|Win32
- {B6D40688-2D3E-4DAA-8004-706FAA731F18}.Release.Build.0 = Release|Win32
- {B6D40688-2D3E-4DAA-8004-706FAA731F18}.Threads Debug.ActiveCfg = Debug|Win32
- {B6D40688-2D3E-4DAA-8004-706FAA731F18}.Threads Debug.Build.0 = Debug|Win32
- {B6D40688-2D3E-4DAA-8004-706FAA731F18}.Threads DLL Debug.ActiveCfg = Debug|Win32
- {B6D40688-2D3E-4DAA-8004-706FAA731F18}.Threads DLL Debug.Build.0 = Debug|Win32
- {B6D40688-2D3E-4DAA-8004-706FAA731F18}.Threads DLL Release.ActiveCfg = Release|Win32
- {B6D40688-2D3E-4DAA-8004-706FAA731F18}.Threads DLL Release.Build.0 = Release|Win32
- {B6D40688-2D3E-4DAA-8004-706FAA731F18}.Threads Release.ActiveCfg = Release|Win32
- {B6D40688-2D3E-4DAA-8004-706FAA731F18}.Threads Release.Build.0 = Release|Win32
- {CF5E59F3-2AEE-40DD-8D59-8E8C407864F9}.Debug.ActiveCfg = Debug|Win32
- {CF5E59F3-2AEE-40DD-8D59-8E8C407864F9}.Debug.Build.0 = Debug|Win32
- {CF5E59F3-2AEE-40DD-8D59-8E8C407864F9}.Release.ActiveCfg = Release|Win32
- {CF5E59F3-2AEE-40DD-8D59-8E8C407864F9}.Release.Build.0 = Release|Win32
- {CF5E59F3-2AEE-40DD-8D59-8E8C407864F9}.Threads Debug.ActiveCfg = Debug|Win32
- {CF5E59F3-2AEE-40DD-8D59-8E8C407864F9}.Threads Debug.Build.0 = Debug|Win32
- {CF5E59F3-2AEE-40DD-8D59-8E8C407864F9}.Threads DLL Debug.ActiveCfg = Debug|Win32
- {CF5E59F3-2AEE-40DD-8D59-8E8C407864F9}.Threads DLL Debug.Build.0 = Debug|Win32
- {CF5E59F3-2AEE-40DD-8D59-8E8C407864F9}.Threads DLL Release.ActiveCfg = Release|Win32
- {CF5E59F3-2AEE-40DD-8D59-8E8C407864F9}.Threads DLL Release.Build.0 = Release|Win32
- {CF5E59F3-2AEE-40DD-8D59-8E8C407864F9}.Threads Release.ActiveCfg = Release|Win32
- {CF5E59F3-2AEE-40DD-8D59-8E8C407864F9}.Threads Release.Build.0 = Release|Win32
- {4880ABD9-1598-4D5E-B4D3-558E8648405D}.Debug.ActiveCfg = Debug|Win32
- {4880ABD9-1598-4D5E-B4D3-558E8648405D}.Debug.Build.0 = Debug|Win32
- {4880ABD9-1598-4D5E-B4D3-558E8648405D}.Release.ActiveCfg = Release|Win32
- {4880ABD9-1598-4D5E-B4D3-558E8648405D}.Release.Build.0 = Release|Win32
- {4880ABD9-1598-4D5E-B4D3-558E8648405D}.Threads Debug.ActiveCfg = Debug|Win32
- {4880ABD9-1598-4D5E-B4D3-558E8648405D}.Threads Debug.Build.0 = Debug|Win32
- {4880ABD9-1598-4D5E-B4D3-558E8648405D}.Threads DLL Debug.ActiveCfg = Debug|Win32
- {4880ABD9-1598-4D5E-B4D3-558E8648405D}.Threads DLL Debug.Build.0 = Debug|Win32
- {4880ABD9-1598-4D5E-B4D3-558E8648405D}.Threads DLL Release.ActiveCfg = Release|Win32
- {4880ABD9-1598-4D5E-B4D3-558E8648405D}.Threads DLL Release.Build.0 = Release|Win32
- {4880ABD9-1598-4D5E-B4D3-558E8648405D}.Threads Release.ActiveCfg = Release|Win32
- {4880ABD9-1598-4D5E-B4D3-558E8648405D}.Threads Release.Build.0 = Release|Win32
- {325D0FC7-AED9-487E-9FE5-4DEC305C2799}.Debug.ActiveCfg = Debug|Win32
- {325D0FC7-AED9-487E-9FE5-4DEC305C2799}.Debug.Build.0 = Debug|Win32
- {325D0FC7-AED9-487E-9FE5-4DEC305C2799}.Release.ActiveCfg = Release|Win32
- {325D0FC7-AED9-487E-9FE5-4DEC305C2799}.Release.Build.0 = Release|Win32
- {325D0FC7-AED9-487E-9FE5-4DEC305C2799}.Threads Debug.ActiveCfg = Debug|Win32
- {325D0FC7-AED9-487E-9FE5-4DEC305C2799}.Threads Debug.Build.0 = Debug|Win32
- {325D0FC7-AED9-487E-9FE5-4DEC305C2799}.Threads DLL Debug.ActiveCfg = Debug|Win32
- {325D0FC7-AED9-487E-9FE5-4DEC305C2799}.Threads DLL Debug.Build.0 = Debug|Win32
- {325D0FC7-AED9-487E-9FE5-4DEC305C2799}.Threads DLL Release.ActiveCfg = Release|Win32
- {325D0FC7-AED9-487E-9FE5-4DEC305C2799}.Threads DLL Release.Build.0 = Release|Win32
- {325D0FC7-AED9-487E-9FE5-4DEC305C2799}.Threads Release.ActiveCfg = Release|Win32
- {325D0FC7-AED9-487E-9FE5-4DEC305C2799}.Threads Release.Build.0 = Release|Win32
- {A9B22491-39A4-4010-ABDF-5C8EF80432D7}.Debug.ActiveCfg = Debug|Win32
- {A9B22491-39A4-4010-ABDF-5C8EF80432D7}.Debug.Build.0 = Debug|Win32
- {A9B22491-39A4-4010-ABDF-5C8EF80432D7}.Release.ActiveCfg = Release|Win32
- {A9B22491-39A4-4010-ABDF-5C8EF80432D7}.Release.Build.0 = Release|Win32
- {A9B22491-39A4-4010-ABDF-5C8EF80432D7}.Threads Debug.ActiveCfg = Debug|Win32
- {A9B22491-39A4-4010-ABDF-5C8EF80432D7}.Threads Debug.Build.0 = Debug|Win32
- {A9B22491-39A4-4010-ABDF-5C8EF80432D7}.Threads DLL Debug.ActiveCfg = Debug|Win32
- {A9B22491-39A4-4010-ABDF-5C8EF80432D7}.Threads DLL Debug.Build.0 = Debug|Win32
- {A9B22491-39A4-4010-ABDF-5C8EF80432D7}.Threads DLL Release.ActiveCfg = Release|Win32
- {A9B22491-39A4-4010-ABDF-5C8EF80432D7}.Threads DLL Release.Build.0 = Release|Win32
- {A9B22491-39A4-4010-ABDF-5C8EF80432D7}.Threads Release.ActiveCfg = Release|Win32
- {A9B22491-39A4-4010-ABDF-5C8EF80432D7}.Threads Release.Build.0 = Release|Win32
- {AD7C94F9-BB76-4588-BF89-491D7C6D40EC}.Debug.ActiveCfg = Debug|Win32
- {AD7C94F9-BB76-4588-BF89-491D7C6D40EC}.Debug.Build.0 = Debug|Win32
- {AD7C94F9-BB76-4588-BF89-491D7C6D40EC}.Release.ActiveCfg = Release|Win32
- {AD7C94F9-BB76-4588-BF89-491D7C6D40EC}.Release.Build.0 = Release|Win32
- {AD7C94F9-BB76-4588-BF89-491D7C6D40EC}.Threads Debug.ActiveCfg = Debug|Win32
- {AD7C94F9-BB76-4588-BF89-491D7C6D40EC}.Threads Debug.Build.0 = Debug|Win32
- {AD7C94F9-BB76-4588-BF89-491D7C6D40EC}.Threads DLL Debug.ActiveCfg = Debug|Win32
- {AD7C94F9-BB76-4588-BF89-491D7C6D40EC}.Threads DLL Debug.Build.0 = Debug|Win32
- {AD7C94F9-BB76-4588-BF89-491D7C6D40EC}.Threads DLL Release.ActiveCfg = Release|Win32
- {AD7C94F9-BB76-4588-BF89-491D7C6D40EC}.Threads DLL Release.Build.0 = Release|Win32
- {AD7C94F9-BB76-4588-BF89-491D7C6D40EC}.Threads Release.ActiveCfg = Release|Win32
- {AD7C94F9-BB76-4588-BF89-491D7C6D40EC}.Threads Release.Build.0 = Release|Win32
- {18A3D222-AC98-4CFF-82C0-E5421AB39981}.Debug.ActiveCfg = Debug|Win32
- {18A3D222-AC98-4CFF-82C0-E5421AB39981}.Debug.Build.0 = Debug|Win32
- {18A3D222-AC98-4CFF-82C0-E5421AB39981}.Release.ActiveCfg = Release|Win32
- {18A3D222-AC98-4CFF-82C0-E5421AB39981}.Release.Build.0 = Release|Win32
- {18A3D222-AC98-4CFF-82C0-E5421AB39981}.Threads Debug.ActiveCfg = Debug|Win32
- {18A3D222-AC98-4CFF-82C0-E5421AB39981}.Threads Debug.Build.0 = Debug|Win32
- {18A3D222-AC98-4CFF-82C0-E5421AB39981}.Threads DLL Debug.ActiveCfg = Debug|Win32
- {18A3D222-AC98-4CFF-82C0-E5421AB39981}.Threads DLL Debug.Build.0 = Debug|Win32
- {18A3D222-AC98-4CFF-82C0-E5421AB39981}.Threads DLL Release.ActiveCfg = Release|Win32
- {18A3D222-AC98-4CFF-82C0-E5421AB39981}.Threads DLL Release.Build.0 = Release|Win32
- {18A3D222-AC98-4CFF-82C0-E5421AB39981}.Threads Release.ActiveCfg = Release|Win32
- {18A3D222-AC98-4CFF-82C0-E5421AB39981}.Threads Release.Build.0 = Release|Win32
- {702908EB-47A9-45D0-BCC5-3448C98C73E6}.Debug.ActiveCfg = Debug|Win32
- {702908EB-47A9-45D0-BCC5-3448C98C73E6}.Debug.Build.0 = Debug|Win32
- {702908EB-47A9-45D0-BCC5-3448C98C73E6}.Release.ActiveCfg = Release|Win32
- {702908EB-47A9-45D0-BCC5-3448C98C73E6}.Release.Build.0 = Release|Win32
- {702908EB-47A9-45D0-BCC5-3448C98C73E6}.Threads Debug.ActiveCfg = Debug|Win32
- {702908EB-47A9-45D0-BCC5-3448C98C73E6}.Threads Debug.Build.0 = Debug|Win32
- {702908EB-47A9-45D0-BCC5-3448C98C73E6}.Threads DLL Debug.ActiveCfg = Debug|Win32
- {702908EB-47A9-45D0-BCC5-3448C98C73E6}.Threads DLL Debug.Build.0 = Debug|Win32
- {702908EB-47A9-45D0-BCC5-3448C98C73E6}.Threads DLL Release.ActiveCfg = Release|Win32
- {702908EB-47A9-45D0-BCC5-3448C98C73E6}.Threads DLL Release.Build.0 = Release|Win32
- {702908EB-47A9-45D0-BCC5-3448C98C73E6}.Threads Release.ActiveCfg = Release|Win32
- {702908EB-47A9-45D0-BCC5-3448C98C73E6}.Threads Release.Build.0 = Release|Win32
- {4CC4B09F-1D36-46C7-A1DE-3C4DC366F485}.Debug.ActiveCfg = Debug|Win32
- {4CC4B09F-1D36-46C7-A1DE-3C4DC366F485}.Debug.Build.0 = Debug|Win32
- {4CC4B09F-1D36-46C7-A1DE-3C4DC366F485}.Release.ActiveCfg = Release|Win32
- {4CC4B09F-1D36-46C7-A1DE-3C4DC366F485}.Release.Build.0 = Release|Win32
- {4CC4B09F-1D36-46C7-A1DE-3C4DC366F485}.Threads Debug.ActiveCfg = Debug|Win32
- {4CC4B09F-1D36-46C7-A1DE-3C4DC366F485}.Threads Debug.Build.0 = Debug|Win32
- {4CC4B09F-1D36-46C7-A1DE-3C4DC366F485}.Threads DLL Debug.ActiveCfg = Debug|Win32
- {4CC4B09F-1D36-46C7-A1DE-3C4DC366F485}.Threads DLL Debug.Build.0 = Debug|Win32
- {4CC4B09F-1D36-46C7-A1DE-3C4DC366F485}.Threads DLL Release.ActiveCfg = Release|Win32
- {4CC4B09F-1D36-46C7-A1DE-3C4DC366F485}.Threads DLL Release.Build.0 = Release|Win32
- {4CC4B09F-1D36-46C7-A1DE-3C4DC366F485}.Threads Release.ActiveCfg = Release|Win32
- {4CC4B09F-1D36-46C7-A1DE-3C4DC366F485}.Threads Release.Build.0 = Release|Win32
- {EAA8D47B-CFD7-40AC-92A8-189BEF3E8C64}.Debug.ActiveCfg = Debug|Win32
- {EAA8D47B-CFD7-40AC-92A8-189BEF3E8C64}.Debug.Build.0 = Debug|Win32
- {EAA8D47B-CFD7-40AC-92A8-189BEF3E8C64}.Release.ActiveCfg = Release|Win32
- {EAA8D47B-CFD7-40AC-92A8-189BEF3E8C64}.Release.Build.0 = Release|Win32
- {EAA8D47B-CFD7-40AC-92A8-189BEF3E8C64}.Threads Debug.ActiveCfg = Debug|Win32
- {EAA8D47B-CFD7-40AC-92A8-189BEF3E8C64}.Threads Debug.Build.0 = Debug|Win32
- {EAA8D47B-CFD7-40AC-92A8-189BEF3E8C64}.Threads DLL Debug.ActiveCfg = Debug|Win32
- {EAA8D47B-CFD7-40AC-92A8-189BEF3E8C64}.Threads DLL Debug.Build.0 = Debug|Win32
- {EAA8D47B-CFD7-40AC-92A8-189BEF3E8C64}.Threads DLL Release.ActiveCfg = Release|Win32
- {EAA8D47B-CFD7-40AC-92A8-189BEF3E8C64}.Threads DLL Release.Build.0 = Release|Win32
- {EAA8D47B-CFD7-40AC-92A8-189BEF3E8C64}.Threads Release.ActiveCfg = Release|Win32
- {EAA8D47B-CFD7-40AC-92A8-189BEF3E8C64}.Threads Release.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(ExtensibilityGlobals) = postSolution
- EndGlobalSection
- GlobalSection(ExtensibilityAddIns) = postSolution
- EndGlobalSection
-EndGlobal
diff --git a/externals/grill/guitest/build-pd-linux.sh b/externals/grill/guitest/build-pd-linux.sh
deleted file mode 100644
index 413650f7..00000000
--- a/externals/grill/guitest/build-pd-linux.sh
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-
-. config-pd-linux.txt
-
-make -f makefile.pd-linux &&
-{
- if [ $INSTPATH != "" ]; then
- echo Now install as root
- su -c "make -f makefile.pd-linux install"
- fi
-}
diff --git a/externals/grill/guitest/config-pd-linux.txt b/externals/grill/guitest/config-pd-linux.txt
deleted file mode 100644
index 7a0d3302..00000000
--- a/externals/grill/guitest/config-pd-linux.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright (c) 2002-2004 Thomas Grill (xovo@gmx.net)
-#
-
-# your c++ compiler (define only if it's different than g++)
-# CXX=g++
-
-# 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
-
-# where do the flext libraries reside?
-FLEXTPATH=/usr/local/lib/pd/flext
-
-# where should flext libraries be built?
-TARGDIR=./pd-linux
-
-# where should the external be installed?
-# (leave blank to omit installation)
-INSTPATH=/usr/local/lib/pd/extra
-
-# user defined compiler flags
-UFLAGS=
-
-# define for shared build
-# FLEXT_SHARED=1
-
diff --git a/externals/grill/guitest/flgui.cpp b/externals/grill/guitest/flgui.cpp
deleted file mode 100644
index dc280b4b..00000000
--- a/externals/grill/guitest/flgui.cpp
+++ /dev/null
@@ -1,781 +0,0 @@
-#include "flgui.h"
-#include "flguiobj.h"
-#include "flinternal.h"
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-
-
-#if FLEXT_SYS == FLEXT_SYS_PD
-t_class *flext_gui::px_class = NULL;
-t_class *flext_gui::pxkey_class = NULL;
-
-struct flext_gui::px_object // no virtual table!
-{
- t_object obj; // MUST reside at memory offset 0
- t_canvas *canv;
-
- void init(t_canvas *c) { canv = c; }
-};
-
-struct flext_gui::pxkey_object // no virtual table!
-{
- t_object obj; // MUST reside at memory offset 0
- flext_gui *th;
-
- void init(flext_gui *t) { th = t; }
-};
-#endif
-
-
-flext_gui::flext_gui(int xs,int ys):
- objs(NULL),
-#if FLEXT_SYS == FLEXT_SYS_PD
- xsize(xs),ysize(ys),
-#endif
-#if FLEXT_SYS == FLEXT_SYS_MAX
- curx(-1),cury(-1),curmod(-1),
- created(false),
-#endif
- bindsym(NULL)
-{
- canvas = new FCanvas(thisCanvas());
- objs = new GuiGroup(canvas);
-
-#if FLEXT_SYS == FLEXT_SYS_PD
- AddCanvas();
-#else
- t_box *b = (t_box *)gensym("#B")->s_thing;
-
- int x = b->b_rect.left,y = b->b_rect.top;
- t_pxbox *p = thisHdr();
- box_new(&p->z_box, thisCanvas(), F_DRAWFIRSTIN | F_GROWBOTH | F_SAVVY,x,y,x+xs,y+ys);
- p->z_box.b_firstin = (void *)p; /* it's not really an inlet */
- box_ready(&p->z_box);
-#endif
-}
-
-flext_gui::~flext_gui()
-{
-#if FLEXT_SYS == FLEXT_SYS_PD
- RmvCanvas();
-#endif
-
- delete objs;
- delete canvas;
-}
-
-
-void flext_gui::setup(t_classid c)
-{
-#if FLEXT_SYS == FLEXT_SYS_PD
- SetWidget(c);
-
- pxkey_class = class_new(gensym("flext_gui key proxy"),NULL,NULL,sizeof(pxkey_object),CLASS_PD|CLASS_NOINLET, A_NULL);
- add_anything(pxkey_class,pxkey_method);
- pxkey = (pxkey_object *)pd_new(pxkey_class);
-
- pd_bind(&pxkey_class,gensym("#keyname"));
-// pd_bind(&pxkey_class,gensym("#key"));
-// pd_bind(&pxkey_class,gensym("#keyup"));
-
- gcanv = NULL;
-
-#ifdef DIRECT_TK
- px_class = class_new(gensym("flext_gui proxy"),NULL,NULL,sizeof(px_object),CLASS_PD|CLASS_NOINLET, A_NULL);
- add_anything(px_class,px_method);
-
- gcm_motion = MakeSymbol("_tk_motion");
- gcm_mousekey = MakeSymbol("_tk_mousekey");
- gcm_mousewheel = MakeSymbol("_tk_mousewheel");
- gcm_key = MakeSymbol("_tk_key");
- gcm_destroy = MakeSymbol("_tk_destroy");
-#endif
-
- // this is wrong if a modifier key is pressed during creation of the first object.....
- curmod = 0;
-
-
-
- sys_gui(
- "proc flgui_apply {id} {\n"
- // strip "." from the TK id to make a variable name suffix
- "set vid [string trimleft $id .]\n"
-
- // for each variable, make a local variable to hold its name...
- "set var_graph_width [concat graph_width_$vid]\n"
- "global $var_graph_width\n"
- "set var_graph_height [concat graph_height_$vid]\n"
- "global $var_graph_height\n"
- "set var_graph_draw [concat graph_draw_$vid]\n"
- "global $var_graph_draw\n"
-
- "set cmd [concat $id dialog [eval concat $$var_graph_width] [eval concat $$var_graph_height] [eval concat $$var_graph_draw] \\;]\n"
- // puts stderr $cmd
- "pd $cmd\n"
- "}\n"
-
- "proc flgui_cancel {id} {\n"
- "set cmd [concat $id cancel \\;]\n"
- // puts stderr $cmd
- "pd $cmd\n"
- "}\n"
-
- "proc flgui_ok {id} {\n"
- "flgui_apply $id\n"
- "flgui_cancel $id\n"
- "}\n"
-
- "proc pdtk_flgui_dialog {id width height draw} {\n"
- "set vid [string trimleft $id .]\n"
-
- "set var_graph_width [concat graph_width_$vid]\n"
- "global $var_graph_width\n"
- "set var_graph_height [concat graph_height_$vid]\n"
- "global $var_graph_height\n"
- "set var_graph_draw [concat graph_draw_$vid]\n"
- "global $var_graph_draw\n"
-
- "set $var_graph_width $width\n"
- "set $var_graph_height $height\n"
- "set $var_graph_draw $draw\n"
-
- "toplevel $id\n"
- "wm title $id {flext}\n"
- "wm protocol $id WM_DELETE_WINDOW [concat flgui_cancel $id]\n"
-
- "label $id.label -text {Attributes}\n"
- "pack $id.label -side top\n"
-
- "frame $id.buttonframe\n"
- "pack $id.buttonframe -side bottom -fill x -pady 2m\n"
-
- "button $id.buttonframe.cancel -text {Cancel} -command \"flgui_cancel $id\"\n"
- "button $id.buttonframe.apply -text {Apply} -command \"flgui_apply $id\"\n"
- "button $id.buttonframe.ok -text {OK} -command \"flgui_ok $id\"\n"
-
- "pack $id.buttonframe.cancel -side left -expand 1\n"
- "pack $id.buttonframe.apply -side left -expand 1\n"
- "pack $id.buttonframe.ok -side left -expand 1\n"
-
- "frame $id.1rangef\n"
- "pack $id.1rangef -side top\n"
- "label $id.1rangef.lwidth -text \"Width :\"\n"
- "entry $id.1rangef.width -textvariable $var_graph_width -width 7\n"
- "pack $id.1rangef.lwidth $id.1rangef.width -side left\n"
-
- "frame $id.2rangef\n"
- "pack $id.2rangef -side top\n"
- "label $id.2rangef.lheight -text \"Height :\"\n"
- "entry $id.2rangef.height -textvariable $var_graph_height -width 7\n"
- "pack $id.2rangef.lheight $id.2rangef.height -side left\n"
-
- "checkbutton $id.draw -text {Draw Sample} -variable $var_graph_draw -anchor w\n"
- "pack $id.draw -side top\n"
-
- "bind $id.1rangef.width <KeyPress-Return> [concat flgui_ok $id]\n"
- "bind $id.2rangef.height <KeyPress-Return> [concat flgui_ok $id]\n"
- "focus $id.1rangef.width\n"
- "}\n"
- );
-
-#else
- addmess((method)sg_update, "update", A_CANT, A_NULL);
- addmess((method)sg_click, "click", A_CANT, A_NULL);
- addmess((method)sg_psave, "psave", A_CANT, A_NULL);
- addmess((method)sg_bfont, "bfont", A_CANT, A_NULL);
- addmess((method)sg_key, "key", A_CANT, A_NULL);
- addmess((method)sg_bidle, "bidle", A_CANT, A_NULL);
-#endif
-}
-
-#if FLEXT_SYS == FLEXT_SYS_PD
-
-// this event mask declares supported events
-int flext_gui::evmask = evMotion|evMouseDown|evMouseDrag|evKeyDown|evKeyUp|evKeyRepeat;
-int flext_gui::curmod = 0;
-flext_gui::pxkey_object *flext_gui::pxkey = NULL;
-flext_gui::guicanv *flext_gui::gcanv = NULL;
-
-#ifdef DIRECT_TK
-const t_symbol *flext_gui::gcm_motion = NULL;
-const t_symbol *flext_gui::gcm_mousekey = NULL;
-const t_symbol *flext_gui::gcm_mousewheel = NULL;
-const t_symbol *flext_gui::gcm_key = NULL;
-const t_symbol *flext_gui::gcm_destroy = NULL;
-
-void flext_gui::px_method(px_object *obj,const t_symbol *s,int argc,t_atom *argv)
-{
- guicanv *ix = gcanv;
- for(; ix && ix->canv != obj->canv; ix = ix->nxt);
-
- if(ix) {
- CBParams parms;
-
- if(s == gcm_motion) {
- parms.kind = evMotion;
- parms.pMotion.x = GetAInt(argv[0]);
- parms.pMotion.y = GetAInt(argv[1]);
- parms.pMotion.mod = GetAInt(argv[2]);
- }
- else if(s == gcm_mousekey) {
- parms.kind = GetAInt(argv[0])?evMouseDown:evMouseUp;
- parms.pMouseKey.x = GetAInt(argv[1]);
- parms.pMouseKey.y = GetAInt(argv[2]);
- parms.pMouseKey.b = GetAInt(argv[3]);
- parms.pMouseKey.mod = GetAInt(argv[4]);
- }
- else if(s == gcm_mousewheel) {
- parms.kind = evMouseWheel;
- parms.pMouseWheel.x = GetAInt(argv[0]);
- parms.pMouseWheel.y = GetAInt(argv[1]);
- parms.pMouseWheel.mod = GetAInt(argv[2]);
- parms.pMouseWheel.delta = GetAInt(argv[3]);
- }
- else if(s == gcm_key) {
- parms.kind = GetAInt(argv[0])?evKeyDown:evKeyUp;
- parms.pKey.k = GetAInt(argv[1]);
- parms.pKey.a = GetAInt(argv[2]);
-// parms.pKey.n = GetAInt(argv[3]);
- parms.pKey.mod = GetAInt(argv[4]);
- }
- else if(s == gcm_destroy) {
-// post("TK destroy");
- DelCanvas(ix->canv);
- }
-
- if(parms.kind != evNone) {
- for(canvobj *co = ix->head; co; co = co->nxt)
- co->guiobj->m_Method(parms);
- }
-
- }
- else
- error("flext_gui: canvas not found!");
-}
-
-#endif
-
-static const char *extkeys[] = {
- "Escape","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12",
- "Prior","Next","Home","End","Delete","Insert",""
-};
-
-void flext_gui::pxkey_method(pxkey_object *obj,const t_symbol *s,int argc,t_atom *argv)
-{
-/*
- if(s == sym_float && argc == 1) {
- lastkey = GetInt(argv[0]);
- }
- else
-*/
- if(s == sym_list && argc == 2) {
- CBParams p;
-
- bool down = GetABool(argv[0]);
- const char *str = GetString(argv[1]);
- int code = str[0];
- int asc = code;
- int mod = mod_None;
- if(code && str[1] != 0) {
- code = asc = 0;
- if(GetSymbol(argv[1]) == MakeSymbol("Shift_L") || GetSymbol(argv[1]) == MakeSymbol("Shift_R")) {
- code = 2001;
- mod = mod_Shift;
- }
- else if(GetSymbol(argv[1]) == MakeSymbol("Control_L") || GetSymbol(argv[1]) == MakeSymbol("Control_R")) {
- code = 2002;
- mod = mod_Ctrl;
- }
- else if(GetSymbol(argv[1]) == MakeSymbol("Alt_L") || GetSymbol(argv[1]) == MakeSymbol("Alt_R")) {
- code = 2003;
- mod = mod_Alt;
- }
- else {
- for(int i = 0;; ++i) {
- const char *ci = extkeys[i];
- if(!*ci) break;
- if(GetSymbol(argv[1]) == MakeSymbol(ci)) {
- code = 1000+i;
- break;
- }
- }
- }
-#if 0 //def FLEXT_DEBUG
- else
- post("unknown modifier %s",str);
-#endif
- }
-
- if(down) curmod |= mod;
- else curmod &= ~mod;
-
-// post("Key down=%i c=%c mod=%i",down?1:0,code,curmod);
-
- if(code || mod) {
- // remember past keycodes for repetition detection
- static int lastcode = 0,lastasc = 0,lastmod = 0;
-
- // button is pressed
- if(down) {
- if(lastcode == code && lastmod == curmod)
- p.kind = evKeyRepeat;
- else {
- p.kind = evKeyDown;
- lastcode = code;
- lastasc = asc;
- lastmod = curmod;
- }
- }
- else {
- p.kind = evKeyUp;
- lastcode = lastasc = 0;
- }
-
- p.ext = true;
- p.pKey.k = code; //lastkey;
- p.pKey.a = asc;
- p.pKey.mod = curmod;
-
- for(guicanv *ix = gcanv; ix; ix = ix->nxt)
- for(canvobj *ci = ix->head; ci; ci = ci->nxt)
- ci->guiobj->m_Method(p);
- }
- }
- else
- post("flext_gui key proxy - unknown method");
-}
-
-void flext_gui::g_Properties()
-{
- char buf[800];
- sprintf(buf, "pdtk_flgui_dialog %%s %d %d %d\n",0, 0, 0);
- gfxstub_new((t_pd *)thisHdr(), thisHdr(), buf);
-}
-
-
-flext_gui::guicanv::guicanv(t_canvas *c):
- canv(c),nxt(NULL),ref(0),
- head(NULL),tail(NULL)
-{
- char tmp[25];
- sprintf(tmp,"FLCANV%x",c);
- sym = MakeSymbol(tmp);
-
-#ifdef DIRECT_TK
- // proxy for canvas messages
- (px = (px_object *)pd_new(px_class))->init(c);
-#endif
-}
-
-flext_gui::guicanv::~guicanv()
-{
-#ifdef DIRECT_TK
- if(px) pd_free(&px->obj.ob_pd);
-#endif
-}
-
-void flext_gui::guicanv::Push(flext_gui *o)
-{
- canvobj *co = new canvobj(o);
- if(tail) tail->nxt = co;
- tail = co;
- if(!head) head = tail;
-
- ++ref;
-}
-
-void flext_gui::guicanv::Pop(flext_gui *o)
-{
- canvobj *prv = NULL,*ix = head;
- for(; ix && ix->guiobj != o; prv = ix,ix = ix->nxt);
-
- if(ix) {
- --ref;
- if(prv) prv->nxt = ix->nxt;
- else head = ix->nxt;
- if(!ix->nxt) tail = prv;
- }
- else
- error("flext_gui: object not found in canvas!");
-}
-
-
-void flext_gui::AddCanvas()
-{
- t_canvas *c = thisCanvas();
- guicanv *prv = NULL,*ix = gcanv;
- for(; ix && ix->canv != c; prv = ix,ix = ix->nxt);
-
- if(ix) {
- ix->Push(this);
- }
- else {
- guicanv *nc = new guicanv(c);
- if(prv) prv->nxt = nc;
- else gcanv = nc;
-
- nc->Push(this);
-
-#ifdef DIRECT_TK
- pd_bind(&nc->px->obj.ob_pd,(t_symbol *)nc->sym);
-
-/*
- // initialize new canvas object
- sys_vgui("bind .x%x.c <Motion> {pd %s %s %%x %%y %%s \\;}\n",c,GetString(nc->sym),GetString(gcm_motion));
-
- sys_vgui("bind .x%x.c <ButtonPress> {pd %s %s 1 %%x %%y %%b %%s \\;}\n",c,GetString(nc->sym),GetString(gcm_mousekey));
- sys_vgui("bind .x%x.c <ButtonRelease> {pd %s %s 0 %%x %%y %%b %%s \\;}\n",c,GetString(nc->sym),GetString(gcm_mousekey));
- sys_vgui("bind .x%x.c <MouseWheel> {pd %s %s %%x %%y %%s %%D \\;}\n",c,GetString(nc->sym),GetString(gcm_mousewheel));
- sys_vgui("bind .x%x.c <KeyPress> {pd %s %s 1 %%k %%A %%N %%s \\;}\n",c,GetString(nc->sym),GetString(gcm_key));
- sys_vgui("bind .x%x.c <KeyRelease> {pd %s %s 0 %%k %%A %%N %%s \\;}\n",c,GetString(nc->sym),GetString(gcm_key));
-
- // what happend to objects in subpatchers?
- sys_vgui("bind .x%x.c <Destroy> {pd %s %s \\;}\n",c,GetString(nc->sym),GetString(gcm_destroy));
-
- // sys_vgui("bind .x%x.c <Visibility> {pd %s %s %x %s \\;}\n",c,GetString(nc->sym),"_tk_visibility",this);
-*/
-#endif
- }
-}
-
-void flext_gui::RmvCanvas()
-{
- guicanv *ix = gcanv;
- for(; ix && ix->canv != thisCanvas(); ix = ix->nxt);
-
- if(ix) {
- ix->Pop(this);
- if(!ix->Refs()) DelCanvas(thisCanvas());
- }
- else {
- error("flext_gui: Canvas not found!");
- }
-}
-
-void flext_gui::DelCanvas(t_canvas *c)
-{
- guicanv *prv = NULL,*ix = gcanv;
- for(; ix && ix->canv != c; prv = ix,ix = ix->nxt);
-
- if(ix) {
-#ifdef DIRECT_TK
- pd_unbind(&ix->px->obj.ob_pd,(t_symbol *)ix->sym);
-#endif
-
- if(prv) prv->nxt = ix->nxt;
- else gcanv = ix->nxt;
- }
- else {
- error("flext_gui: Canvas not found!");
- }
-}
-
-static GuiObj *GetGuiObj(const t_atom &a)
-{
- GuiObj *th = NULL;
- sscanf(flext::GetString(a),"%x",&th);
- return th;
-}
-
-void flext_gui::g_Displace(int dx, int dy)
-{
-// post("Displace");
-
- XLo(XLo()+dx);
- YLo(YLo()+dy);
-
- Group().MoveRel(dx,dy);
- FixLines();
-}
-
-void flext_gui::g_Delete()
-{
- objs->Clear();
- DelLines();
-}
-
-
-
-t_widgetbehavior flext_gui::widgetbehavior;
-
-void flext_gui::SetWidget(t_class *c)
-{
- // widgetbehavior struct MUST be resident... (static is just ok here)
-
- widgetbehavior.w_getrectfn = sg_getrect;
- widgetbehavior.w_displacefn = sg_displace;
- widgetbehavior.w_selectfn = sg_select;
- widgetbehavior.w_activatefn = NULL; //sg_activate;
- widgetbehavior.w_deletefn = sg_delete;
- widgetbehavior.w_visfn = sg_vis;
- widgetbehavior.w_clickfn = sg_click;
-
-#if PD_MINOR_VERSION >= 37
- class_setpropertiesfn(c,sg_properties);
- class_setsavefn(c,sg_save);
-#else
- widgetbehavior.w_propertiesfn = sg_properties;
- widgetbehavior.w_savefn = sg_save;
-#endif
-
- class_setwidget(c, &widgetbehavior);
-}
-
-void flext_gui::sg_getrect(t_gobj *c, t_glist *,int *xp1, int *yp1, int *xp2, int *yp2)
-{
- flext_gui *th = thisObject(c);
- /*th->g_GetRect(*xp1,*yp1,*xp2,*yp2);*/
- *xp1 = th->XLo(),*yp1 = th->YLo(),*xp2 = th->XHi(),*yp2 = th->YHi();
-}
-
-void flext_gui::sg_displace(t_gobj *c, t_glist *, int dx, int dy)
-{
- thisObject(c)->g_Displace(dx,dy);
-}
-
-void flext_gui::sg_select(t_gobj *c, t_glist *, int selected)
-{
-// post("Select");
-
- flext_gui *th = thisObject(c);
- th->g_Edit(th->selected = (selected != 0));
-}
-
-void flext_gui::sg_vis(t_gobj *c, t_glist *, int vis)
-{
- post("Visible %i",vis);
-
- if(vis) {
- flext_gui *g = thisObject(c);
- g->g_Create();
- g->Group().MoveRel(g->XLo(),g->YLo());
- g->FixLines();
- }
-}
-
-int flext_gui::sg_click(t_gobj *c, t_glist *gl,int xpix, int ypix, int shift, int alt, int dbl, int doit)
-{
- flext_gui *g = thisObject(c);
- CBParams p;
- int x = xpix-g->XLo();
- int y = ypix-g->YLo();
-
- // PD bug: shift isn't reported for idle mousing
-// int mod = (alt?mod_Alt:0)+(shift?mod_Shift:0)+(dbl?mod_Double:0);
-
- if(doit) {
- // button is pressed
- p.kind = evMouseDown;
- p.pMouseKey.x = g->xdrag = x;
- p.pMouseKey.y = g->ydrag = y;
- g->dxdrag = g->dydrag = 0;
- p.pMouseKey.b = 1;
- p.pMouseKey.mod = curmod; //mod;
-
- glist_grab(gl,c,(t_glistmotionfn)sg_drag,0,xpix,ypix);
- }
- else {
- // only mouse position change
- p.kind = evMotion;
- p.pMotion.x = x;
- p.pMotion.y = y;
- p.pMotion.mod = curmod; //mod;
- }
- g->m_Method(p);
- return 1;
-}
-
-void flext_gui::sg_drag(t_gobj *c,t_floatarg dx,t_floatarg dy)
-{
- flext_gui *g = thisObject(c);
- CBParams p;
- p.kind = evMouseDrag;
- p.pMouseDrag.dx = (g->dxdrag += (int)dx);
- p.pMouseDrag.dy = (g->dydrag += (int)dy);
- p.pMouseDrag.x = g->xdrag+g->dxdrag;
- p.pMouseDrag.y = g->ydrag+g->dydrag;;
- p.pMouseDrag.b = 1;
- p.pMouseDrag.mod = curmod; //mod;
- g->m_Method(p);
-}
-
-void flext_gui::sg_delete(t_gobj *c, t_glist *)
-{
- thisObject(c)->g_Delete();
-}
-
-void flext_gui::sg_properties(t_gobj *c, t_glist *)
-{
- thisObject(c)->g_Properties();
-}
-
-void flext_gui::sg_save(t_gobj *c, t_binbuf *b)
-{
- thisObject(c)->g_Save(b);
-}
-
-/*
-bool flext_gui::sg_Key(flext_base *c,int argc,t_atom *argv)
-{
- return true;
-}
-
-bool flext_gui::sg_KeyNum(flext_base *c,int &keynum)
-{
- flext_gui *g = dynamic_cast<flext_gui *>(c);
- post("KeyNum %i",keynum);
- return true;
-}
-
-bool flext_gui::sg_KeyUp(flext_base *c,int &keynum)
-{
- flext_gui *g = dynamic_cast<flext_gui *>(c);
- post("KeyUp %i",keynum);
- return true;
-}
-*/
-
-#else // MAXMSP
-
-// this declared supported events
-int flext_gui::evmask = evMotion|evMouseDown|evKeyDown;
-
-static void dragfun()
-{
-}
-
-static void tmfun()
-{
-}
-
-void flext_gui::sg_click(t_object *x, Point pt, short m)
-{
- flext_gui *g = thisObject(x);
- CBParams p(evMouseDown);
- p.pMouseKey.x = pt.h-g->XLo();
- p.pMouseKey.y = pt.v-g->YLo();
- p.pMouseKey.b = 0;
- p.pMouseKey.mod = (m&256?mod_Meta:0)+(m&512?mod_Shift:0)+(m&1024?mod_Caps:0)+(m&2048?mod_Alt:0)+(m&4096?mod_Ctrl:0);
- g->m_Method(p);
-}
-
-void flext_gui::sg_update(t_object *x)
-{
- flext_gui *g = thisObject(x);
- if(!g->created) { g->g_Create(); g->created = true; }
-
- // draw elements
- g->Update();
-}
-
-void flext_gui::sg_psave (t_object *x, t_binbuf *dest) { thisObject(x)->g_Save(dest); }
-
-void flext_gui::sg_bfont (t_object *x, short size, short font) {}
-
-void flext_gui::sg_key (t_object *x, short keyvalue)
-{
- flext_gui *g = thisObject(x);
-
- CBParams p(evKeyDown);
- p.pKey.k = keyvalue;
- p.pKey.a = 0;
- p.pKey.mod = 0;
- g->m_Method(p);
-}
-
-void flext_gui::sg_enter (t_object *x) {}
-
-void flext_gui::sg_clipregion (t_object *x, RgnHandle *rgn, short *result) {}
-
-void flext_gui::sg_bidle (t_object *x)
-{
- flext_gui *g = thisObject(x);
- Point pnt; GetMouse(&pnt);
-
- CBParams p(evMotion);
- p.pMotion.x = pnt.h-g->XLo();
- p.pMotion.y = pnt.v-g->YLo();
- p.pMotion.mod = 0;
-
- if(p.pMotion.x != g->curx || p.pMotion.y != g->cury || p.pMotion.mod != g->curmod) {
- g->m_Method(p);
- g->curx = p.pMotion.x;
- g->cury = p.pMotion.y;
- g->curmod = p.pMotion.mod;
- }
-}
-
-void flext_gui::g_Displace(int dx, int dy)
-{
-}
-
-void flext_gui::g_Delete()
-{
- objs->Clear();
-}
-
-void flext_gui::Update()
-{
- box_ready(&thisHdr()->z_box);
-
- if(Group().Canv().Pre(XLo(),YLo()))
- Group().Draw();
- Group().Canv().Post();
-}
-
-#endif // PD / MAXMSP
-
-void flext_gui::m_Method(const CBParams &p)
-{
-/*
- switch(p.kind) {
- case evMotion: {
- // if(!g->Selected() || mod)
- post("Motion: x=%i y=%i m=%i",p.pMotion.x,p.pMotion.y,p.pMotion.mod);
- break;
- }
- case evMouseDown: {
- post("MouseDown: x=%i y=%i b=%i m=%i",p.pMouseKey.x,p.pMouseKey.y,p.pMouseKey.b,p.pMouseKey.mod);
- break;
- }
- case evMouseUp: {
- post("MouseUp: x=%i y=%i b=%i m=%i",p.pMouseKey.x,p.pMouseKey.y,p.pMouseKey.b,p.pMouseKey.mod);
- break;
- }
- case evMouseWheel: {
- post("Mousewheel: x=%i y=%i m=%i d=%i",p.pMouseWheel.x,p.pMouseWheel.y,p.pMouseWheel.mod,p.pMouseWheel.delta);
- break;
- }
- case evKeyDown: {
- post("KeyDown: k=%i a=%i m=%i",p.pKey.k,p.pKey.a,p.pKey.mod);
- break;
- }
- case evKeyUp: {
- post("KeyUp: k=%i a=%i m=%i",p.pKey.k,p.pKey.a,p.pKey.mod);
- break;
- }
- }
-*/
- if(!Selected() || p.kind != evMotion || p.kind != evMouseDown || p.kind != evMouseUp)
- Group().Method(*this,p);
- }
-
-bool flext_gui::BindEvent(GuiSingle &o,bool (*cb)(flext_gui &o,GuiSingle &obj,const CBParams &p),int evs)
-{
- if((evs&EventMask()) == evs) {
- o.AddEvent(evs,cb);
- return true;
- }
- else
- // not all requested events supported
- return false;
-}
-
-void flext_gui::UnbindEvent(GuiSingle &o,bool (*cb)(flext_gui &o,GuiSingle &obj,const CBParams &p),int evs)
-{
- o.RmvEvent(evs,cb);
-}
-
-
diff --git a/externals/grill/guitest/flgui.h b/externals/grill/guitest/flgui.h
deleted file mode 100644
index 0f62f01b..00000000
--- a/externals/grill/guitest/flgui.h
+++ /dev/null
@@ -1,237 +0,0 @@
-#ifndef __FLEXT_GUI
-#define __FLEXT_GUI
-
-//#define FLEXT_VIRT
-#include <flext.h>
-
-#if FLEXT_SYS == FLEXT_SYS_PD
-#pragma warning( disable : 4091 )
-#include <g_canvas.h>
-#endif
-
-class FCanvas;
-class GuiObj;
-class GuiGroup;
-class GuiSingle;
-
-class flext_gui:
- public flext_base
-{
- FLEXT_HEADER_S(flext_gui,flext_dsp,setup)
-
-public:
- flext_gui(int xs,int ys);
- ~flext_gui();
-
- enum CBEvs {
- evNone = 0,
- evMotion = 0x01,
- evMouseDown = 0x02,
- evMouseUp = 0x04,
- evMouseWheel = 0x08,
- evMouseDrag = 0x10,
- evKeyDown = 0x20,
- evKeyUp = 0x40,
- evKeyRepeat = 0x80
- };
-
- class CBParams {
- public:
- CBParams(CBEvs k = evNone): kind(k),ext(false) {}
-
- CBEvs kind;
- union {
- struct { int x,y,mod; } pMotion;
- struct { int x,y,b,mod; } pMouseKey;
- struct { int x,y,mod,delta; } pMouseWheel;
- struct { int x,y,dx,dy,b,mod; } pMouseDrag;
- struct { int k,a,mod; } pKey;
- };
- bool ext;
- };
-
- static int EventMask() { return evmask; }
-
- bool BindEvent(GuiSingle &o,bool (*cb)(flext_gui &o,GuiSingle &obj,const CBParams &p),int evs);
- void UnbindEvent(GuiSingle &o,bool (*cb)(flext_gui &o,GuiSingle &obj,const CBParams &p),int evs);
-
-protected:
-
- virtual void g_Create() {}
- virtual void g_Delete();
-// virtual void g_GetRect(int &xp1,int &yp1,int &xp2,int &yp2);
- virtual void g_Edit(bool selected) {}
- virtual void g_Displace(int dx, int dy);
-// virtual void g_Activate(bool state) {}
-// virtual int g_Click(int xpix, int ypix, int shift, int alt, int dbl, int doit) { return 0; }
- virtual void g_Properties();
- virtual void g_Save(t_binbuf *b) {}
-/*
- virtual bool g_Motion(GuiObj &obj,int x,int y,int mod) { return false; }
- virtual bool g_MouseKey(GuiObj &obj,bool down,int x,int y,int b,int mod) { return false; }
- virtual bool g_MouseWheel(GuiObj &obj,int x,int y,int d,int mod) { return false; }
- virtual bool g_Key(GuiObj &obj,bool down,int k,int a,int n,int mod) { return false; }
- virtual bool g_Region(GuiObj &obj,bool on,int mod) { return false; }
- virtual bool g_Focus(GuiObj &obj,bool on,int mod) { return false; }
-*/
-
-#if FLEXT_SYS == FLEXT_SYS_PD
- bool Selected() const { return selected; }
-
- void FixLines() { canvas_fixlinesfor( thisCanvas(), thisHdr() ); }
- void DelLines() { canvas_deletelinesfor( glist_getcanvas(thisCanvas()), (t_text *)thisHdr()); }
-
- int XLo() const { return thisHdr()->te_xpix; }
- int YLo() const { return thisHdr()->te_ypix; }
- int XHi() const { return XLo()+XSize()-1; }
- int YHi() const { return YLo()+YSize()-1; }
- void XLo(int x) { thisHdr()->te_xpix = x; }
- void YLo(int y) { thisHdr()->te_ypix = y; }
-
- int XSize() const { return xsize; }
- int YSize() const { return ysize; }
-#else // MAXMSP
- bool Selected() const { return box_ownerlocked((t_box *)(&thisHdr()->z_box)) == 0; }
-
- void FixLines() {}
- void DelLines() {}
-
- int XLo() const { return thisHdr()->z_box.b_rect.left; }
- int YLo() const { return thisHdr()->z_box.b_rect.top; }
- int XHi() const { return thisHdr()->z_box.b_rect.right; }
- int YHi() const { return thisHdr()->z_box.b_rect.bottom; }
- void XLo(int x) { thisHdr()->z_box.b_rect.left = x; }
- void YLo(int y) { thisHdr()->z_box.b_rect.top = y; }
-
- int XSize() const { return XHi()-XLo()+1; }
- int YSize() const { return YHi()-YLo()+1; }
-#endif
-
- const t_symbol *Id() const { return bindsym; }
-
- GuiGroup &Group() { return *objs; }
-
-
-// static void Setup(t_class *c);
-
-
- enum Modifier {
- mod_None = 0,
- mod_Ctrl = 0x0001,
- mod_Shift = 0x0002,
- mod_Alt = 0x0004,
- mod_Meta = 0x0008,
- mod_Mod1 = 0x0010,
- mod_Mod2 = 0x0020,
- mod_Mod3 = 0x0040,
- mod_Caps = 0x0080,
- mod_Double = 0x0100,
-// mod_Triple = 0x0200,
- mod_Button1 = 0x1000,
- mod_Button2 = 0x2000,
- mod_Button3 = 0x4000,
- mod_Button4 = 0x8000
- };
-
-private:
- bool visible;
- FCanvas *canvas;
- GuiGroup *objs;
-
- const t_symbol *bindsym;
-
- static int evmask;
-
- static void setup(t_class *);
-
- virtual void m_Method(const CBParams &p);
-
-#if FLEXT_SYS == FLEXT_SYS_PD
- bool selected;
- int xsize,ysize;
- int xdrag,ydrag,dxdrag,dydrag;
-
- static void sg_getrect(t_gobj *c, t_glist *,int *xp1, int *yp1, int *xp2, int *yp2);
- static void sg_displace(t_gobj *c, t_glist *, int dx, int dy);
- static void sg_select(t_gobj *c, t_glist *, int selected);
-// static void sg_activate(t_gobj *c, t_glist *, int state) { thisObject(c)->g_Activate(state != 0); }
- static void sg_delete(t_gobj *c, t_glist *);
- static void sg_vis(t_gobj *c, t_glist *, int vis);
- static int sg_click(t_gobj *c, t_glist *,int xpix, int ypix, int shift, int alt, int dbl, int doit);
- static void sg_drag(t_gobj *x, t_floatarg dx, t_floatarg dy);
- static void sg_properties(t_gobj *c, t_glist *);
- static void sg_save(t_gobj *c, t_binbuf *b);
-// static void sg_motion(void *c, float dx,float dy) { thisObject((t_gobj *)c)->g_Motion(dx,dy); }
-
- static bool sg_Key(flext_base *c,int argc,t_atom *argv);
- static bool sg_KeyNum(flext_base *c,int &keynum);
- static bool sg_KeyUp(flext_base *c,int &keynum);
-
- static t_widgetbehavior widgetbehavior;
- static void SetWidget(t_class *c);
-
- struct px_object;
- struct pxkey_object;
- static int curmod; //,lastkey;
- static pxkey_object *pxkey;
-
- class canvobj {
- public:
- canvobj(flext_gui *go): guiobj(go),nxt(NULL) {}
-
- flext_gui *guiobj;
- canvobj *nxt;
- };
-
- class guicanv {
- public:
- guicanv(t_canvas *c);
- ~guicanv();
-
- int Refs() const { return ref; }
- void Push(flext_gui *o);
- void Pop(flext_gui *o);
-
-#ifdef DIRECT_TK
- px_object *px;
-#endif
- const t_symbol *sym;
- t_canvas *canv;
- guicanv *nxt;
- canvobj *head,*tail;
- int ref;
- };
-
- static guicanv *gcanv;
- static const t_symbol *gcm_motion,*gcm_mousekey,*gcm_mousewheel,*gcm_key,*gcm_destroy;
- static void px_method(px_object *c,const t_symbol *s,int argc,t_atom *argv);
- static void pxkey_method(pxkey_object *c,const t_symbol *s,int argc,t_atom *argv);
-
- void AddCanvas();
- void RmvCanvas();
- static void DelCanvas(t_canvas *c);
-
-public:
- static t_class *px_class,*pxkey_class;
- static void sg_tk(t_canvas *c,const t_symbol *s,int argc,t_atom *argv);
-
-#else // MAXMSP
- int curx,cury,curmod;
- bool created;
- static t_clock clock;
- static t_qelem qelem;
-
- void Update();
-
- static void sg_click(t_object *x, Point pt, short modifiers);
- static void sg_update(t_object *x);
- static void sg_psave (t_object *x, t_binbuf *dest);
- static void sg_bfont (t_object *x, short size, short font);
- static void sg_key (t_object *x,short keyvalue);
- static void sg_enter (t_object *x);
- static void sg_clipregion (t_object *x, RgnHandle *rgn, short *result);
- static void sg_bidle(t_object *x);
-#endif
-};
-
-#endif
diff --git a/externals/grill/guitest/flguiobj.cpp b/externals/grill/guitest/flguiobj.cpp
deleted file mode 100644
index 7bb22098..00000000
--- a/externals/grill/guitest/flguiobj.cpp
+++ /dev/null
@@ -1,801 +0,0 @@
-#include "flguiobj.h"
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <stdarg.h>
-
-
-#define USETAGS
-
-#define BUFSIZE 20000
-#define ZONE 1000
-
-
-#if FLEXT_SYS == FLEXT_SYS_PD
-bool FCanvas::store = true;
-bool FCanvas::debug = false;
-#endif
-
-FCanvas::FCanvas(t_canvas *c):
- canvas(c)
-#if FLEXT_SYS == FLEXT_SYS_PD
- ,buffer(new char[BUFSIZE]),bufix(0),waiting(0)
-#endif
-{}
-
-FCanvas::~FCanvas()
-{
-#if FLEXT_SYS == FLEXT_SYS_PD
- if(buffer) delete[] buffer;
-#endif
-}
-
-#if FLEXT_SYS == FLEXT_SYS_PD
-void FCanvas::Send(const char *t)
-{
- if(debug) post("GUI - %s",t);
- sys_gui((char *)t);
-}
-
-void FCanvas::SendBuf()
-{
- if(bufix) {
- Send(buffer);
- bufix = 0;
- }
-}
-
-void FCanvas::ToBuf(const char *t)
-{
- int len = strlen(t);
- if(!len) return;
-
- bool end = t[len-1] == '\n';
- if((store && waiting) || !end) {
- int nxt = bufix+len;
- if(nxt >= BUFSIZE || (end && nxt >= BUFSIZE-ZONE)) SendBuf();
-
- memcpy(buffer+bufix,t,len);
- buffer[bufix += len] = 0;
- }
- else {
- SendBuf();
- Send(t);
- }
-}
-
-FCanvas &FCanvas::TkC()
-{
- char tmp[20];
- sprintf(tmp,".x%x.c ",canvas);
- ToBuf(tmp);
- return *this;
-}
-
-FCanvas &FCanvas::TkE()
-{
- ToBuf("\n");
- return *this;
-}
-
-FCanvas &FCanvas::Tk(char *fmt,...)
-{
- // int result, i;
- char buf[2048];
- va_list ap;
-
- va_start(ap, fmt);
- vsprintf(buf, fmt, ap);
- ToBuf(buf);
- va_end(ap);
- return *this;
-}
-#endif
-
-bool FCanvas::Pre(int x,int y)
-{
- xpos = x,ypos = y;
-#if FLEXT_SYS == FLEXT_SYS_PD
- ++waiting;
- return true;
-#else
- svgp = patcher_setport(canvas);
- if(svgp != NULL) {
- GetForeColor(&svcol);
- GetPenState(&svpen);
- ::PenMode(patCopy);
- return true;
- }
- else return false;
-#endif
-}
-
-void FCanvas::Post()
-{
-#if FLEXT_SYS == FLEXT_SYS_PD
- if(!--waiting) SendBuf();
-#else
- if(svgp) {
- RGBForeColor(&svcol);
- SetPenState(&svpen);
- SetPort(svgp);
- }
-#endif
-}
-
-
-// --------------------------------------------------------------------------
-
-
-FRect &FRect::Add(const FPnt &p)
-{
- if(p.x < lo.x) lo.x = p.x;
- if(p.y < lo.y) lo.y = p.y;
- if(p.x > hi.x) hi.x = p.x;
- if(p.y > hi.y) hi.y = p.y;
- return *this;
-}
-
-FRect &FRect::Add(const FRect &r)
-{
- if(r.lo.x < lo.x) lo.x = r.lo.x;
- if(r.lo.y < lo.y) lo.y = r.lo.y;
- if(r.hi.x > hi.x) hi.x = r.hi.x;
- if(r.hi.y > hi.y) hi.y = r.hi.y;
- return *this;
-}
-
-bool FRect::In(const FPnt &p) const
-{
- return p.x >= lo.x && p.x <= hi.x && p.y >= lo.y && p.y <= hi.y;
-}
-
-bool FRect::Inter(const FRect &r) const
-{
- return true;
-}
-
-
-// --------------------------------------------------------------------------
-
-
-GuiObj::GuiObj(FCanvas *c,GuiGroup *p):
- canvas(c),idsym(NULL),
- parent(p)
-// ,ori(0,0)
-{}
-
-GuiObj::~GuiObj()
-{
-// Delete();
-}
-
-
-// --------------------------------------------------------------------------
-
-GuiSingle::Event::Event(int evmask,bool (*m)(flext_gui &g,GuiSingle &obj,const flext_gui::CBParams &p)):
- methfl(evmask),method(m),ext(false),nxt(NULL)
-{}
-
-GuiSingle::Event::~Event() { if(nxt) delete nxt; }
-
-
-GuiSingle::GuiSingle(FCanvas *c,GuiGroup *p,const t_symbol *s):
- GuiObj(c,p),sym(s),active(false),event(NULL)
-{
- char tmp[20];
-#ifdef __MWERKS__
- std::
-#endif
- sprintf(tmp,"GUI%x",this);
- idsym = MakeSymbol(tmp);
-}
-
-GuiSingle::~GuiSingle()
-{
- Delete();
- if(event) delete event;
-}
-
-void GuiSingle::Symbol(const t_symbol *s)
-{
- sym = s;
-}
-
-GuiSingle *GuiSingle::Find(const t_symbol *s)
-{
- return sym == s?this:NULL;
-}
-
-GuiObj &GuiSingle::MoveTo(int x,int y)
-{
-#if FLEXT_SYS == FLEXT_SYS_PD
- if(active) {
- canvas->TkC().Tk("coords %s %i %i\n",GetString(Id()), x, y);
- }
-#endif
- rect.MoveTo(x,y);
- return *this;
-}
-
-GuiObj &GuiSingle::MoveRel(int dx,int dy)
-{
-#if FLEXT_SYS == FLEXT_SYS_PD
- if(active) {
- canvas->TkC().Tk("move %s %i %i\n",GetString(Id()), dx, dy);
- }
-#endif
- rect.Move(dx,dy);
- return *this;
-}
-
-GuiObj &GuiSingle::Delete()
-{
-#if FLEXT_SYS == FLEXT_SYS_PD
- if(active) {
- canvas->TkC().Tk("delete -tags %s\n",GetString(Id()));
- active = false;
- }
-#endif
- return *this;
-}
-
-GuiObj &GuiSingle::FillColor(unsigned long col)
-{
-#if FLEXT_SYS == FLEXT_SYS_PD
- if(active) {
- canvas->TkC().Tk("itemconfigure %s -fill #%06x\n",GetString(Id()),col);
- }
-#endif
- return *this;
-}
-
-GuiObj &GuiSingle::Outline(unsigned long col)
-{
-#if FLEXT_SYS == FLEXT_SYS_PD
- if(active) {
- canvas->TkC().Tk("itemconfigure %s -outline #%06x\n",GetString(Id()),col);
- }
-#endif
- return *this;
-}
-
-GuiObj &GuiSingle::Focus()
-{
-#if FLEXT_SYS == FLEXT_SYS_PD
- if(active) {
- canvas->TkC().Tk("focus %s\n",GetString(Id()));
- }
-#endif
- return *this;
-}
-
-bool GuiSingle::Method(flext_gui &g,const flext_gui::CBParams &p)
-{
- bool ret = true;
- for(Event *ei = event; ei && ret; ei = ei->nxt)
- ret = ret && ((ei->method && (ei->methfl&p.kind))?ei->method(g,*this,p):true);
- return ret;
-}
-
-void GuiSingle::AddEvent(int evmask,bool (*m)(flext_gui &g,GuiSingle &obj,const flext_gui::CBParams &p))
-{
- Event *prv = NULL,*ix = event;
- for(; ix && ix->method != m; prv = ix,ix = ix->nxt) {}
-
- if(ix)
- // previous handler found -> update event mask
- ix->methfl |= evmask;
- else {
- // no previous handler was found -> make new one
-
- Event *nev = new Event(evmask,m);
- if(prv) prv->nxt = nev;
- else event = nev;
- }
-}
-
-void GuiSingle::RmvEvent(int evmask,bool (*m)(flext_gui &g,GuiSingle &obj,const flext_gui::CBParams &p))
-{
- Event *prv = NULL,*ix = event;
- for(; ix && ix->method != m; prv = ix,ix = ix->nxt) {}
-
- if(ix) {
- // handler found
-
- if(!(ix->methfl &= ~evmask)) {
- // mask has become zero -> remove handler
-
- if(prv) prv->nxt = ix->nxt;
- else event = ix->nxt;
- ix->nxt = NULL;
- delete ix;
- }
- }
-}
-
-
-
-// --------------------------------------------------------------------------
-
-
-GuiGroup::GuiGroup(FCanvas *c,GuiGroup *p):
- GuiObj(c,p),head(NULL),tail(NULL)
-{
- char tmp[20];
-#ifdef __MWERKS__
- std::
-#endif
- sprintf(tmp,"GRP%x",this);
- idsym = MakeSymbol(tmp);
-}
-
-GuiGroup::~GuiGroup() { Clear(); }
-
-void GuiGroup::Clear()
-{
- for(Part *ix = head; ix; ) {
- Part *n = ix->nxt;
-#if FLEXT_SYS == FLEXT_SYS_PD
- RemoveTag(ix->obj);
-#endif
- if(ix->owner) delete ix->obj;
- delete ix;
- ix = n;
- }
- head = tail = NULL;
-}
-
-void GuiGroup::Add(GuiObj *o,bool owner)
-{
- o->canvas = canvas;
-#if FLEXT_SYS == FLEXT_SYS_PD
- AddTag(o); // valid only for GuiSingle!
-#endif
- Part *n = new Part(o,owner);
- if(!head) head = n;
- else tail->nxt = n;
- tail = n;
-
- rect.Add(o->rect);
-}
-
-GuiSingle *GuiGroup::Find(const t_symbol *s)
-{
- GuiSingle *r = NULL;
- for(Part *ix = head; ix && !r; ix = ix->nxt) {
- r = ix->obj->Find(s);
- }
- return r;
-}
-
-GuiSingle *GuiGroup::Detach(const t_symbol *s)
-{
- if(head) {
- Part *p = NULL,*ix = head;
- while(ix) {
- if(ix->obj->Symbol() == s) {
- // found
- if(p) p->nxt = ix->nxt;
- GuiSingle *ret = (GuiSingle *)(ix->obj);
-
-#if FLEXT_SYS == FLEXT_SYS_PD
- RemoveTag(ret);
-#endif
- if(head == ix) head = ix->nxt;
- if(tail == ix) tail = p;
-
- delete ix;
-
- return ret;
- }
- else p = ix,ix = ix->nxt;
- }
- }
- return NULL;
-}
-
-GuiObj &GuiGroup::MoveRel(int dx,int dy)
-{
-#if FLEXT_SYS == FLEXT_SYS_PD
- canvas->TkC().Tk("move %s %i %i\n",GetString(Id()), dx, dy);
-#endif
- for(Part *ix = head; ix; ix = ix->nxt) {
- ix->obj->rect.Move(dx,dy);
- }
- return *this;
-}
-
-GuiObj &GuiGroup::Delete()
-{
-#if FLEXT_SYS == FLEXT_SYS_PD
- canvas->TkC().Tk("delete -tags %s\n",GetString(Id()));
-
- for(Part *ix = head; ix; ix = ix->nxt) ix->obj->Inactive();
-#endif
- return *this;
-}
-
-
-GuiObj &GuiGroup::Draw()
-{
- for(Part *ix = head; ix; ix = ix->nxt) ix->obj->Draw();
- return *this;
-}
-
-
-#if FLEXT_SYS == FLEXT_SYS_PD
-
-void GuiGroup::AddTag(GuiObj *o)
-{
- canvas->TkC().Tk("addtag %s withtag %s\n",GetString(Id()),GetString(o->Id()));
-}
-
-void GuiGroup::RemoveTag(GuiObj *o)
-{
- canvas->TkC().Tk("dtag %s %s\n",GetString(o->Id()),GetString(Id()));
-}
-
-#endif
-
-GuiGroup *GuiGroup::Add_Group()
-{
- GuiGroup *obj = new GuiGroup(canvas,this);
- Add(obj);
- return obj;
-}
-
-
-GuiSingle *GuiGroup::Add_Point(int x,int y,long fill)
-{
- GuiPoint *obj = new GuiPoint(canvas,this);
- obj->Set(x,y,fill);
- Add(obj);
- return obj;
-}
-
-GuiSingle *GuiGroup::Add_Cloud(int n,const FPnt *p,long fill)
-{
- GuiCloud *obj = new GuiCloud(canvas,this);
- obj->Set(n,p,fill);
- Add(obj);
- return obj;
-}
-
-GuiSingle *GuiGroup::Add_Box(int x,int y,int xsz,int ysz,int width,long fill,long outl)
-{
- GuiBox *obj = new GuiBox(canvas,this);
- obj->Set(x,y,xsz,ysz,width,fill,outl);
- Add(obj);
- return obj;
-}
-
-GuiSingle *GuiGroup::Add_Rect(int x,int y,int xsz,int ysz,int width,long outl)
-{
- GuiRect *obj = new GuiRect(canvas,this);
- obj->Set(x,y,xsz,ysz,width,outl);
- Add(obj);
- return obj;
-}
-
-GuiSingle *GuiGroup::Add_Line(int x1,int y1,int x2,int y2,int width,long fill)
-{
- GuiLine *obj = new GuiLine(canvas,this);
- obj->Set(x1,y1,x2,y2,width,fill);
- Add(obj);
- return obj;
-}
-
-GuiSingle *GuiGroup::Add_Poly(int n,const FPnt *p,int width,long fill)
-{
- GuiPoly *obj = new GuiPoly(canvas,this);
- obj->Set(n,p,width,fill);
- Add(obj);
- return obj;
-}
-
-GuiSingle *GuiGroup::Add_Text(int x,int y,const char *txt,long fill,GuiText::just_t just)
-{
- GuiText *obj = new GuiText(canvas,this);
- obj->Set(x,y,txt,fill,just);
- Add(obj);
- return obj;
-}
-
-GuiSingle *GuiGroup::Remove(GuiSingle *go)
-{
- for(Part *prv = NULL,*ix = head; ix; prv = ix,ix = ix->nxt)
- if(ix->obj == go) {
- if(prv) prv->nxt = ix->nxt;
- else head = ix->nxt;
- if(!head) tail = NULL;
-
- GuiObj *ret = ix->obj;
- delete ix;
-
- if(head) {
- rect = head->obj->rect;
- for(ix = head->nxt; ix; ix = ix->nxt) rect.Add(ix->obj->rect);
- }
-
- return (GuiSingle *)ret;
- }
-
- return NULL;
-}
-
-bool GuiGroup::Method(flext_gui &g,const flext_gui::CBParams &p)
-{
- bool go = true;
- for(Part *ix = head; go && ix; ix = ix->nxt) go = go && ix->obj->Method(g,p);
- return go;
-}
-
-
-// --------------------------------------------------------------------------
-
-
-GuiObj &GuiPoint::Set(int x,int y,long fl)
-{
- Delete();
- fill = fl;
- rect(x,y,x,y);
-
-#if FLEXT_SYS == FLEXT_SYS_PD
- canvas->TkC();
- canvas->Tk("create line %i %i %i %i -tags %s",x,y,x+1,y,GetString(Id()));
- if(fill >= 0) canvas->Tk(" -fill #%06x",fill);
- canvas->TkE();
-
- active = true;
-#endif
- return *this;
-}
-
-GuiObj &GuiPoint::Draw()
-{
-#if FLEXT_SYS == FLEXT_SYS_MAX
-#endif
- return *this;
-}
-
-
-GuiObj &GuiCloud::Set(int n,const FPnt *p,long fl)
-{
- int i;
- Delete();
-
- fill = fl;
- pnt = new FPnt[pnts = n];
- rect(pnt[0] = p[0],p[0]);
- for(i = 1; i < n; ++i) rect.Add(pnt[i] = p[i]);
-
-#if FLEXT_SYS == FLEXT_SYS_PD
- canvas->TkC().Tk("create line");
- for(i = 0; i < n; ++i)
- canvas->Tk(" %i %i",p[i].X(),p[i].Y());
- canvas->Tk(" -tags %s",GetString(Id()));
- if(fill >= 0) canvas->Tk(" -fill #%06x",fill);
- canvas->TkE();
-
- active = true;
-#endif
- return *this;
-}
-
-GuiObj &GuiCloud::Draw()
-{
-#if FLEXT_SYS == FLEXT_SYS_MAX
-#endif
- return *this;
-}
-
-GuiObj &GuiCloud::Delete()
-{
- if(pnt) { delete[] pnt; pnt = NULL; }
- return *this;
-}
-
-
-GuiObj &GuiBox::Set(int x,int y,int xsz,int ysz,int wd,long fl,long outl)
-{
- Delete();
- rect(x,y,x+xsz-1,y+ysz-1);
- width = wd,fill = fl,outln = outl;
-
-#if FLEXT_SYS == FLEXT_SYS_PD
- canvas->TkC().Tk("create rectangle %i %i %i %i -tags %s",x,y,x+xsz,y+ysz,GetString(Id()));
- if(wd >= 0) canvas->Tk(" -width %i",wd);
- if(fl >= 0) canvas->Tk(" -fill #%06x",fl);
- if(outl >= 0) canvas->Tk(" -outline #%06x",outl);
- canvas->TkE();
-
- active = true;
-#endif
- return *this;
-}
-
-GuiObj &GuiBox::Draw()
-{
-#if FLEXT_SYS == FLEXT_SYS_MAX
- ::Rect r;
- ::RGBColor col;
- int w = width;
- if(!w) w = 1;
-
- r.left = Canv().X()+rect.Lo().X();
- r.top = Canv().Y()+rect.Lo().Y();
- r.right = Canv().X()+rect.Hi().X();
- r.bottom = Canv().Y()+rect.Hi().Y();
-
- if(width >= 0) {
- col.red = (outln>>8)&0xff00;
- col.green = outln&0xff00;
- col.blue = (outln&0xff)<<8;
- ::RGBForeColor(&col);
- ::PenSize(w,w);
- ::FrameRect(&r);
- }
- col.red = (fill>>8)&0xff00;
- col.green = fill&0xff00;
- col.blue = (fill&0xff)<<8;
- ::RGBForeColor(&col);
- ::PaintRect(&r);
-#endif
- return *this;
-}
-
-
-GuiObj &GuiRect::Set(int x,int y,int xsz,int ysz,int wd,long outl)
-{
- Delete();
- rect(x,y,x+xsz-1,y+ysz-1);
- width = wd,outln = outl;
-
-#if FLEXT_SYS == FLEXT_SYS_PD
- canvas->TkC().Tk("create line %i %i %i %i %i %i %i %i %i %i -tags %s",x,y,x+xsz,y,x+xsz,y+ysz,x,y+ysz,x,y,GetString(Id()));
- if(width >= 0) canvas->Tk(" -width %i",width);
- if(outl >= 0) canvas->Tk(" -fill #%06x",outl);
- canvas->TkE();
-
- active = true;
-#endif
- return *this;
-}
-
-GuiObj &GuiRect::Draw()
-{
-#if FLEXT_SYS == FLEXT_SYS_MAX
-#endif
- return *this;
-}
-
-
-GuiObj &GuiLine::Set(int x1,int y1,int x2,int y2,int wd,long fl)
-{
- Delete();
- rect(p1(x1,y1),p2(x2,y2));
- width = wd,fill = fl;
-
-#if FLEXT_SYS == FLEXT_SYS_PD
- canvas->TkC().Tk("create line %i %i %i %i -tags %s",x1,y1,x2,y2,GetString(Id()));
- if(width >= 0) canvas->Tk(" -width %i",width);
- if(fill >= 0) canvas->Tk(" -fill #%06x",fill);
- canvas->TkE();
-
- active = true;
-#endif
- return *this;
-}
-
-GuiObj &GuiLine::Draw()
-{
-#if FLEXT_SYS == FLEXT_SYS_MAX
- ::Point p;
- ::RGBColor col;
- int w = width;
- if(!w) w = 1;
-
- col.red = (fill>>8)&0xff00;
- col.green = fill&0xff00;
- col.blue = (fill&0xff)<<8;
- ::RGBForeColor(&col);
- ::PenSize(w,w);
- p.h = Canv().X()+p1.X();
- p.v = Canv().Y()+p1.Y();
- ::MoveTo(p.h,p.v);
- p.h = Canv().X()+p2.X();
- p.v = Canv().Y()+p2.Y();
- ::LineTo(p.h,p.v);
-#endif
- return *this;
-}
-
-
-GuiObj &GuiPoly::Set(int n,const FPnt *p,int wd,long fl)
-{
- int i;
-
- Delete();
-
- width = wd,fill = fl;
- pnt = new FPnt[pnts = n];
- rect(pnt[0] = p[0],p[0]);
- for(i = 1; i < n; ++i) rect.Add(pnt[i] = p[i]);
-
-#if FLEXT_SYS == FLEXT_SYS_PD
- canvas->TkC().Tk("create line");
- for(i = 0; i < n; ++i)
- canvas->Tk(" %i %i",p[i].X(),p[i].Y());
- canvas->Tk(" -tags %s",GetString(Id()));
- if(width >= 0) canvas->Tk(" -width %i",width);
- if(fill >= 0) canvas->Tk(" -fill #%06x",fill);
- canvas->TkE();
-
- active = true;
-#endif
- return *this;
-}
-
-GuiObj &GuiPoly::Draw()
-{
-#if FLEXT_SYS == FLEXT_SYS_MAX
- ::Point p;
- ::RGBColor col;
- int ox = Canv().X(),oy = Canv().Y();
- int w = width;
- if(!w) w = 1;
-
- col.red = (fill>>8)&0xff00;
- col.green = fill&0xff00;
- col.blue = (fill&0xff)<<8;
- ::RGBForeColor(&col);
- ::PenSize(w,w);
- p.h = ox+pnt[0].X();
- p.v = oy+pnt[0].Y();
- ::MoveTo(p.h,p.v);
- for(int i = 1; i < pnts; ++i) {
- p.h = ox+pnt[i].X();
- p.v = oy+pnt[i].Y();
- ::LineTo(p.h,p.v);
- }
-#endif
- return *this;
-}
-
-GuiObj &GuiPoly::Delete()
-{
- if(pnt) { delete[] pnt; pnt = NULL; }
- return *this;
-}
-
-
-GuiObj &GuiText::Set(int x,int y,const char *txt,long fl,just_t jt)
-{
- Delete();
- rect(x,y,x,y);
- fill = fl,just = jt;
-
-#if FLEXT_SYS == FLEXT_SYS_PD
- canvas->TkC().Tk("create text %i %i -tags %s",x,y,GetString(Id()));
- if(txt) canvas->Tk(" -text %s",txt);
- if(fill >= 0) canvas->Tk(" -fill #%06x",fill);
- if(just != none) {
- static const char justtxt[][7] = {"left","right","center"};
- canvas->Tk(" -justify %s",justtxt[(int)just]);
- }
- canvas->TkE();
-
- active = true;
-#endif
- return *this;
-}
-
-GuiObj &GuiText::Draw()
-{
-#if FLEXT_SYS == FLEXT_SYS_MAX
-#endif
- return *this;
-}
-
diff --git a/externals/grill/guitest/flguiobj.h b/externals/grill/guitest/flguiobj.h
deleted file mode 100644
index 86c7366a..00000000
--- a/externals/grill/guitest/flguiobj.h
+++ /dev/null
@@ -1,362 +0,0 @@
-#ifndef __FLGUIOBJ_H
-#define __FLGUIOBJ_H
-
-#define FLEXT_VIRT
-#include <flext.h>
-#include "flgui.h"
-
-
-class FCanvas
-{
-public:
- FCanvas(t_canvas *c);
- ~FCanvas();
-
-#if FLEXT_SYS == FLEXT_SYS_PD
- FCanvas &Tk(char *fmt,...);
- FCanvas &TkC();
- FCanvas &TkE();
-
- void ToBuf(const char *t);
-#endif
-
- bool Pre(int x,int y);
- void Post();
-
- int X() const { return xpos; }
- int Y() const { return ypos; }
-
-protected:
-
- t_canvas *canvas;
- int xpos,ypos;
-
-#if FLEXT_SYS == FLEXT_SYS_PD
- void Send(const char *t);
- void SendBuf();
-
- static bool debug,store;
-
- char *buffer;
- int bufix;
- int waiting;
-#else
- PenState svpen;
- RGBColor svcol;
- GrafPtr svgp;
-#endif
-};
-
-
-class FPnt
-{
-public:
- FPnt() {}
- FPnt(const FPnt &p): x(p.x),y(p.y) {}
- FPnt(int px,int py): x(px),y(py) {}
-
- FPnt &operator =(const FPnt &p) { x = p.x,y = p.y; return *this; }
- FPnt &operator ()(int px,int py) { x = px,y = py; return *this; }
-
- FPnt &Move(int dx,int dy) { x += dx,y += dy; return *this; }
-
- int X() const { return x; }
- int Y() const { return y; }
-
-//protected:
- int x,y;
-};
-
-class FRect
-{
-public:
- FRect() {}
- FRect(const FRect &r): lo(r.lo),hi(r.hi) {}
- FRect(int xlo,int ylo,int xhi,int yhi): lo(xlo,ylo),hi(xhi,yhi) {}
-
- FRect &operator =(const FRect &r) { lo = r.lo; hi = r.hi; return *this; }
- FRect &operator ()(const FPnt &l,const FPnt &h) { lo = l; hi = h; return *this; }
- FRect &operator ()(int xlo,int ylo,int xhi,int yhi) { lo(xlo,ylo); hi(xhi,yhi); return *this; }
-
- FRect &Move(int dx,int dy) { lo.Move(dx,dy); hi.Move(dx,dy); return *this; }
- FRect &MoveTo(int x,int y) { hi(x+hi.X()-lo.X(),y+hi.Y()-lo.Y()); lo(x,y); return *this; }
-
- FPnt &Lo() { return lo; }
- FPnt &Hi() { return hi; }
- int SizeX() const { return hi.X()-lo.X()+1; }
- int SizeY() const { return hi.Y()-lo.Y()+1; }
-
- FRect &Add(const FPnt &p);
- FRect &Add(const FRect &r);
- bool In(const FPnt &p) const;
- bool Inter(const FRect &r) const;
-
-protected:
- FPnt lo,hi;
-};
-
-class GuiObj:
- public flext
-{
- friend class GuiGroup;
-public:
- GuiObj(FCanvas *c = NULL,GuiGroup *p = NULL);
- virtual ~GuiObj();
-
- const t_symbol *Id() const { return idsym; }
- virtual const t_symbol *Symbol() const { return NULL; }
-
- virtual void Active() {}
- virtual void Inactive() {}
-
-/*
- void Origin(int x,int y) { ori(x,y); }
- void Origin(const FPnt &p) { ori = p; }
- const FPnt &Origin() const { return ori; }
- void OriMove(int dx,int dy) { ori.Move(dx,dy); }
- int OriX() const { return ori.X(); }
- int OriY() const { return ori.Y(); }
-*/
-
- virtual GuiSingle *Find(const t_symbol *s) { return NULL; }
- inline GuiSingle *Find(const char *s) { return Find(MakeSymbol(s)); }
-
- virtual GuiObj &MoveRel(int dx,int dy) = 0;
- virtual GuiObj &Focus() { return *this; }
-
- virtual GuiObj &Draw() = 0;
-
- FCanvas &Canv() { return *canvas; }
-
-protected:
- virtual GuiObj &Delete() = 0;
-
- GuiGroup *parent;
- FCanvas *canvas;
- const t_symbol *idsym;
-
- virtual bool Method(flext_gui &g,const flext_gui::CBParams &p) = 0;
-
- FRect rect;
-};
-
-
-class GuiSingle:
- public GuiObj
-{
- friend class flext_gui;
-public:
- GuiSingle(FCanvas *c = NULL,GuiGroup *p = NULL,const t_symbol *s = NULL);
- ~GuiSingle();
-
- virtual const t_symbol *Symbol() const { return sym; }
- virtual void Symbol(const t_symbol *s);
- void Symbol(const char *s) { Symbol(MakeSymbol(s)); }
-
- virtual void Active() { active = true; }
- virtual void Inactive() { active = false; }
-
- virtual bool In(const FPnt &p) const { return false; }
-
- virtual GuiSingle *Find(const t_symbol *s);
- virtual GuiObj &MoveTo(int x,int y);
- virtual GuiObj &MoveRel(int dx,int dy);
- virtual GuiObj &FillColor(unsigned long col);
- virtual GuiObj &Outline(unsigned long col);
-
- virtual GuiObj &Focus();
-
- GuiGroup &Parent() { return *parent; }
-
-protected:
- virtual GuiObj &Delete();
-
- const t_symbol *sym;
- bool active;
-
- class Event {
- public:
- Event(int evmask,bool (*m)(flext_gui &g,GuiSingle &obj,const flext_gui::CBParams &p));
- ~Event();
-
- int methfl;
- bool (*method)(flext_gui &g,GuiSingle &obj,const flext_gui::CBParams &p);
- bool ext;
- Event *nxt;
- } *event;
-
- void AddEvent(int evmask,bool (*m)(flext_gui &g,GuiSingle &obj,const flext_gui::CBParams &p));
- void RmvEvent(int evmask,bool (*m)(flext_gui &g,GuiSingle &obj,const flext_gui::CBParams &p));
-
- virtual bool Method(flext_gui &g,const flext_gui::CBParams &p);
-};
-
-
-class GuiPoint:
- public GuiSingle
-{
- friend class GuiGroup;
-
- GuiPoint(FCanvas *c = NULL,GuiGroup *p = NULL,const t_symbol *s = NULL): GuiSingle(c,p,s) {}
- GuiObj &Set(int x,int y,long fill = -1);
- virtual GuiObj &Draw();
-
- long fill;
-public:
-};
-
-
-class GuiCloud:
- public GuiSingle
-{
- friend class GuiGroup;
-
- GuiCloud(FCanvas *c = NULL,GuiGroup *p = NULL,const t_symbol *s = NULL): GuiSingle(c,p,s),pnt(NULL) {}
- GuiObj &Set(int n,const FPnt *p,long fill = -1);
- virtual GuiObj &Draw();
- virtual GuiObj &Delete();
-
- long fill;
- int pnts;
- FPnt *pnt;
-public:
-};
-
-
-class GuiBox:
- public GuiSingle
-{
- friend class GuiGroup;
-
- GuiBox(FCanvas *c = NULL,GuiGroup *p = NULL,const t_symbol *s = NULL): GuiSingle(c,p,s) {}
- GuiObj &Set(int x,int y,int xsz,int ysz,int width = -1,long fill = -1,long outl = -1);
- virtual GuiObj &Draw();
-
- virtual bool In(const FPnt &p) const { return rect.In(p); }
-
- int width;
- long fill,outln;
-public:
-};
-
-
-class GuiRect:
- public GuiSingle
-{
- friend class GuiGroup;
-
- GuiRect(FCanvas *c = NULL,GuiGroup *p = NULL,const t_symbol *s = NULL): GuiSingle(c,p,s) {}
- GuiObj &Set(int x,int y,int xsz,int ysz,int width = -1,long outl = -1);
- virtual GuiObj &Draw();
-
- virtual bool In(const FPnt &p) const { return rect.In(p); }
-
- int width;
- long outln;
-public:
-};
-
-
-class GuiLine:
- public GuiSingle
-{
- friend class GuiGroup;
-
- GuiLine(FCanvas *c = NULL,GuiGroup *p = NULL,const t_symbol *s = NULL): GuiSingle(c,p,s) {}
- GuiObj &Set(int x1,int y1,int x2,int y2,int width = -1,long fill = -1);
- virtual GuiObj &Draw();
-
- int width;
- long fill;
- FPnt p1,p2;
-public:
-};
-
-
-class GuiPoly:
- public GuiSingle
-{
- friend class GuiGroup;
-
- GuiPoly(FCanvas *c = NULL,GuiGroup *p = NULL,const t_symbol *s = NULL): GuiSingle(c,p,s),pnt(NULL) {}
- GuiObj &Set(int n,const FPnt *p,int width = -1,long fill = -1);
- virtual GuiObj &Draw();
- virtual GuiObj &Delete();
-
- int width;
- long fill;
- int pnts;
- FPnt *pnt;
-public:
-};
-
-
-class GuiText:
- public GuiSingle
-{
- friend class GuiGroup;
-public:
- enum just_t { none = -1,left = 0,right,center };
-protected:
- GuiText(FCanvas *c = NULL,GuiGroup *p = NULL,const t_symbol *s = NULL): GuiSingle(c,p,s) {}
- GuiObj &Set(int x,int y,const char *txt = NULL,long fill = -1,just_t just = none);
- virtual GuiObj &Draw();
-
- just_t just;
- long fill;
-};
-
-
-class GuiGroup:
- public GuiObj
-{
- friend class flext_gui;
-public:
- GuiGroup(FCanvas *c,GuiGroup *p = NULL);
- ~GuiGroup();
-
- virtual GuiSingle *Find(const t_symbol *s);
- virtual GuiObj &MoveRel(int dx,int dy);
-
- void Clear();
- void Add(GuiObj *o,bool own = true);
- GuiSingle *Detach(const t_symbol *s);
-
- virtual GuiObj &Draw();
-
- GuiGroup *Add_Group();
- GuiSingle *Add_Point(int x,int y,long fill = -1);
- inline GuiSingle *Add_Point(const FPnt &p,long fill = -1) { return Add_Point(p.X(),p.Y(),fill); }
- GuiSingle *Add_Cloud(int n,const FPnt *p,long fill = -1);
- GuiSingle *Add_Box(int x,int y,int xsz,int ysz,int width = -1,long fill = -1,long outl = -1);
- GuiSingle *Add_Rect(int x,int y,int xsz,int ysz,int width = -1,long outl = -1);
- GuiSingle *Add_Line(int x1,int y1,int x2,int y2,int width = -1,long fill = -1);
- inline GuiSingle *Add_Line(const FPnt &p1,const FPnt &p2,int width = -1,long fill = -1) { return Add_Line(p1.X(),p1.Y(),p2.X(),p2.Y(),width,fill); }
- GuiSingle *Add_Poly(int n,const FPnt *p,int width = -1,long fill = -1);
- GuiSingle *Add_Text(int x,int y,const char *txt,long fill = -1,GuiText::just_t just = GuiText::none);
- inline GuiSingle *Add_Text(const FPnt &p,const char *txt,long fill = -1,GuiText::just_t just = GuiText::none) { return Add_Text(p.X(),p.Y(),txt,fill,just); }
-
- GuiSingle *Remove(GuiSingle *obj);
-
-protected:
-#if FLEXT_SYS == FLEXT_SYS_PD
- void AddTag(GuiObj *o);
- void RemoveTag(GuiObj *o);
-#endif
-
- virtual GuiObj &Delete();
-
- class Part
- {
- public:
- Part(GuiObj *o,bool own = true): obj(o),owner(own),nxt(NULL) {}
-
- GuiObj *obj;
- bool owner;
- Part *nxt;
- } *head,*tail;
-
- virtual bool Method(flext_gui &g,const flext_gui::CBParams &p);
-};
-
-#endif
diff --git a/externals/grill/guitest/guitest.vcproj b/externals/grill/guitest/guitest.vcproj
deleted file mode 100644
index caa49efc..00000000
--- a/externals/grill/guitest/guitest.vcproj
+++ /dev/null
@@ -1,226 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="guitest"
- SccProjectName="max/guitest"
- SccAuxPath=""
- SccLocalPath="."
- SccProvider="MSSCCI:Jalindi Igloo">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Release|Win32"
- OutputDirectory=".\msvc\r"
- IntermediateDirectory=".\msvc\r"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="F:\prog\pd\pd-cvs\src,f:\prog\max\flext\source"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;NT;PD"
- StringPooling="TRUE"
- RuntimeLibrary="4"
- EnableFunctionLevelLinking="TRUE"
- RuntimeTypeInfo="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile=".\msvc\r/guitest.pch"
- AssemblerListingLocation=".\msvc\r/"
- ObjectFile=".\msvc\r/"
- ProgramDataBaseFileName=".\msvc\r/"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib flext-pdwin.lib"
- OutputFile=".\msvc\r/guitest.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="f:\prog\pd\pd-cvs\bin,f:\prog\max\flext\pd-msvc"
- ProgramDatabaseFile=".\msvc\r/guitest.pdb"
- ImportLibrary=".\msvc\r/guitest.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\msvc\r/guitest.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory=".\msvc\d"
- IntermediateDirectory=".\msvc\d"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="F:\prog\pd\pd-cvs\src,f:\prog\max\flext\source"
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;NT;PD"
- BasicRuntimeChecks="3"
- RuntimeLibrary="5"
- RuntimeTypeInfo="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile=".\msvc\d/guitest.pch"
- AssemblerListingLocation=".\msvc\d/"
- ObjectFile=".\msvc\d/"
- ProgramDataBaseFileName=".\msvc\d/"
- BrowseInformation="1"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="4"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib flext_d-pdwin.lib"
- OutputFile=".\msvc\d/guitest.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="f:\prog\pd\pd-cvs\bin,f:\prog\max\flext\pd-msvc"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile=".\msvc\d/guitest.pdb"
- ImportLibrary=".\msvc\d/guitest.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="_DEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\msvc\d/guitest.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath="flgui.cpp">
- <FileConfiguration
- Name="Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;NT;PD;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;NT;PD;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="flgui.h">
- </File>
- <File
- RelativePath="flguiobj.cpp">
- <FileConfiguration
- Name="Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;NT;PD;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;NT;PD;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="flguiobj.h">
- </File>
- <File
- RelativePath="main.cpp">
- <FileConfiguration
- Name="Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;NT;PD;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;NT;PD;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/externals/grill/guitest/main.cpp b/externals/grill/guitest/main.cpp
deleted file mode 100644
index 96e168dc..00000000
--- a/externals/grill/guitest/main.cpp
+++ /dev/null
@@ -1,166 +0,0 @@
-#include "flgui.h"
-#include "flguiobj.h"
-
-#include <stdlib.h>
-/*
-#include <stdio.h>
-#include <string.h>
-#include <stdarg.h>
-*/
-
-#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 303)
-#error You need at least flext version 0.3.3
-#endif
-
-
-#define V void
-#define I int
-#define C char
-#define BL bool
-#define L long
-#define UL unsigned long
-
-class guitest:
-public flext_gui //,virtual public flext_base
-{
- FLEXT_HEADER(guitest,flext_gui)
-
-public:
- guitest(I argc,t_atom *argv);
- ~guitest();
-
- void m_bang()
- {
- post("%s - bang!",thisName());
- }
-
-protected:
-
- virtual void g_Create();
-// virtual void g_Edit(bool selected);
-
- static bool g_Motion(flext_gui &g,GuiSingle &obj,const CBParams &p);
- static bool g_MouseKey(flext_gui &g,GuiSingle &obj,const CBParams &p);
- static bool g_Key(flext_gui &g,GuiSingle &obj,const CBParams &p);
-
-// virtual void g_Properties();
- virtual void g_Save(t_binbuf *b);
-
-private:
- FLEXT_CALLBACK(m_bang);
-};
-
-FLEXT_NEW_V("guitest",guitest)
-
-guitest::guitest(I argc,t_atom *argv):
- flext_gui(400,100)
-{
- AddInAnything();
- AddOutInt(2);
-
- FLEXT_ADDBANG(0,m_bang);
-}
-
-guitest::~guitest()
-{
-}
-
-
-void guitest::g_Create()
-{
- GuiSingle *frame = Group().Add_Box(0,0,XSize(),YSize(),-1,0xE0E0E0);
- frame->Symbol("rect1");
-// GuiSingle *wave = Group().Add_Box(8,10,XSize()-16,YSize()-11,0,0x4040FF);
- Group().Add_Text(1,1,"Hula",-1,GuiText::left);
-/*
- I n = XSize()-16;
- FPnt *p = new FPnt[n];
- for(int i = 0; i < n; ++i) {
- p[i](8+i,10+rand()%(YSize()-11));
- }
- Group().Add_Poly(n,p,-1,0xC0C0C0);
- delete[] p;
-
- if(!BindEvent(*frame,g_Motion,evMotion)) post("Motion not supported");
- if(!BindEvent(*frame,g_Motion,evMouseDrag)) post("MouseDrag not supported");
- if(!BindEvent(*wave,g_MouseKey,evMouseDown)) post("MouseDown not supported");
- if(!BindEvent(*wave,g_MouseKey,evKeyDown)) post("KeyDown not supported");
- if(!BindEvent(*wave,g_MouseKey,evKeyUp)) post("KeyUp not supported");
- if(!BindEvent(*wave,g_MouseKey,evKeyRepeat)) post("KeyRepeat not supported");
-*/
-}
-
-/*
-void guitest::g_Properties()
-{
- post("properties");
-}
-*/
-
-void guitest::g_Save(t_binbuf *b)
-{
- post("save");
-#if FLEXT_SYS == FLEXT_SYS_PD
- binbuf_addv(b, "ssiis;", gensym("#X"),gensym("obj"),
- (t_int)XLo(), (t_int)YLo(),MakeSymbol(thisName())
- // here the arguments
- );
-#else
-#endif
-}
-
-/*
-void guitest::g_Edit(bool selected)
-{
- post("select is=%d", selected);
-
- GuiSingle *obj = Group().Find(MakeSymbol("rect1"));
- if(obj)
- obj->Outline(selected?0xFF0000:0x000000);
- else
- post("obj not found");
-}
-*/
-
-bool guitest::g_Motion(flext_gui &g,GuiSingle &obj,const CBParams &p)
-{
- if(p.kind == evMotion) {
- post("Motion %s x:%i y:%i mod:%i",GetString(obj.Id()),p.pMotion.x,p.pMotion.y,p.pMotion.mod);
- }
- else if(p.kind == evMouseDrag) {
- post("Drag %s x:%i y:%i dx:%i dy:%i b:%i mod:%i",GetString(obj.Id()),p.pMouseDrag.x,p.pMouseDrag.y,p.pMouseDrag.dx,p.pMouseDrag.dy,p.pMouseDrag.b,p.pMouseDrag.mod);
- }
- else
- post("Motion");
- return true;
-}
-
-bool guitest::g_MouseKey(flext_gui &g,GuiSingle &obj,const CBParams &p)
-{
- if(p.kind == evMouseDown) {
- post("MouseDown %s x:%i y:%i b:%i mod:%i",GetString(obj.Id()),p.pMouseKey.x,p.pMouseKey.y,p.pMouseKey.b,p.pMouseKey.mod);
- }
- else if(p.kind == evKeyDown) {
- post("KeyDown %s asc:%i key:%i mod:%i",GetString(obj.Id()),p.pKey.a,p.pKey.k,p.pKey.mod);
- }
- else if(p.kind == evKeyUp) {
- post("KeyUp %s asc:%i key:%i mod:%i",GetString(obj.Id()),p.pKey.a,p.pKey.k,p.pKey.mod);
- }
- else if(p.kind == evKeyRepeat) {
- post("KeyRepeat %s asc:%i key:%i mod:%i",GetString(obj.Id()),p.pKey.a,p.pKey.k,p.pKey.mod);
- }
- return true;
-}
-
-bool guitest::g_Key(flext_gui &g,GuiSingle &obj,const CBParams &p)
-{
- post("Key");
- return true;
-}
-
-
-
-
-
-
-
diff --git a/externals/grill/guitest/make-files.txt b/externals/grill/guitest/make-files.txt
deleted file mode 100644
index f5670fa3..00000000
--- a/externals/grill/guitest/make-files.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-# all the source files from the package
-NAME=guitest
-
-SRCDIR=.
-
-SRCS= flgui.cpp flguiobj.cpp main.cpp
-HDRS= flgui.h flguiobj.h
diff --git a/externals/grill/guitest/makefile.pd-linux b/externals/grill/guitest/makefile.pd-linux
deleted file mode 100644
index 3c8632bb..00000000
--- a/externals/grill/guitest/makefile.pd-linux
+++ /dev/null
@@ -1,87 +0,0 @@
-# Copyright (C) 2002-2004 Thomas Grill (xovo@gmx.net)
-#
-# Makefile for gcc @ linux
-#
-# usage:
-# to build run "make -f makefile.pd-linux"
-# to install (as root), do "make -f makefile.pd-linux install"
-#
-
-CONFIG=config-pd-linux.txt
-
-include $(CONFIG)
-
-# compiler+linker stuff
-INCLUDES=$(PDPATH)
-FLAGS=-DFLEXT_SYS=2
-CFLAGS=-O2 $(UFLAGS)
-LDFLAGS=$(UFLAGS) # needed by icc
-LIBS=
-
-ifdef FLEXT_SHARED
-CFLAGS+=-shared -DFLEXT_SHARED
-LDFLAGS+=-L $(FLEXTPATH)
-
-ifeq ($(CXX),icc)
-LDFLAGS+=-i_dynamic
-else
-LDFLAGS+=-Wl,-Bdynamic
-endif
-
-FLEXTLIB=-lflext
-
-else
-
-FLEXTLIB=$(FLEXTPATH)/libflext.a
-
-endif
-
-
-# ---------------------------------------------
-# the rest can stay untouched
-# ----------------------------------------------
-
-include make-files.txt
-
-
-TARGET=$(TARGDIR)/$(NAME).pd_linux
-
-# default target
-all: $(TARGDIR) $(TARGET)
-
-$(patsubst %,$(SRCDIR)/%,$(SRCS)): $(patsubst %,$(SRCDIR)/%,$(HDRS)) $(CONFIG)
- touch $@
-
-$(TARGDIR):
- mkdir $(TARGDIR)
-
-$(TARGDIR)/%.o : $(SRCDIR)/%.cpp
- $(CXX) -c $(CFLAGS) $(FLAGS) $(patsubst %,-I%,$(INCLUDES) $(FLEXTPATH)) $< -o $@
-
-$(TARGET) : $(patsubst %.cpp,$(TARGDIR)/%.o,$(SRCS))
- $(CXX) -shared $(LDFLAGS) -o $@ $^ $(FLEXTLIB) $(patsubst %,-l%,$(LIBS))
- strip --strip-unneeded $@
- chmod 755 $@
-
-$(INSTPATH):
- mkdir $(INSTPATH)
-
-install:: $(INSTPATH)
-
-install:: $(TARGET)
- cp $^ $(INSTPATH)
- chown root.root $(patsubst %,$(INSTPATH)/%,$(notdir $^))
- chmod 755 $(patsubst %,$(INSTPATH)/%,$(notdir $^))
-
-.PHONY: clean
-clean:
- rm -f $(TARGDIR)/*.o $(TARGET)
-
-
-
-
-
-
-
-
-
diff --git a/externals/grill/guitest/pd/guitest1.pd b/externals/grill/guitest/pd/guitest1.pd
deleted file mode 100644
index dab24e77..00000000
--- a/externals/grill/guitest/pd/guitest1.pd
+++ /dev/null
@@ -1,7 +0,0 @@
-#N canvas 0 0 456 306 12;
-#X obj 31 87 guitest;
-#X obj 32 47 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X obj 30 231 print OUTPUT;
-#X connect 0 0 2 0;
-#X connect 1 0 0 0;
diff --git a/externals/grill/namedobjs/gpl.txt b/externals/grill/namedobjs/gpl.txt
deleted file mode 100644
index 5ea29a7d..00000000
--- a/externals/grill/namedobjs/gpl.txt
+++ /dev/null
@@ -1,346 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) 19yy <name of author>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) 19yy name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Library General
-Public License instead of this License.
-
diff --git a/externals/grill/namedobjs/license.txt b/externals/grill/namedobjs/license.txt
deleted file mode 100644
index e74bb6cc..00000000
--- a/externals/grill/namedobjs/license.txt
+++ /dev/null
@@ -1 +0,0 @@
-namedobjs - retrieve named objects in a patcher Copyright (C) 2002 Thomas Grill This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. In the official namedobjs distribution, the GNU General Public License is in the file gpl.txt --------------------------------------------------------- OTHER COPYRIGHT NOTICES --------------------------------------------------------- This package uses the flext C++ layer - See its license text below: --- flext ---------------------------------------------- flext - C++ layer for Max/MSP and pd (pure data) externals Copyright (C) 2001,2002 Thomas Grill This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. In the official flext distribution, the GNU General Public License is in the file gpl.txt \ No newline at end of file
diff --git a/externals/grill/namedobjs/main.cpp b/externals/grill/namedobjs/main.cpp
deleted file mode 100644
index cad037e8..00000000
--- a/externals/grill/namedobjs/main.cpp
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
-
-namedobjs - retrieve list of named objects in patcher (Max/MSP only!)
-
-Copyright (c) 2002-2003 Thomas Grill (xovo@gmx.net)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-#include <flext.h>
-
-#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 401)
-#error You need at least flext version 0.4.1
-#endif
-
-#if FLEXT_SYS != FLEXT_SYS_MAX
-#error "This object is for MaxMSP only!"
-#endif
-
-#include <ctype.h>
-
-
-#define I int
-#define L long
-#define V void
-#define C char
-
-class namedobjs:
- public flext_base
-{
- FLEXT_HEADER_S(namedobjs,flext_base,Setup)
-
-public:
- namedobjs();
-
-protected:
- V m_bang();
-
-private:
- static V Setup(t_classid c);
-
- FLEXT_CALLBACK(m_bang);
-};
-
-FLEXT_NEW("namedobjs",namedobjs)
-
-V namedobjs::Setup(t_classid c)
-{
- FLEXT_CADDBANG(c,0,m_bang);
-}
-
-namedobjs::namedobjs()
-{
- AddInAnything("Bang to retrieve list of named objects");
- AddOutList("Consecutive object type/name pairs");
- AddOutBang("Bang signals end of list");
-}
-
-V namedobjs::m_bang()
-{
- t_canvas *canv = thisCanvas();
-// t_object *self = (t_object *)&x_obj->obj;
-
- t_box *b;
- for(b = canv->p_box; b; b = b->b_next) {
- if(b->b_firstin) {
-// if(NOGOOD(b->b_firstin)) post("NOGOOD!");
-
- t_messlist *ms;
-
- ms = ((t_tinyobject *)b->b_firstin)->t_messlist;
- if(ms) {
- const t_class *c = (const t_class *)(ms-1);
- if(c) {
- t_symbol *nm;
- if (patcher_boxname(canv,b,&nm)) {
- t_atom lst[4];
- SetString(lst[0],*(C **)c->c_sym->s_name);
- SetSymbol(lst[1],nm);
- SetInt(lst[2],b->b_rect.left);
- SetInt(lst[3],b->b_rect.top);
- ToOutList(0,4,lst);
- }
- }
-
- }
- }
- }
-
- ToOutBang(1);
-}
-
-
diff --git a/externals/grill/namedobjs/namedobjs.cw b/externals/grill/namedobjs/namedobjs.cw
deleted file mode 100755
index 7e95ad83..00000000
--- a/externals/grill/namedobjs/namedobjs.cw
+++ /dev/null
Binary files differ
diff --git a/externals/grill/namedobjs/namedobjs.help b/externals/grill/namedobjs/namedobjs.help
deleted file mode 100755
index 6a54184e..00000000
--- a/externals/grill/namedobjs/namedobjs.help
+++ /dev/null
Binary files differ
diff --git a/externals/grill/namedobjs/namedobjs.mpw b/externals/grill/namedobjs/namedobjs.mpw
deleted file mode 100755
index 12826177..00000000
--- a/externals/grill/namedobjs/namedobjs.mpw
+++ /dev/null
@@ -1 +0,0 @@
-# namedobjs - list named objects in a patcher # Copyright (c) 2002 Thomas Grill (xovo@gmx.net) # # Makefile for Apple MPW-PR # # usage: make -f namedobjs.mpw # # --------------------------------------------- MAKEFILE = namedobjs.mpw ¥MondoBuild¥ = {MAKEFILE} # Make blank to avoid rebuilds when makefile is modified Name = namedobjs ObjDir = :MPW: MaxSDK = HD Daten:Prog Stuff:Max/MSP SDK:SDK Examples flext = ::flext: Includes = -i :,"{flext}","{MaxSDK}:Max Includes","{MaxSDK}:MSP Includes" Defines = -d MAXMSP Sym-PPC = -sym off Flags = -bool on -enum int -includes unix -opt speed,unroll,unswitch PPCCPlusOptions = {Includes} {Sym-PPC} {Defines} {Flags} ### Source Files ### SrcFiles = main.cpp Headers = ### Object Files ### Obj-PPC = ¶ "{ObjDir}main.cpp.x" LibFiles-Ext = ¶ "{flext}MPW:flext.o" ¶ "{MaxSDK}:Max Includes:MaxLib" ¶ "{MaxSDK}:MSP Includes:MaxAudioLib" ### Libraries ### LibFiles-PPC = ¶ "{SharedLibraries}StdCLib" ¶ "{SharedLibraries}MathLib" ¶ "{PPCLibraries}StdCRuntime.o" ¶ "{PPCLibraries}PPCCRuntime.o" ¶ "{PPCLibraries}MrCPlusLib.o" ¶ ### Default Rules ### {ObjDir} Ä : .cpp.x Ä .cpp {¥MondoBuild¥} {Headers} {PPCCPlus} {depDir}{default}.cpp -o {targDir}{default}.cpp.x {PPCCPlusOptions} ### Build Rules ### all Ä Folder {¥MondoBuild¥} {ObjDir}{Name} Folder ÄÄ if !`Exists {ObjDir}` ; NewFolder {ObjDir} ; end {ObjDir}{Name} Ä {Obj-PPC} PPCLink ¶ -o {Targ} ¶ {deps} ¶ {LibFiles-Ext} ¶ {LibFiles-PPC} ¶ {Sym-PPC} ¶ -mf -d ¶ -t 'iLaF' ¶ -c 'max2' ¶ -xm s ¶ -export main ¶ -main main \ No newline at end of file
diff --git a/externals/grill/namedobjs/readme.txt b/externals/grill/namedobjs/readme.txt
deleted file mode 100644
index dd784845..00000000
--- a/externals/grill/namedobjs/readme.txt
+++ /dev/null
@@ -1 +0,0 @@
-namedobjs - retrieve named objects in a patcher 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. Donations for further development of the package are highly appreciated. ---------------------------------------------------------------------------- You will need the flext C++ layer for PD and Max/MSP externals to compile this. Package files: - readme.txt: this one - gpl.txt,license.txt: GPL license stuff - main.cpp: all the stuff ---------------------------------------------------------------------------- The package should at least compile (and is tested) with the following compilers: - Max/MSP - MacOS: o CodeWarrior Pro: edit "namedobjs.cw" project file o MPW-PR: edit "namedobjs.mpw" project file ---------------------------------------------------------------------------- Description: 1) send a bang to the left inlet 2) for each named object in the patcher a message [class name pos-left pos-top] is output at the left outlet 3) after the last message a bang is output at the right outlet ---------------------------------------------------------------------------- Version history: 0.0.1: - first release --------------------------------------------------------------------------- TODO list: \ No newline at end of file
diff --git a/externals/grill/pool/gpl.txt b/externals/grill/pool/gpl.txt
deleted file mode 100644
index 5ea29a7d..00000000
--- a/externals/grill/pool/gpl.txt
+++ /dev/null
@@ -1,346 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) 19yy <name of author>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) 19yy name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Library General
-Public License instead of this License.
-
diff --git a/externals/grill/pool/license.txt b/externals/grill/pool/license.txt
deleted file mode 100644
index 4be8d32a..00000000
--- a/externals/grill/pool/license.txt
+++ /dev/null
@@ -1,50 +0,0 @@
-pool - a hierarchical storage object for PD and MaxMSP
-Copyright (C) 2002-2003 Thomas Grill
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-In the official pool distribution, the GNU General Public License is
-in the file gpl.txt
-
----------------------------------------------------------
-
- OTHER COPYRIGHT NOTICES
-
----------------------------------------------------------
-This package uses the flext C++ layer - See its license text below:
-
-
---- flext ----------------------------------------------
-flext - C++ layer for Max/MSP and pd (pure data) externals
-Copyright (C) 2001-2003 Thomas Grill
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-In the official flext distribution, the GNU General Public License is
-in the file gpl.txt
-
-
diff --git a/externals/grill/pool/package.txt b/externals/grill/pool/package.txt
deleted file mode 100644
index 93df3011..00000000
--- a/externals/grill/pool/package.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-NAME=pool
-
-SRCDIR=source
-PRECOMPILE=pool.h
-
-SRCS= main.cpp data.cpp pool.cpp
-HDRS= pool.h
diff --git a/externals/grill/pool/pool-0.2.dtd b/externals/grill/pool/pool-0.2.dtd
deleted file mode 100644
index 57a48498..00000000
--- a/externals/grill/pool/pool-0.2.dtd
+++ /dev/null
@@ -1,5 +0,0 @@
-<!ELEMENT pool (dir|value)*)>
-<!ELEMENT dir (key+,dir*,value*)>
-<!ELEMENT value (key+,data?)>
-<!ELEMENT key (#CDATA)>
-<!ELEMENT data (#CDATA)>
diff --git a/externals/grill/pool/pool-help.pd b/externals/grill/pool/pool-help.pd
deleted file mode 100644
index 8b55ecb3..00000000
--- a/externals/grill/pool/pool-help.pd
+++ /dev/null
@@ -1,319 +0,0 @@
-#N canvas 24 27 968 789 12;
-#X msg 296 105 set 1 2 3;
-#X obj 238 631 print K;
-#X msg 607 211 getall;
-#X msg 296 134 set A k g;
-#X obj 189 660 print V;
-#X obj 287 605 print D;
-#X msg 296 164 set A l m;
-#X msg 297 195 set 2 34;
-#X msg 427 297 clr A;
-#X msg 429 105 get A;
-#X msg 429 130 get 2;
-#X msg 31 132 echodir \$1;
-#X obj 31 111 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
-;
-#X obj 31 213 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
-;
-#X msg 31 234 absdir \$1;
-#X text 426 277 clear value;
-#X text 425 83 get value;
-#X text 360 605 directory (abs or rel to current);
-#X text 264 661 data value;
-#X text 310 631 data key;
-#X msg 32 314 pool pool1;
-#X msg 33 343 pool;
-#X text 77 343 set to private;
-#X msg 33 405 reset;
-#X text 32 384 clear all pool data;
-#X msg 608 111 clrall;
-#X text 599 89 clear all values in dir;
-#X text 607 190 get all values in dir;
-#X text 175 500 pool name can be given as argument;
-#X text 598 136 clear all values and dirs;
-#X msg 606 158 clrrec;
-#X msg 605 258 getrec;
-#X text 605 236 get all values in dir and subdirs;
-#X text 670 289 bang at EOL;
-#X text 673 208 bang at EOL;
-#X text 670 257 depth may be given;
-#X text 34 291 set pool name;
-#X text 30 89 at each command;
-#X text 30 73 echo current dir;
-#X text 295 82 set values;
-#X text 26 194 (default on);
-#X text 18 178 report absolute dirs;
-#X msg 34 452 help;
-#X text 77 453 get some info;
-#X text 670 274 default=-1 (= infinite);
-#X msg 609 340 cntall;
-#X text 675 338 count all values in dir;
-#X msg 609 366 cntrec;
-#X text 677 364 ... and subdirs;
-#X text 673 378 (depth may be given);
-#N canvas 472 45 444 655 dirs 0;
-#X msg 111 40 mkdir fld1;
-#X msg 113 135 chdir;
-#X msg 109 331 updir;
-#X msg 110 468 getsub -1;
-#X text 112 20 make absolute dir;
-#X text 111 64 make relative dir;
-#X msg 112 85 mksub fld2;
-#X text 111 117 change to absolute dir;
-#X msg 112 178 chsub fld2;
-#X text 110 159 change to relative dir;
-#X text 105 312 change to upper dir;
-#X text 106 364 remove absolute dir;
-#X msg 107 383 rmdir fld1;
-#X msg 109 422 rmsub fld2;
-#X text 108 403 remove relative dir;
-#X text 108 450 get subdirs;
-#X text 250 494 -1 ... infinite;
-#X text 166 327 depth may be given;
-#X text 167 343 default=1;
-#X text 208 463 depth may be given;
-#X text 206 479 default=1;
-#X text 107 491 count subdirs;
-#X msg 110 512 cntsub -1;
-#X msg 110 572 getdir;
-#X text 109 552 get current dir;
-#X text 175 572 always absolute;
-#X obj 13 252 s \$0-pool;
-#X msg 111 231 mkchdir fld1;
-#X text 112 211 make and change to absolute dir;
-#X msg 109 276 mkchsub fld2;
-#X text 110 256 make and change to relative dir;
-#X connect 0 0 26 0;
-#X connect 1 0 26 0;
-#X connect 2 0 26 0;
-#X connect 3 0 26 0;
-#X connect 6 0 26 0;
-#X connect 8 0 26 0;
-#X connect 12 0 26 0;
-#X connect 13 0 26 0;
-#X connect 22 0 26 0;
-#X connect 23 0 26 0;
-#X connect 27 0 26 0;
-#X connect 29 0 26 0;
-#X restore 715 490 pd dirs;
-#X text 714 469 directory operations;
-#N canvas 0 22 845 610 file 0;
-#X text 117 207 save dir and subdirs;
-#X text 117 165 save data in current dir;
-#X text 117 253 load data into current dir;
-#X text 115 300 load data into current dir and below;
-#X text 132 340 depth (default -1) and;
-#X text 134 356 mkdir flag (default 1) can be given;
-#X text 117 37 save all;
-#X text 117 81 load all (add to existing data);
-#X text 22 12 file operations;
-#X obj 22 188 s \$0-pool;
-#X text 473 209 save dir and subdirs;
-#X text 473 167 save data in current dir;
-#X text 473 255 load data into current dir;
-#X text 471 302 load data into current dir and below;
-#X text 488 342 depth (default -1) and;
-#X text 490 358 mkdir flag (default 1) can be given;
-#X text 473 39 save all;
-#X text 473 83 load all (add to existing data);
-#X obj 378 190 s \$0-pool;
-#X text 444 12 XML format;
-#X msg 120 54 save pool.dat;
-#X msg 118 100 load pool.dat;
-#X msg 117 184 svdir pool.dat;
-#X msg 117 226 svrec pool.dat;
-#X msg 116 272 lddir pool.dat;
-#X msg 116 319 ldrec pool.dat;
-#X msg 476 56 savex pool.xml;
-#X msg 474 102 loadx pool.xml;
-#X msg 473 186 svxdir pool.xml;
-#X msg 473 228 svxrec pool.xml;
-#X msg 472 274 ldxdir pool.xml;
-#X msg 472 321 ldxrec pool.xml;
-#X text 26 398 If the file name is given without a path specification
-the folder containing the current patcher will be used.;
-#X text 27 451 The attribute outlet reports if file saving/loading
-has been successful \, by outputting the message tag and a boolean
-flag.;
-#X text 29 517 Please note: the absdir flag is also used for paths
-written into the files. With absdir=1 absolute paths are written \,
-absdir=0 means relative paths.;
-#X connect 20 0 9 0;
-#X connect 21 0 9 0;
-#X connect 22 0 9 0;
-#X connect 23 0 9 0;
-#X connect 24 0 9 0;
-#X connect 25 0 9 0;
-#X connect 26 0 18 0;
-#X connect 27 0 18 0;
-#X connect 28 0 18 0;
-#X connect 29 0 18 0;
-#X connect 30 0 18 0;
-#X connect 31 0 18 0;
-#X restore 715 600 pd file;
-#X text 713 577 file operations;
-#X text 713 634 clipboard operations;
-#N canvas 0 22 545 593 clip 0;
-#X text 97 56 copy value associated to key into clipboard;
-#X msg 100 77 copy A;
-#X msg 98 119 cut B;
-#X text 96 101 cut value associated to key into clipboard;
-#X msg 96 401 paste;
-#X msg 98 179 copyall;
-#X text 95 158 copy all values in current dir into clipboard;
-#X msg 97 221 cutall;
-#X text 95 201 cut all values in current dir into clipboard;
-#X text 94 263 copy all values in current dir into clipboard;
-#X text 94 306 cut all values in current dir into clipboard;
-#X msg 97 284 copyrec;
-#X text 194 285 depth may be given (default=-1);
-#X text 193 326 depth may be given (default=-1);
-#X msg 96 326 cutrec 1;
-#X text 194 345 1..only with first level subdirs;
-#X text 96 379 paste clipboard contents into current directory;
-#X text 167 397 depth (default -1) and;
-#X text 169 413 mkdir flag (default 1) can be given;
-#X text 183 448 depth (default -1) and;
-#X text 185 466 mkdir flag (default 1) can be given;
-#X msg 95 453 pasteadd;
-#X text 95 431 paste but don't replace;
-#X msg 94 521 clrclip;
-#X text 171 520 clear clipboard (free memory);
-#X text 22 12 clipboard operations (this is an internal clipboard...)
-;
-#X obj 4 193 s \$0-pool;
-#X connect 1 0 26 0;
-#X connect 2 0 26 0;
-#X connect 4 0 26 0;
-#X connect 5 0 26 0;
-#X connect 7 0 26 0;
-#X connect 11 0 26 0;
-#X connect 14 0 26 0;
-#X connect 21 0 26 0;
-#X connect 23 0 26 0;
-#X restore 714 655 pd clip;
-#X text 715 439 more commands:;
-#X obj 237 444 r \$0-pool;
-#X text 174 517 data is shared among pool objects with the same name
-;
-#X obj 26 10 cnv 15 850 45 empty empty pool 10 22 0 24 -260818 -1 0
-;
-#X obj 386 553 print A;
-#X text 458 552 attributes;
-#X msg 34 490 getattributes;
-#X msg 139 132 getechodir;
-#X msg 130 234 getabsdir;
-#X msg 141 314 getpool;
-#X msg 297 345 add 2 14;
-#X obj 260 478 pool @valcnt 10 @dircnt 5;
-#X text 330 425 expected value and directory counts;
-#X text 330 440 can be given for optimal performance;
-#X msg 429 155 get 3;
-#X msg 295 222 set 3 -1 1;
-#X msg 32 518 getmethods;
-#X text 328 454 (see attributes in properties dialog);
-#X text 713 687 console printout;
-#N canvas 0 22 612 291 print 0;
-#X obj 21 231 s \$0-pool;
-#X msg 109 80 printall;
-#X msg 109 132 printrec;
-#X text 110 60 print all values in dir;
-#X text 109 112 print values in dir and subdirs;
-#X text 190 133 (depth may be given);
-#X text 22 12 print-to-console operations;
-#X text 201 183 (depth may be given);
-#X msg 109 181 printroot;
-#X text 109 161 print values in dir and subdirs (starting from root)
-;
-#X connect 1 0 0 0;
-#X connect 2 0 0 0;
-#X connect 8 0 0 0;
-#X restore 715 708 pd print;
-#X text 272 33 http://grrrr.org;
-#X msg 428 225 geti \$1;
-#X text 426 185 get indexed element;
-#X obj 427 205 nbx 5 14 -1e+037 1e+037 0 0 empty empty empty 0 -6 0
-10 -262144 -1 -1 0 256;
-#X text 297 323 set but don't replace;
-#X text 294 256 set value at index;
-#X msg 295 276 seti 3 Uhu;
-#X text 424 343 clear value at index;
-#X msg 425 363 clri 2;
-#X text 713 523 output ordering;
-#N canvas 285 155 534 455 ordered 0;
-#X obj 24 284 s \$0-pool;
-#X msg 112 191 ogetall;
-#X msg 110 287 ogetrec;
-#X text 113 171 get all values in dir (ordered);
-#X text 109 244 get all values in dir und subdirs;
-#X text 185 311 bang at EOL;
-#X text 107 262 (ordered);
-#X text 109 365 get subdirs (ordered);
-#X msg 110 389 ogetsub;
-#X text 385 400 (-1..infinite);
-#X text 183 189 index \, direction may be given;
-#X text 28 10 ordered output sorts by key or value ascending or descending
-;
-#X text 28 71 index > 0 sort by atom \, at indexed position;
-#X text 28 53 index = 0 sort by key (default);
-#X text 30 100 direction = 0... ascending (default);
-#X text 30 118 direction != 0... descending;
-#X text 183 290 depth default to -1 (= infinite);
-#X text 183 273 depth \, index \, direction may be given;
-#X text 208 381 depth \, index \, direction may be given;
-#X text 206 401 depth defaults to 1;
-#X connect 1 0 0 0;
-#X connect 2 0 0 0;
-#X connect 8 0 0 0;
-#X restore 714 544 pd ordered;
-#X text 35 699 NOTE: pool is currently not reentrant! This means that
-you should not input data as a direct reaction upon output.;
-#X text 32 733 (this only applies to pools of the same name);
-#X obj 340 579 print C;
-#X text 412 579 command;
-#X obj 294 552 route bang;
-#X obj 499 666 print ------------;
-#X text 503 646 separator on bang;
-#X text 272 13 a hierarchical storage object \, (C)2002-2008 Thomas
-Grill;
-#X connect 0 0 67 0;
-#X connect 2 0 67 0;
-#X connect 3 0 67 0;
-#X connect 6 0 67 0;
-#X connect 7 0 67 0;
-#X connect 8 0 67 0;
-#X connect 9 0 67 0;
-#X connect 10 0 67 0;
-#X connect 11 0 67 0;
-#X connect 12 0 11 0;
-#X connect 13 0 14 0;
-#X connect 14 0 67 0;
-#X connect 20 0 67 0;
-#X connect 21 0 67 0;
-#X connect 23 0 67 0;
-#X connect 25 0 67 0;
-#X connect 30 0 67 0;
-#X connect 31 0 67 0;
-#X connect 42 0 67 0;
-#X connect 45 0 67 0;
-#X connect 47 0 67 0;
-#X connect 57 0 67 0;
-#X connect 62 0 67 0;
-#X connect 63 0 67 0;
-#X connect 64 0 67 0;
-#X connect 65 0 67 0;
-#X connect 66 0 67 0;
-#X connect 67 0 4 0;
-#X connect 67 1 1 0;
-#X connect 67 2 5 0;
-#X connect 67 3 91 0;
-#X connect 67 4 60 0;
-#X connect 70 0 67 0;
-#X connect 71 0 67 0;
-#X connect 72 0 67 0;
-#X connect 77 0 67 0;
-#X connect 79 0 77 0;
-#X connect 82 0 67 0;
-#X connect 84 0 67 0;
-#X connect 91 0 92 0;
-#X connect 91 1 89 0;
diff --git a/externals/grill/pool/pool.help b/externals/grill/pool/pool.help
deleted file mode 100755
index 4a287176..00000000
--- a/externals/grill/pool/pool.help
+++ /dev/null
Binary files differ
diff --git a/externals/grill/pool/pool.mcp b/externals/grill/pool/pool.mcp
deleted file mode 100755
index 91fcb1fe..00000000
--- a/externals/grill/pool/pool.mcp
+++ /dev/null
Binary files differ
diff --git a/externals/grill/pool/pool.vcproj b/externals/grill/pool/pool.vcproj
deleted file mode 100644
index 59ecc423..00000000
--- a/externals/grill/pool/pool.vcproj
+++ /dev/null
@@ -1,371 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="pool"
- ProjectGUID="{F6422672-C7DA-4DF1-9AFD-218947985297}"
- Keyword="Win32Proj">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="PD Release|Win32"
- OutputDirectory=".\pd-msvc/r"
- IntermediateDirectory=".\pd-msvc/r"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="c:\programme\audio\pd\bin\src,..\flext\source"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;FLEXT_SYS=2"
- StringPooling="TRUE"
- RuntimeLibrary="4"
- EnableFunctionLevelLinking="TRUE"
- PrecompiledHeaderThrough=""
- PrecompiledHeaderFile=".\pd-msvc/r/pool.pch"
- AssemblerListingLocation=".\pd-msvc/r/"
- ObjectFile=".\pd-msvc/r/"
- ProgramDataBaseFileName=".\pd-msvc/r/"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib"
- OutputFile="pd-msvc/pool.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="c:\programme\audio\pd\bin"
- ProgramDatabaseFile=".\pd-msvc/r/pool.pdb"
- ImportLibrary=".\pd-msvc/r/pool.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\pd-msvc/r/pool.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="PD Debug|Win32"
- OutputDirectory=".\pd-msvc/d"
- IntermediateDirectory=".\pd-msvc/d"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="&quot;c:\programme\pd-0.40-2\src&quot;;..\flext\source"
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;FLEXT_SYS=2"
- StringPooling="TRUE"
- BasicRuntimeChecks="3"
- RuntimeLibrary="5"
- PrecompiledHeaderThrough=""
- PrecompiledHeaderFile=".\pd-msvc/d/pool.pch"
- AssemblerListingLocation=".\pd-msvc/d/"
- ObjectFile=".\pd-msvc/d/"
- ProgramDataBaseFileName=".\pd-msvc/d/"
- BrowseInformation="1"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="4"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib"
- OutputFile="$(outdir)/pool.dll"
- LinkIncremental="2"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="c:\programme\pd-0.40-2\bin"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(outdir)/pool.pdb"
- ImportLibrary="$(outdir)/pool.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="_DEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\pd-msvc/d/pool.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Max Release|Win32"
- OutputDirectory=".\max-msvc/r"
- IntermediateDirectory=".\max-msvc/r"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="&quot;C:\data\prog\audio\maxmspsdk_win\4.5 headers\c74support\max-includes&quot;;&quot;C:\data\prog\audio\maxmspsdk_win\4.5 headers\c74support\msp-includes&quot;;..\flext\source"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;FLEXT_SYS_MAX"
- StringPooling="TRUE"
- RuntimeLibrary="0"
- EnableFunctionLevelLinking="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile=".\pd-msvc/r/pool.pch"
- AssemblerListingLocation=".\pd-msvc/r/"
- ObjectFile=".\pd-msvc/r/"
- ProgramDataBaseFileName=".\pd-msvc/r/"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="maxapi.lib maxaudio.lib"
- OutputFile="max-msvc/pool.mxe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="&quot;C:\data\prog\audio\maxmspsdk_win\4.5 headers\c74support\max-includes&quot;;&quot;C:\data\prog\audio\maxmspsdk_win\4.5 headers\c74support\msp-includes&quot;;&quot;f:\prog\max\flext\max-msvc&quot;"
- ProgramDatabaseFile=".\pd-msvc/r/pool.pdb"
- ImportLibrary=".\max-msvc/r/pool.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\pd-msvc/r/pool.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Max Debug|Win32"
- OutputDirectory=".\max-msvc/d"
- IntermediateDirectory=".\max-msvc/d"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- InlineFunctionExpansion="0"
- AdditionalIncludeDirectories="&quot;C:\data\prog\audio\maxmspsdk_win\4.5 headers\c74support\max-includes&quot;;&quot;C:\data\prog\audio\maxmspsdk_win\4.5 headers\c74support\msp-includes&quot;;..\flext\source"
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;FLEXT_SYS_MAX"
- StringPooling="TRUE"
- RuntimeLibrary="1"
- EnableFunctionLevelLinking="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile=".\pd-msvc/r/pool.pch"
- AssemblerListingLocation=".\pd-msvc/r/"
- ObjectFile=".\pd-msvc/r/"
- ProgramDataBaseFileName=".\pd-msvc/r/"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="maxapi.lib maxaudio.lib"
- OutputFile="max-msvc/d/pool.mxe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="&quot;C:\data\prog\audio\maxmspsdk_win\4.5 headers\c74support\max-includes&quot;;&quot;C:\data\prog\audio\maxmspsdk_win\4.5 headers\c74support\msp-includes&quot;;&quot;f:\prog\max\flext\max-msvc&quot;"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile=".\max-msvc/d/pool.pdb"
- ImportLibrary=".\max-msvc/r/pool.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\pd-msvc/r/pool.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="PD Shared Release|Win32"
- OutputDirectory="./pd-msvc/sr"
- IntermediateDirectory="./pd-msvc/sr"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- GlobalOptimizations="TRUE"
- InlineFunctionExpansion="2"
- OmitFramePointers="TRUE"
- OptimizeForProcessor="3"
- AdditionalIncludeDirectories="&quot;c:\data\prog\pd\pd-cvs\src&quot;;c:\data\prog\packs\pthreads;..\flext\source"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;FLEXT_SYS=2;FLEXT_SHARED"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- PrecompiledHeaderThrough=""
- PrecompiledHeaderFile=".\pd-msvc/r/pool.pch"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="0"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib pthreadVC.lib"
- OutputFile="$(outdir)/pool.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="&quot;c:\data\prog\pd\pd-cvs\bin&quot;;c:\data\prog\packs\pthreads;&quot;..\flext\pd-msvc&quot;"
- ProgramDatabaseFile="$(outdir)/pool.pdb"
- ImportLibrary="$(outdir)/pool.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\pd-msvc/r/pool.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\source\data.cpp">
- </File>
- <File
- RelativePath=".\source\main.cpp">
- </File>
- <File
- RelativePath=".\source\pool.cpp">
- </File>
- <File
- RelativePath=".\source\pool.h">
- </File>
- <File
- RelativePath="readme.txt">
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/externals/grill/pool/readme.txt b/externals/grill/pool/readme.txt
deleted file mode 100644
index 511614b5..00000000
--- a/externals/grill/pool/readme.txt
+++ /dev/null
@@ -1,127 +0,0 @@
-pool - a hierarchical storage object for PD and Max/MSP
-
-Copyright (c) 2002-2008 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-Donations for further development of the package are highly appreciated.
-Visit https://www.paypal.com/xclick/business=gr%40grrrr.org&item_name=pool&no_note=1&tax=0&currency_code=EUR
-
-----------------------------------------------------------------------------
-
-Goals/features of the package:
-
-- pool can store and retrieve key/value pairs, where a key can be any atom and
- the value can be any list of atoms
-- pool can manage folders. A folder name can be any atom.
-- pool objects can be named and then share their data space
-- clipboard operations are possible in a pool or among several pools
-- file operations can load/save data from disk
-
-----------------------------------------------------------------------------
-
-IMPORTANT INFORMATION for all PD users:
-
-Put the pd-msvc/pool.dll, pd-linux/pool.pd_linux or pd-darwin/pool.pd_darwin file
-into the extra folder of the PD installation, or use a -path or -lib option
-at PD startup to find the pool external.
-
-Put the help-pool.pd file into the doc\5.reference subfolder of your PD installation.
-
-----------------------------------------------------------------------------
-
-IMPORTANT INFORMATION for all Max/MSP users:
-
-For Mac OSX put the max-osx/pool.mxd file into the folder
-/Library/Application Support/Cycling '74/externals
-
-For Mac OS9 put the max-os9/pool.mxe file into the externals subfolder of your Max/MSP installation
-
-For Windows put the max-msvc\pool.mxe file into the folder
-C:\program files\common files\Cycling '74\externals (english version)
-
-Put the pool.help file into the max-help folder.
-
-============================================================================
-
-
-BUILDING from source
---------------------
-
-You will need the flext C++ layer for PD and Max/MSP externals to compile this.
-See http://grrrr.org/ext/flext
-Download, install and compile the package.
-Afterwards you can proceed with building this external.
-
-
-pd/Max - Windows - Microsoft Visual C, Borland C++, MinGW:
-----------------------------------------------------------
-Start a command shell with your eventual build environment
-(e.g. run vcvars32.bat for Microsoft Visual Studio)
-
-then run
- ..\flext\build.bat
-(you would have to substitute ..\flext with the respective path to the flext package)
-
-
-pd/Max - OSX/Linux - GCC:
--------------------------
-From a shell run
-bash ../flext/build.sh
-(you would have to substitute ../flext with the respective path to the flext package)
-
-
-============================================================================
-
-Version history:
-
-0.2.2:
-- fixed serious bug with clearing values and dirs. e.g. "clrall" and "clrrec" messages.
-- fixed double-free for clearing dirs and values
-- re-introduced a help message
-- fixed bug in nested-dir XML saving
-- changed printrec/printroot to display empty folders
-- new curdir attribute for getting/setting the current directory
-- changed pool name searching with STL code (more efficient)
-- added success/error reporting for file operations (through attribute outlet)
-- fixed handling of non-ASCII-characters
-- XML files are now encoded UTF-8
-- implemented output sorting (ogetall, ogetrec, ogetsub)
-- fixed some potential buffer overrun problems
-
-0.2.1:
-- fixed "cntsub"... directories in current directory have been forgotten
-- store/create also empty dirs with file I/O
-- more inlined functions and better symbol handling
-- added "seti" message to set elements at index
-- added "clri" message to erase elements at index
-- fixed bad bug: pool::priv was not initialized
-- enhanced and optimized atom parsing
-- escaped symbols (with \) for whitespace support on store and load
-- escape symbols also with "" to help the load routine
-- improved reading of legacy data by Frank Barknecht
-- use statically allocated lists where feasible
-- bug fix: [reset( didn't reset the current dir
-- file loading: fixed recognition of stringified directory names
-
-0.2.0:
-- attributes (pool,private,echodir,absdir)
-- added "geti" message for retrieval of a value at an index
-- fixed bug in "get" message if key not present
-- adapted source to flext 0.4.1 - register methods at class creation
-- extensive use of hashing for keys and directories
-- database can be saved/loaded as XML data
-- fixed bug with stored numbers starting with - or +
-- relative file names will be based on the folder of the current patcher
-- added printall, printrec, printroot messages for console printout
-- added mkchdir, mkchsub to create and change to directories at once
-- change storage object only when name has changed
-
-0.1.0:
-- first public release
-
----------------------------------------------------------------------------
-
-general:
-- what is output as value if it is key only? (Max->nothing!)
-- XML format ok?
diff --git a/externals/grill/pool/source/data.cpp b/externals/grill/pool/source/data.cpp
deleted file mode 100644
index de5d555e..00000000
--- a/externals/grill/pool/source/data.cpp
+++ /dev/null
@@ -1,210 +0,0 @@
-/*
-pool - hierarchical storage object for PD and Max/MSP
-
-Copyright (c) 2002-2008 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-$LastChangedRevision: 26 $
-$LastChangedDate: 2008-01-03 16:14:29 +0100 (Thu, 03 Jan 2008) $
-$LastChangedBy: thomas $
-*/
-
-#include "pool.h"
-#include <string.h>
-#include <ctype.h>
-#include <stdlib.h>
-#include <fstream>
-
-using namespace std;
-
-pooldata::pooldata(const t_symbol *s,int vcnt,int dcnt):
- sym(s),nxt(NULL),refs(0),
- root(nullatom,NULL,vcnt,dcnt)
-{
- FLEXT_LOG1("new pool %s",sym?flext_base::GetString(sym):"<private>");
-}
-
-pooldata::~pooldata()
-{
- FLEXT_LOG1("free pool %s",sym?flext_base::GetString(sym):"<private>");
-}
-
-
-const t_atom pooldata::nullatom = { A_NULL };
-
-int pooldata::GetAll(const AtomList &d,t_atom *&keys,Atoms *&lst)
-{
- pooldir *pd = root.GetDir(d);
- if(pd)
- return pd->GetAll(keys,lst);
- else {
- keys = NULL; lst = NULL;
- return 0;
- }
-}
-
-int pooldata::PrintAll(const AtomList &d)
-{
- char tmp[1024];
- d.Print(tmp,sizeof tmp);
- pooldir *pd = root.GetDir(d);
- strcat(tmp," , ");
- int cnt = pd?pd->PrintAll(tmp,sizeof tmp):0;
- if(!cnt) post(tmp);
- return cnt;
-}
-
-int pooldata::GetSub(const AtomList &d,const t_atom **&dirs)
-{
- pooldir *pd = root.GetDir(d);
- if(pd)
- return pd->GetSub(dirs);
- else {
- dirs = NULL;
- return 0;
- }
-}
-
-
-bool pooldata::Paste(const AtomList &d,const pooldir *clip,int depth,bool repl,bool mkdir)
-{
- pooldir *pd = root.GetDir(d);
- return pd && pd->Paste(clip,depth,repl,mkdir);
-}
-
-pooldir *pooldata::Copy(const AtomList &d,const t_atom &key,bool cut)
-{
- pooldir *pd = root.GetDir(d);
- if(pd) {
- AtomList *val = pd->GetVal(key,cut);
- if(val) {
- pooldir *ret = new pooldir(nullatom,NULL,pd->VSize(),pd->DSize());
- ret->SetVal(key,val);
- return ret;
- }
- else
- return NULL;
- }
- else
- return NULL;
-}
-
-pooldir *pooldata::CopyAll(const AtomList &d,int depth,bool cut)
-{
- pooldir *pd = root.GetDir(d);
- if(pd) {
- // What sizes should we choose here?
- pooldir *ret = new pooldir(nullatom,NULL,pd->VSize(),pd->DSize());
- if(pd->Copy(ret,depth,cut))
- return ret;
- else {
- delete ret;
- return NULL;
- }
- }
- else
- return NULL;
-}
-
-
-static const char *CnvFlnm(char *dst,const char *src,int sz)
-{
-#if FLEXT_SYS == FLEXT_SYS_PD && FLEXT_OS == FLEXT_OS_WIN
- int i,cnt = strlen(src);
- if(cnt >= sz-1) return NULL;
- for(i = 0; i < cnt; ++i)
- dst[i] = src[i] != '/'?src[i]:'\\';
- dst[i] = 0;
- return dst;
-#else
- return src;
-#endif
-}
-
-bool pooldata::LdDir(const AtomList &d,const char *flnm,int depth,bool mkdir)
-{
- pooldir *pd = root.GetDir(d);
- if(pd) {
- char tmp[1024]; // CnvFlnm checks for size of string buffer
- const char *t = CnvFlnm(tmp,flnm,sizeof tmp);
- if(t) {
- ifstream file(t);
- return file.good() && pd->LdDir(file,depth,mkdir);
- }
- else return false;
- }
- else
- return false;
-}
-
-bool pooldata::SvDir(const AtomList &d,const char *flnm,int depth,bool absdir)
-{
- pooldir *pd = root.GetDir(d);
- if(pd) {
- char tmp[1024]; // CnvFlnm checks for size of string buffer
- const char *t = CnvFlnm(tmp,flnm,sizeof tmp);
- if(t) {
- ofstream file(t);
- Atoms tmp;
- if(absdir) tmp = d;
- return file.good() && pd->SvDir(file,depth,tmp);
- }
- else return false;
- }
- else
- return false;
-}
-
-bool pooldata::LdDirXML(const AtomList &d,const char *flnm,int depth,bool mkdir)
-{
- pooldir *pd = root.GetDir(d);
- if(pd) {
- char tmp[1024]; // CnvFlnm checks for size of string buffer
- const char *t = CnvFlnm(tmp,flnm,sizeof tmp);
- if(t) {
- ifstream file(t);
- bool ret = file.good() != 0;
- if(ret) {
- file.getline(tmp,sizeof tmp);
- ret = !strncmp(tmp,"<?xml",5);
- }
-/*
- if(ret) {
- fl.getline(tmp,sizeof tmp);
- // DOCTYPE need not be present / only external DOCTYPE is allowed!
- ret = !strncmp(tmp,"<!DOCTYPE",9);
- }
-*/
- if(ret)
- ret = pd->LdDirXML(file,depth,mkdir);
- return ret;
- }
- }
-
- return false;
-}
-
-bool pooldata::SvDirXML(const AtomList &d,const char *flnm,int depth,bool absdir)
-{
- pooldir *pd = root.GetDir(d);
- if(pd) {
- char tmp[1024]; // CnvFlnm checks for size of string buffer
- const char *t = CnvFlnm(tmp,flnm,sizeof tmp);
- if(t) {
- ofstream file(t);
- Atoms tmp;
- if(absdir) tmp = d;
- if(file.good()) {
- file << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" << endl;
- file << "<!DOCTYPE pool SYSTEM \"http://grrrr.org/ext/pool/pool-0.2.dtd\">" << endl;
- file << "<pool>" << endl;
- bool ret = pd->SvDirXML(file,depth,tmp);
- file << "</pool>" << endl;
- return ret;
- }
- }
- }
-
- return false;
-}
diff --git a/externals/grill/pool/source/main.cpp b/externals/grill/pool/source/main.cpp
deleted file mode 100644
index 3b262113..00000000
--- a/externals/grill/pool/source/main.cpp
+++ /dev/null
@@ -1,1395 +0,0 @@
-/*
-pool - hierarchical storage object for PD and Max/MSP
-
-Copyright (c) 2002-2008 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-$LastChangedRevision: 26 $
-$LastChangedDate: 2008-01-03 16:14:29 +0100 (Thu, 03 Jan 2008) $
-$LastChangedBy: thomas $
-*/
-
-#include "pool.h"
-#include <string>
-#include <map>
-
-#define POOL_VERSION "0.2.2pre"
-
-#define VCNT 32
-#define DCNT 8
-
-
-class pool:
- public flext_base
-{
- FLEXT_HEADER_S(pool,flext_base,setup)
-
-public:
- pool(int argc,const t_atom *argv);
- virtual ~pool();
-
- static void setup(t_classid);
-
- virtual bool Init();
-
- pooldata *Pool() { return pl; }
-
-protected:
-
- // switch to other pool
- void ms_pool(const AtomList &l);
- void mg_pool(AtomList &l);
-
- void mg_priv(bool &p) const { p = pl && pl->Private(); }
-
- // print some help message
- static void m_help() { post("pool " POOL_VERSION " - hierarchical storage object, (C)2002-2008 Thomas Grill"); }
-
- // clear all data in pool
- void m_reset();
-
- // handle directories
- void m_getdir();
-
- void m_mkdir(int argc,const t_atom *argv,bool abs = true,bool chg = false); // make (and change) to dir
- void m_mkchdir(int argc,const t_atom *argv) { m_mkdir(argc,argv,true,true); } // make and change to dir
- void m_chdir(int argc,const t_atom *argv,bool abs = true); // change to dir
- void m_rmdir(int argc,const t_atom *argv,bool abs = true); // remove dir
- void m_updir(int argc,const t_atom *argv); // one or more levels up
-
- void ms_curdir(const AtomList &l) { m_chdir(l.Count(),l.Atoms()); }
-
- void m_mksub(int argc,const t_atom *argv) { m_mkdir(argc,argv,false); }
- void m_mkchsub(int argc,const t_atom *argv) { m_mkdir(argc,argv,false,true); }
- void m_chsub(int argc,const t_atom *argv) { m_chdir(argc,argv,false); }
- void m_rmsub(int argc,const t_atom *argv) { m_rmdir(argc,argv,false); }
-
- // handle data
- void m_set(int argc,const t_atom *argv) { set(argc,argv,true); }
- void m_seti(int argc,const t_atom *argv); // set value at index
- void m_add(int argc,const t_atom *argv) { set(argc,argv,false); }
- void m_clr(int argc,const t_atom *argv);
- void m_clri(int ix); // clear value at index
- void m_clrall(); // only values
- void m_clrrec(); // also subdirectories
- void m_clrsub(); // only subdirectories
- void m_get(int argc,const t_atom *argv);
- void m_geti(int ix); // get value at index
- void m_getall(); // only values
- void m_getrec(int argc,const t_atom *argv); // also subdirectories
- void m_getsub(int argc,const t_atom *argv); // only subdirectories
- void m_ogetall(int argc,const t_atom *argv); // only values (ordered)
- void m_ogetrec(int argc,const t_atom *argv); // also subdirectories (ordered)
- void m_ogetsub(int argc,const t_atom *argv); // only subdirectories (ordered)
- void m_cntall(); // only values
- void m_cntrec(int argc,const t_atom *argv); // also subdirectories
- void m_cntsub(int argc,const t_atom *argv); // only subdirectories
-
- // print directories
- void m_printall(); // print values in current dir
- void m_printrec(int argc,const t_atom *argv,bool fromroot = false); // print values recursively
- void m_printroot() { m_printrec(0,NULL,true); } // print values recursively from root
-
- // cut/copy/paste
- void m_paste(int argc,const t_atom *argv) { paste(thisTag(),argc,argv,true); } // paste contents of clipboard
- void m_pasteadd(int argc,const t_atom *argv) { paste(thisTag(),argc,argv,false); } // paste but don't replace
- void m_clrclip(); // clear clipboard
- void m_cut(int argc,const t_atom *argv) { copy(thisTag(),argc,argv,true); } // cut value into clipboard
- void m_copy(int argc,const t_atom *argv) { copy(thisTag(),argc,argv,false); } // copy value into clipboard
- void m_cutall() { copyall(thisTag(),true,0); } // cut all values in current directory into clipboard
- void m_copyall() { copyall(thisTag(),false,0); } // copy all values in current directory into clipboard
- void m_cutrec(int argc,const t_atom *argv) { copyrec(thisTag(),argc,argv,true); } // cut directory (and subdirs) into clipboard
- void m_copyrec(int argc,const t_atom *argv) { copyrec(thisTag(),argc,argv,false); } // cut directory (and subdirs) into clipboard
-
- // load/save from/to file
- void m_load(int argc,const t_atom *argv) { load(argc,argv,false); }
- void m_save(int argc,const t_atom *argv) { save(argc,argv,false); }
- void m_loadx(int argc,const t_atom *argv) { load(argc,argv,true); } // XML
- void m_savex(int argc,const t_atom *argv) { save(argc,argv,true); } // XML
-
- // load directories
- void m_lddir(int argc,const t_atom *argv) { lddir(argc,argv,false); } // load values into current dir
- void m_ldrec(int argc,const t_atom *argv) { ldrec(argc,argv,false); } // load values recursively
- void m_ldxdir(int argc,const t_atom *argv) { lddir(argc,argv,true); } // load values into current dir (XML)
- void m_ldxrec(int argc,const t_atom *argv) { ldrec(argc,argv,true); } // load values recursively (XML)
-
- // save directories
- void m_svdir(int argc,const t_atom *argv) { svdir(argc,argv,false); } // save values in current dir
- void m_svrec(int argc,const t_atom *argv) { svrec(argc,argv,false); } // save values recursively
- void m_svxdir(int argc,const t_atom *argv) { svdir(argc,argv,true); } // save values in current dir (XML)
- void m_svxrec(int argc,const t_atom *argv) { svrec(argc,argv,true); } // save values recursively (XML)
-
-private:
- static bool KeyChk(const t_atom &a);
- static bool ValChk(int argc,const t_atom *argv);
- static bool ValChk(const AtomList &l) { return ValChk(l.Count(),l.Atoms()); }
- void ToOutAtom(int ix,const t_atom &a);
-
- static const t_symbol *sym_echo;
- static const t_symbol *sym_error;
-
- enum get_t { get_norm,get_cnt,get_print };
-
- void set(int argc,const t_atom *argv,bool over);
- void getdir(const t_symbol *tag);
- int getrec(const t_symbol *tag,int level,int order,bool rev,get_t how /*= get_norm*/,const AtomList &rdir);
- int getsub(const t_symbol *tag,int level,int order,bool rev,get_t how /*= get_norm*/,const AtomList &rdir);
-
- void paste(const t_symbol *tag,int argc,const t_atom *argv,bool repl);
- void copy(const t_symbol *tag,int argc,const t_atom *argv,bool cut);
- void copyall(const t_symbol *tag,bool cut,int lvls);
- void copyrec(const t_symbol *tag,int argc,const t_atom *argv,bool cut);
-
- void load(int argc,const t_atom *argv,bool xml);
- void save(int argc,const t_atom *argv,bool xml);
- void lddir(int argc,const t_atom *argv,bool xml); // load values into current dir
- void ldrec(int argc,const t_atom *argv,bool xml); // load values recursively
- void svdir(int argc,const t_atom *argv,bool xml); // save values in current dir
- void svrec(int argc,const t_atom *argv,bool xml); // save values recursively
-
- void echodir() { if(echo) getdir(sym_echo); }
-
- bool absdir,echo;
- int vcnt,dcnt;
- pooldata *pl;
- Atoms curdir;
- pooldir *clip;
-
- static const t_symbol *holdname; // used during initialization of new object (between constructor and Init method)
-
- typedef std::map<const t_symbol *,pooldata *> PoolMap;
- static PoolMap poolmap;
-
- void SetPool(const t_symbol *s);
- void FreePool();
-
- static pooldata *GetPool(const t_symbol *s);
- static void RmvPool(pooldata *p);
-
- string MakeFilename(const char *fn) const;
-
- FLEXT_CALLVAR_V(mg_pool,ms_pool)
- FLEXT_ATTRGET_V(curdir)
- FLEXT_CALLSET_V(ms_curdir)
- FLEXT_ATTRVAR_B(absdir)
- FLEXT_ATTRVAR_B(echo)
- FLEXT_CALLGET_B(mg_priv)
- FLEXT_ATTRVAR_I(vcnt)
- FLEXT_ATTRVAR_I(dcnt)
-
- FLEXT_CALLBACK(m_help)
-
- FLEXT_CALLBACK(m_reset)
-
- FLEXT_CALLBACK(m_getdir)
- FLEXT_CALLBACK_V(m_mkdir)
- FLEXT_CALLBACK_V(m_chdir)
- FLEXT_CALLBACK_V(m_mkchdir)
- FLEXT_CALLBACK_V(m_updir)
- FLEXT_CALLBACK_V(m_rmdir)
- FLEXT_CALLBACK_V(m_mksub)
- FLEXT_CALLBACK_V(m_chsub)
- FLEXT_CALLBACK_V(m_mkchsub)
- FLEXT_CALLBACK_V(m_rmsub)
-
- FLEXT_CALLBACK_V(m_set)
- FLEXT_CALLBACK_V(m_seti)
- FLEXT_CALLBACK_V(m_add)
- FLEXT_CALLBACK_V(m_clr)
- FLEXT_CALLBACK_I(m_clri)
- FLEXT_CALLBACK(m_clrall)
- FLEXT_CALLBACK(m_clrrec)
- FLEXT_CALLBACK(m_clrsub)
- FLEXT_CALLBACK_V(m_get)
- FLEXT_CALLBACK_I(m_geti)
- FLEXT_CALLBACK(m_getall)
- FLEXT_CALLBACK_V(m_getrec)
- FLEXT_CALLBACK_V(m_getsub)
- FLEXT_CALLBACK_V(m_ogetall)
- FLEXT_CALLBACK_V(m_ogetrec)
- FLEXT_CALLBACK_V(m_ogetsub)
- FLEXT_CALLBACK(m_cntall)
- FLEXT_CALLBACK_V(m_cntrec)
- FLEXT_CALLBACK_V(m_cntsub)
- FLEXT_CALLBACK(m_printall)
- FLEXT_CALLBACK_V(m_printrec)
- FLEXT_CALLBACK(m_printroot)
-
- FLEXT_CALLBACK_V(m_paste)
- FLEXT_CALLBACK_V(m_pasteadd)
- FLEXT_CALLBACK(m_clrclip)
- FLEXT_CALLBACK_V(m_copy)
- FLEXT_CALLBACK_V(m_cut)
- FLEXT_CALLBACK(m_copyall)
- FLEXT_CALLBACK(m_cutall)
- FLEXT_CALLBACK_V(m_copyrec)
- FLEXT_CALLBACK_V(m_cutrec)
-
- FLEXT_CALLBACK_V(m_load)
- FLEXT_CALLBACK_V(m_save)
- FLEXT_CALLBACK_V(m_lddir)
- FLEXT_CALLBACK_V(m_ldrec)
- FLEXT_CALLBACK_V(m_svdir)
- FLEXT_CALLBACK_V(m_svrec)
- FLEXT_CALLBACK_V(m_loadx)
- FLEXT_CALLBACK_V(m_savex)
- FLEXT_CALLBACK_V(m_ldxdir)
- FLEXT_CALLBACK_V(m_ldxrec)
- FLEXT_CALLBACK_V(m_svxdir)
- FLEXT_CALLBACK_V(m_svxrec)
-};
-
-FLEXT_NEW_V("pool",pool);
-
-
-pool::PoolMap pool::poolmap;
-const t_symbol *pool::sym_echo,*pool::sym_error;
-const t_symbol *pool::holdname;
-
-
-void pool::setup(t_classid c)
-{
- post("");
- pool::m_help();
- post("");
-
- sym_echo = MakeSymbol("echo");
- sym_error = MakeSymbol("error");
-
- FLEXT_CADDATTR_VAR(c,"pool",mg_pool,ms_pool);
- FLEXT_CADDATTR_VAR(c,"curdir",curdir,ms_curdir);
- FLEXT_CADDATTR_VAR1(c,"absdir",absdir);
- FLEXT_CADDATTR_VAR1(c,"echodir",echo);
- FLEXT_CADDATTR_GET(c,"private",mg_priv);
- FLEXT_CADDATTR_VAR1(c,"valcnt",vcnt);
- FLEXT_CADDATTR_VAR1(c,"dircnt",dcnt);
-
- FLEXT_CADDMETHOD_(c,0,"help",m_help);
- FLEXT_CADDMETHOD_(c,0,"reset",m_reset);
- FLEXT_CADDMETHOD_(c,0,"getdir",m_getdir);
- FLEXT_CADDMETHOD_(c,0,"mkdir",m_mkdir);
- FLEXT_CADDMETHOD_(c,0,"chdir",m_chdir);
- FLEXT_CADDMETHOD_(c,0,"mkchdir",m_mkchdir);
- FLEXT_CADDMETHOD_(c,0,"rmdir",m_rmdir);
- FLEXT_CADDMETHOD_(c,0,"updir",m_updir);
- FLEXT_CADDMETHOD_(c,0,"mksub",m_mksub);
- FLEXT_CADDMETHOD_(c,0,"chsub",m_chsub);
- FLEXT_CADDMETHOD_(c,0,"mkchsub",m_mkchsub);
- FLEXT_CADDMETHOD_(c,0,"rmsub",m_rmsub);
-
- FLEXT_CADDMETHOD_(c,0,"set",m_set);
- FLEXT_CADDMETHOD_(c,0,"seti",m_seti);
- FLEXT_CADDMETHOD_(c,0,"add",m_add);
- FLEXT_CADDMETHOD_(c,0,"clr",m_clr);
- FLEXT_CADDMETHOD_(c,0,"clri",m_clri);
- FLEXT_CADDMETHOD_(c,0,"clrall",m_clrall);
- FLEXT_CADDMETHOD_(c,0,"clrrec",m_clrrec);
- FLEXT_CADDMETHOD_(c,0,"clrsub",m_clrsub);
- FLEXT_CADDMETHOD_(c,0,"get",m_get);
- FLEXT_CADDMETHOD_(c,0,"geti",m_geti);
- FLEXT_CADDMETHOD_(c,0,"getall",m_getall);
- FLEXT_CADDMETHOD_(c,0,"getrec",m_getrec);
- FLEXT_CADDMETHOD_(c,0,"getsub",m_getsub);
- FLEXT_CADDMETHOD_(c,0,"ogetall",m_ogetall);
- FLEXT_CADDMETHOD_(c,0,"ogetrec",m_ogetrec);
- FLEXT_CADDMETHOD_(c,0,"ogetsub",m_ogetsub);
- FLEXT_CADDMETHOD_(c,0,"cntall",m_cntall);
- FLEXT_CADDMETHOD_(c,0,"cntrec",m_cntrec);
- FLEXT_CADDMETHOD_(c,0,"cntsub",m_cntsub);
-
- FLEXT_CADDMETHOD_(c,0,"printall",m_printall);
- FLEXT_CADDMETHOD_(c,0,"printrec",m_printrec);
- FLEXT_CADDMETHOD_(c,0,"printroot",m_printroot);
-
- FLEXT_CADDMETHOD_(c,0,"paste",m_paste);
- FLEXT_CADDMETHOD_(c,0,"pasteadd",m_pasteadd);
- FLEXT_CADDMETHOD_(c,0,"clrclip",m_clrclip);
- FLEXT_CADDMETHOD_(c,0,"cut",m_cut);
- FLEXT_CADDMETHOD_(c,0,"copy",m_copy);
- FLEXT_CADDMETHOD_(c,0,"cutall",m_cutall);
- FLEXT_CADDMETHOD_(c,0,"copyall",m_copyall);
- FLEXT_CADDMETHOD_(c,0,"cutrec",m_cutrec);
- FLEXT_CADDMETHOD_(c,0,"copyrec",m_copyrec);
-
- FLEXT_CADDMETHOD_(c,0,"load",m_load);
- FLEXT_CADDMETHOD_(c,0,"save",m_save);
- FLEXT_CADDMETHOD_(c,0,"lddir",m_lddir);
- FLEXT_CADDMETHOD_(c,0,"ldrec",m_ldrec);
- FLEXT_CADDMETHOD_(c,0,"svdir",m_svdir);
- FLEXT_CADDMETHOD_(c,0,"svrec",m_svrec);
- FLEXT_CADDMETHOD_(c,0,"loadx",m_loadx);
- FLEXT_CADDMETHOD_(c,0,"savex",m_savex);
- FLEXT_CADDMETHOD_(c,0,"ldxdir",m_ldxdir);
- FLEXT_CADDMETHOD_(c,0,"ldxrec",m_ldxrec);
- FLEXT_CADDMETHOD_(c,0,"svxdir",m_svxdir);
- FLEXT_CADDMETHOD_(c,0,"svxrec",m_svxrec);
-}
-
-pool::pool(int argc,const t_atom *argv):
- absdir(true),echo(false),
- pl(NULL),
- clip(NULL),
- vcnt(VCNT),dcnt(DCNT)
-{
- holdname = argc >= 1 && IsSymbol(argv[0])?GetSymbol(argv[0]):NULL;
-
- AddInAnything("Commands in");
- AddOutList();
- AddOutAnything();
- AddOutList();
- AddOutAnything();
-}
-
-pool::~pool()
-{
- FreePool();
-}
-
-bool pool::Init()
-{
- if(flext_base::Init()) {
- SetPool(holdname);
- return true;
- }
- else return false;
-}
-
-void pool::SetPool(const t_symbol *s)
-{
- if(s) {
- if(pl)
- // check if new symbol equals the current one
- if(pl->sym == s)
- return;
- else
- FreePool();
- pl = GetPool(s);
- }
- else {
- if(pl) {
- // if already private no need to allocate new storage
- if(pl->Private())
- return;
- else
- FreePool();
- }
- pl = new pooldata(NULL,vcnt,dcnt);
- }
-}
-
-void pool::FreePool()
-{
- curdir(); // reset current directory
-
- if(pl) {
- if(!pl->Private())
- RmvPool(pl);
- else
- delete pl;
- pl = NULL;
- }
-
- if(clip) { delete clip; clip = NULL; }
-}
-
-void pool::ms_pool(const AtomList &l)
-{
- const t_symbol *s = NULL;
- if(l.Count()) {
- if(l.Count() > 1) post("%s - pool: superfluous arguments ignored",thisName());
- s = GetASymbol(l[0]);
- if(!s) post("%s - pool: invalid pool name, pool set to private",thisName());
- }
-
- SetPool(s);
-}
-
-void pool::mg_pool(AtomList &l)
-{
- if(!pl || pl->Private()) l();
- else { l(1); SetSymbol(l[0],pl->sym); }
-}
-
-void pool::m_reset()
-{
- curdir();
- pl->Reset();
-}
-
-
-void pool::getdir(const t_symbol *tag)
-{
- ToSysAnything(3,tag,0,NULL);
- ToSysList(2,curdir);
-}
-
-void pool::m_getdir() { getdir(thisTag()); }
-
-void pool::m_mkdir(int argc,const t_atom *argv,bool abs,bool chg)
-{
-// const char *nm = chg?"mkchdir":"mkdir";
- if(!ValChk(argc,argv))
- post("%s - %s: invalid directory name",thisName(),GetString(thisTag()));
- else {
- Atoms ndir;
- if(abs) ndir(argc,argv);
- else (ndir = curdir).Append(argc,argv);
- if(!pl->MkDir(ndir,vcnt,dcnt)) {
- post("%s - %s: directory couldn't be created",thisName(),GetString(thisTag()));
- }
- else if(chg)
- // change to newly created directory
- curdir = ndir;
- }
-
- echodir();
-}
-
-void pool::m_chdir(int argc,const t_atom *argv,bool abs)
-{
- if(!ValChk(argc,argv))
- post("%s - %s: invalid directory name",thisName(),GetString(thisTag()));
- else {
- Atoms prv(curdir);
- if(abs) curdir(argc,argv);
- else curdir.Append(argc,argv);
- if(!pl->ChkDir(curdir)) {
- post("%s - %s: directory couldn't be changed",thisName(),GetString(thisTag()));
- curdir = prv;
- }
- }
-
- echodir();
-}
-
-void pool::m_updir(int argc,const t_atom *argv)
-{
- int lvls = 1;
- if(argc > 0) {
- if(CanbeInt(argv[0])) {
- if(argc > 1)
- post("%s - %s: superfluous arguments ignored",thisName(),GetString(thisTag()));
- lvls = GetAInt(argv[0]);
- if(lvls < 0)
- post("%s - %s: invalid level specification - set to 1",thisName(),GetString(thisTag()));
- }
- else
- post("%s - %s: invalid level specification - set to 1",thisName(),GetString(thisTag()));
- }
-
- Atoms prv(curdir);
-
- if(lvls > curdir.Count()) {
- post("%s - %s: level exceeds directory depth - corrected",thisName(),GetString(thisTag()));
- curdir();
- }
- else
- curdir.Part(0,curdir.Count()-lvls);
-
- if(!pl->ChkDir(curdir)) {
- post("%s - %s: directory couldn't be changed",thisName(),GetString(thisTag()));
- curdir = prv;
- }
-
- echodir();
-}
-
-void pool::m_rmdir(int argc,const t_atom *argv,bool abs)
-{
- if(abs) curdir(argc,argv);
- else curdir.Append(argc,argv);
-
- if(!pl->RmDir(curdir))
- post("%s - %s: directory couldn't be removed",thisName(),GetString(thisTag()));
- curdir();
-
- echodir();
-}
-
-void pool::set(int argc,const t_atom *argv,bool over)
-{
- if(!argc || !KeyChk(argv[0]))
- post("%s - %s: invalid key",thisName(),GetString(thisTag()));
- else if(!ValChk(argc-1,argv+1)) {
- post("%s - %s: invalid data values",thisName(),GetString(thisTag()));
- }
- else
- if(!pl->Set(curdir,argv[0],new AtomList(argc-1,argv+1),over))
- post("%s - %s: value couldn't be set",thisName(),GetString(thisTag()));
-
- echodir();
-}
-
-void pool::m_seti(int argc,const t_atom *argv)
-{
- if(!argc || !CanbeInt(argv[0]))
- post("%s - %s: invalid index",thisName(),GetString(thisTag()));
- else if(!ValChk(argc-1,argv+1)) {
- post("%s - %s: invalid data values",thisName(),GetString(thisTag()));
- }
- else
- if(!pl->Seti(curdir,GetAInt(argv[0]),new Atoms(argc-1,argv+1)))
- post("%s - %s: value couldn't be set",thisName(),GetString(thisTag()));
-
- echodir();
-}
-
-void pool::m_clr(int argc,const t_atom *argv)
-{
- if(!argc || !KeyChk(argv[0]))
- post("%s - %s: invalid key",thisName(),GetString(thisTag()));
- else {
- if(argc > 1)
- post("%s - %s: superfluous arguments ignored",thisName(),GetString(thisTag()));
-
- if(!pl->Clr(curdir,argv[0]))
- post("%s - %s: value couldn't be cleared",thisName(),GetString(thisTag()));
- }
-
- echodir();
-}
-
-void pool::m_clri(int ix)
-{
- if(ix < 0)
- post("%s - %s: invalid index",thisName(),GetString(thisTag()));
- else {
- if(!pl->Clri(curdir,ix))
- post("%s - %s: value couldn't be cleared",thisName(),GetString(thisTag()));
- }
-
- echodir();
-}
-
-void pool::m_clrall()
-{
- if(!pl->ClrAll(curdir,false))
- post("%s - %s: values couldn't be cleared",thisName(),GetString(thisTag()));
-
- echodir();
-}
-
-void pool::m_clrrec()
-{
- if(!pl->ClrAll(curdir,true))
- post("%s - %s: values couldn't be cleared",thisName(),GetString(thisTag()));
-
- echodir();
-}
-
-void pool::m_clrsub()
-{
- if(!pl->ClrAll(curdir,true,true))
- post("%s - %s: directories couldn't be cleared",thisName(),GetString(thisTag()));
-
- echodir();
-}
-
-void pool::m_get(int argc,const t_atom *argv)
-{
- if(!argc || !KeyChk(argv[0]))
- post("%s - %s: invalid key",thisName(),GetString(thisTag()));
- else {
- if(argc > 1)
- post("%s - %s: superfluous arguments ignored",thisName(),GetString(thisTag()));
-
- poolval *r = pl->Ref(curdir,argv[0]);
-
- ToSysAnything(3,thisTag(),0,NULL);
- if(absdir)
- ToSysList(2,curdir);
- else
- ToSysList(2,0,NULL);
- if(r) {
- ToOutAtom(1,r->key);
- ToSysList(0,*r->data);
- }
- else {
- ToSysBang(1);
- ToSysBang(0);
- }
- }
-
- echodir();
-}
-
-void pool::m_geti(int ix)
-{
- if(ix < 0)
- post("%s - %s: invalid index",thisName(),GetString(thisTag()));
- else {
- poolval *r = pl->Refi(curdir,ix);
-
- ToSysAnything(3,thisTag(),0,NULL);
- if(absdir)
- ToSysList(2,curdir);
- else
- ToSysList(2,0,NULL);
- if(r) {
- ToOutAtom(1,r->key);
- ToSysList(0,*r->data);
- }
- else {
- ToSysBang(1);
- ToSysBang(0);
- }
- }
-
- echodir();
-}
-
-
-// ---- some sorting stuff ----------------------------------
-
-inline bool smaller(const t_atom &a,const t_atom &b,int index) { return a < b; }
-inline void swap(t_atom &a,t_atom &b) { t_atom c = a; a = b; b = c; }
-
-inline bool smaller(const t_atom *a,const t_atom *b,int index) { return *a < *b; }
-inline void swap(t_atom *a,t_atom *b) { t_atom *c = a; a = b; b = c; }
-
-inline bool smaller(const Atoms &a,const Atoms &b,int index)
-{
- if(a.Count()-1 < index)
- return true;
- else if(b.Count()-1 < index)
- return false;
- else
- return a[index] < b[index];
-}
-
-inline void swap(Atoms &a,Atoms &b) { Atoms c(a); a = b; b = c; }
-
-inline bool smaller(const Atoms *a,const Atoms *b,int index) { return smaller(*a,*b,index); }
-inline void swap(Atoms *a,Atoms *b) { Atoms *c = a; a = b; b = c; }
-
-template <typename T1,typename T2>
-void sift(T1 *a,T2 *b,int start,int count,int index,bool rev)
-{
- int root = start; // Point to a root node
- int child;
-
- while((child = root * 2 + 1) < count) { // While the root has child(ren) point to its left child
- // If the child has a sibling and the child's value is less than its sibling's...
- if(child < count-1 && smaller(a[child],a[child+1],index) != rev)
- child++; // ... point to the right child instead
-
- if(smaller(a[root],a[child],index) == rev) break;
-
- // If the value in root is less than in child...
- swap(a[root], a[child]); // ... swap the values in root and child and...
- if(b) swap(b[root], b[child]);
-
- root = child; // ... make root point to its child
- }
-}
-
-template <typename T1,typename T2>
-void heapsort(T1 *a,T2 *b,int count,int index,bool rev)
-{
- int start = count/2-1;
- int end = count-1;
-
- for(; start >= 0; start--)
- sift(a, b, start, count, index, rev);
-
- for(; end > 0; --end) {
- swap(a[end], a[0]);
- if(b) swap(b[end], b[0]);
- sift(a, b, 0, end, index, rev);
- }
-}
-
-template <typename T1,typename T2>
-static void orderpairs(T1 *keys,T2 *atoms,int count,int index,bool rev)
-{
- FLEXT_ASSERT(index >= 0);
-
- if(!count) return;
-
- if(index)
- heapsort(atoms,keys,count,index-1,rev);
- else
- heapsort(keys,atoms,count,0,rev);
-}
-
-// ---- sorting stuff ends ----------------------------------
-
-int pool::getrec(const t_symbol *tag,int level,int order,bool rev,get_t how,const AtomList &rdir)
-{
- Atoms gldir(curdir);
- gldir.Append(rdir);
-
- int ret = 0;
-
- switch(how) {
- case get_cnt:
- ret = pl->CntAll(gldir);
- break;
- case get_print:
- ret = pl->PrintAll(gldir);
- break;
- case get_norm: {
- t_atom *k;
- Atoms *r;
- int cnt = pl->GetAll(gldir,k,r);
- if(!k) {
- FLEXT_ASSERT(!k);
- post("%s - %s: error retrieving values",thisName(),GetString(tag));
- }
- else {
- FLEXT_ASSERT(r);
-
- if(order >= 0)
- orderpairs(k,r,cnt,order,rev);
-
- for(int i = 0; i < cnt; ++i) {
- ToSysAnything(3,tag,0,NULL);
- ToSysList(2,absdir?gldir:rdir);
- ToOutAtom(1,k[i]);
- ToSysList(0,r[i]);
- }
- delete[] k;
- delete[] r;
- }
- ret = cnt;
- }
- }
-
- if(level != 0) {
- const t_atom **r;
- int cnt = pl->GetSub(gldir,r);
- if(!r)
- post("%s - %s: error retrieving directories",thisName(),GetString(tag));
- else {
- if(order >= 0)
- orderpairs(r,(Atoms *)NULL,cnt,order,rev);
-
- int lv = level > 0?level-1:-1;
- for(int i = 0; i < cnt; ++i) {
- Atoms l(rdir); l.Append(*r[i]);
- ret += getrec(tag,lv,order,rev,how,l);
- }
- delete[] r;
- }
- }
-
- return ret;
-}
-
-void pool::m_getall()
-{
- AtomList l;
- getrec(thisTag(),0,-1,false,get_norm,l);
- ToSysBang(3);
-
- echodir();
-}
-
-void pool::m_ogetall(int argc,const t_atom *argv)
-{
- int index = 0;
- if(argc) {
- if(!CanbeInt(*argv) || (index = GetAInt(*argv)) < 0) {
- index = 0;
- post("%s - %s: invalid sort index specification - set to 0",thisName(),GetString(thisTag()));
- }
- --argc,++argv;
- }
-
- bool rev = false;
- if(argc) {
- if(!CanbeBool(*argv))
- post("%s - %s: invalid sort direction specification - set to forward",thisName(),GetString(thisTag()));
- else
- rev = GetABool(*argv);
- --argc,++argv;
- }
-
- if(argc)
- post("%s - %s: superfluous arguments ignored",thisName(),GetString(thisTag()));
-
- AtomList l;
- getrec(thisTag(),0,index,rev,get_norm,l);
- ToSysBang(3);
-
- echodir();
-}
-
-void pool::m_getrec(int argc,const t_atom *argv)
-{
- int lvls = -1;
- if(argc) {
- if(!CanbeInt(*argv) || (lvls = GetAInt(*argv)) < -1) {
- lvls = -1;
- post("%s - %s: invalid level specification - set to %i",thisName(),GetString(thisTag()),lvls);
- }
- --argc,++argv;
- }
-
- if(argc)
- post("%s - %s: superfluous arguments ignored",thisName(),GetString(thisTag()));
-
- AtomList l;
- getrec(thisTag(),lvls,-1,false,get_norm,l);
- ToSysBang(3);
-
- echodir();
-}
-
-
-void pool::m_ogetrec(int argc,const t_atom *argv)
-{
- int lvls = -1;
- if(argc) {
- if(!CanbeInt(*argv) || (lvls = GetAInt(*argv)) < -1) {
- lvls = -1;
- post("%s - %s: invalid level specification - set to %i",thisName(),GetString(thisTag()),lvls);
- }
- --argc,++argv;
- }
-
- int index = 0;
- if(argc) {
- if(!CanbeInt(*argv) || (index = GetAInt(*argv)) < 0) {
- index = 0;
- post("%s - %s: invalid sort index specification - set to 0",thisName(),GetString(thisTag()));
- }
- --argc,++argv;
- }
-
- bool rev = false;
- if(argc) {
- if(!CanbeBool(*argv))
- post("%s - %s: invalid sort direction specification - set to forward",thisName(),GetString(thisTag()));
- else
- rev = GetABool(*argv);
- --argc,++argv;
- }
-
- if(argc)
- post("%s - %s: superfluous arguments ignored",thisName(),GetString(thisTag()));
-
- AtomList l;
- getrec(thisTag(),lvls,index,rev,get_norm,l);
- ToSysBang(3);
-
- echodir();
-}
-
-
-int pool::getsub(const t_symbol *tag,int level,int order,bool rev,get_t how,const AtomList &rdir)
-{
- Atoms gldir(curdir);
- gldir.Append(rdir);
-
- int ret = 0;
-
- const t_atom **r = NULL;
- // CntSub is not used here because it doesn't allow checking for valid directory
- int cnt = pl->GetSub(gldir,r);
- if(!r)
- post("%s - %s: error retrieving directories",thisName(),GetString(tag));
- else {
- if(order >= 0)
- orderpairs(r,(Atoms *)NULL,cnt,order,rev);
-
- int lv = level > 0?level-1:-1;
- for(int i = 0; i < cnt; ++i) {
- Atoms ndir(absdir?gldir:rdir);
- ndir.Append(*r[i]);
- ++ret;
-
- if(how == get_norm) {
- ToSysAnything(3,tag,0,NULL);
- ToSysList(2,curdir);
- ToSysList(1,ndir);
- ToSysBang(0);
- }
-
- if(level != 0) {
- AtomList l(rdir); l.Append(*r[i]);
- ret += getsub(tag,lv,order,rev,how,l);
- }
- }
- delete[] r;
- }
-
- return ret;
-}
-
-void pool::m_getsub(int argc,const t_atom *argv)
-{
- int lvls = 0;
- if(argc) {
- if(!CanbeInt(*argv) || (lvls = GetAInt(*argv)) < -1) {
- lvls = 0;
- post("%s - %s: invalid level specification - set to %i",thisName(),GetString(thisTag()),lvls);
- }
- --argc,++argv;
- }
-
- if(argc)
- post("%s - %s: superfluous arguments ignored",thisName(),GetString(thisTag()));
-
- AtomList l;
- getsub(thisTag(),lvls,-1,false,get_norm,l);
- ToSysBang(3);
-
- echodir();
-}
-
-
-void pool::m_ogetsub(int argc,const t_atom *argv)
-{
- int lvls = 0;
- if(argc) {
- if(!CanbeInt(*argv) || (lvls = GetAInt(*argv)) < -1) {
- lvls = 0;
- post("%s - %s: invalid level specification - set to %i",thisName(),GetString(thisTag()),lvls);
- }
- --argc,++argv;
- }
-
- int index = 0;
- if(argc) {
- if(!CanbeInt(*argv) || (index = GetAInt(*argv)) < 0) {
- index = 0;
- post("%s - %s: invalid sort index specification - set to 0",thisName(),GetString(thisTag()));
- }
- --argc,++argv;
- }
-
- bool rev = false;
- if(argc) {
- if(!CanbeBool(*argv))
- post("%s - %s: invalid sort direction specification - set to forward",thisName(),GetString(thisTag()));
- else
- rev = GetABool(*argv);
- --argc,++argv;
- }
-
- if(argc)
- post("%s - %s: superfluous arguments ignored",thisName(),GetString(thisTag()));
-
- AtomList l;
- getsub(thisTag(),lvls,index,rev,get_norm,l);
- ToSysBang(3);
-
- echodir();
-}
-
-
-void pool::m_cntall()
-{
- AtomList l;
- int cnt = getrec(thisTag(),0,-1,false,get_cnt,l);
- ToSysSymbol(3,thisTag());
- ToSysBang(2);
- ToSysBang(1);
- ToSysInt(0,cnt);
-
- echodir();
-}
-
-void pool::m_cntrec(int argc,const t_atom *argv)
-{
- int lvls = -1;
- if(argc) {
- if(!CanbeInt(*argv) || (lvls = GetAInt(*argv)) < -1) {
- lvls = -1;
- post("%s - %s: invalid level specification - set to %i",thisName(),GetString(thisTag()),lvls);
- }
- --argc,++argv;
- }
-
- if(argc)
- post("%s - %s: superfluous arguments ignored",thisName(),GetString(thisTag()));
-
- AtomList l;
- int cnt = getrec(thisTag(),lvls,-1,false,get_cnt,l);
- ToSysSymbol(3,thisTag());
- ToSysBang(2);
- ToSysBang(1);
- ToSysInt(0,cnt);
-
- echodir();
-}
-
-
-void pool::m_cntsub(int argc,const t_atom *argv)
-{
- int lvls = 0;
- if(argc) {
- if(!CanbeInt(*argv) || (lvls = GetAInt(*argv)) < -1) {
- lvls = 0;
- post("%s - %s: invalid level specification - set to %i",thisName(),GetString(thisTag()),lvls);
- }
- --argc,++argv;
- }
-
- if(argc)
- post("%s - %s: superfluous arguments ignored",thisName(),GetString(thisTag()));
-
- AtomList l;
- int cnt = getsub(thisTag(),lvls,-1,false,get_cnt,l);
- ToSysSymbol(3,thisTag());
- ToSysBang(2);
- ToSysBang(1);
- ToSysInt(0,cnt);
-
- echodir();
-}
-
-void pool::m_printall()
-{
- AtomList l;
- int cnt = getrec(thisTag(),0,-1,false,get_print,l);
- post("");
-}
-
-void pool::m_printrec(int argc,const t_atom *argv,bool fromroot)
-{
- const t_symbol *tag = thisTag();
- int lvls = -1;
-
- if(argc) {
- if(!CanbeInt(*argv) || (lvls = GetAInt(*argv)) < -1) {
- lvls = 0;
- post("%s - %s: invalid level specification - set to %i",thisName(),GetString(tag),lvls);
- }
- --argc,++argv;
- }
-
- if(argc)
- post("%s - %s: superfluous arguments ignored",thisName(),GetString(tag));
-
- Atoms svdir(curdir);
- if(fromroot) curdir.Clear();
-
- AtomList l;
- int cnt = getrec(tag,lvls,-1,false,get_print,l);
- post("");
-
- curdir = svdir;
-}
-
-
-void pool::paste(const t_symbol *tag,int argc,const t_atom *argv,bool repl)
-{
- if(clip) {
- bool mkdir = true;
- int depth = -1;
-
- if(argc >= 1) {
- if(CanbeInt(argv[0])) depth = GetAInt(argv[1]);
- else
- post("%s - %s: invalid depth argument - set to -1",thisName(),GetString(tag));
-
- if(argc >= 2) {
- if(CanbeBool(argv[1])) mkdir = GetABool(argv[1]);
- else
- post("%s - %s: invalid mkdir argument - set to true",thisName(),GetString(tag));
-
- if(argc > 2) post("%s - %s: superfluous arguments ignored",thisName(),GetString(tag));
- }
- }
-
- pl->Paste(curdir,clip,depth,repl,mkdir);
- }
- else
- post("%s - %s: clipboard is empty",thisName(),GetString(tag));
-
- echodir();
-}
-
-
-void pool::m_clrclip()
-{
- if(clip) { delete clip; clip = NULL; }
-}
-
-
-void pool::copy(const t_symbol *tag,int argc,const t_atom *argv,bool cut)
-{
- if(!argc || !KeyChk(argv[0]))
- post("%s - %s: invalid key",thisName(),GetString(tag));
- else {
- if(argc > 1)
- post("%s - %s: superfluous arguments ignored",thisName(),GetString(tag));
-
- m_clrclip();
- clip = pl->Copy(curdir,argv[0],cut);
-
- if(!clip)
- post("%s - %s: Copying into clipboard failed",thisName(),GetString(tag));
- }
-
- echodir();
-}
-
-
-void pool::copyall(const t_symbol *tag,bool cut,int depth)
-{
- m_clrclip();
- clip = pl->CopyAll(curdir,depth,cut);
-
- if(!clip)
- post("%s - %s: Copying into clipboard failed",thisName(),GetString(tag));
-
- echodir();
-}
-
-
-void pool::copyrec(const t_symbol *tag,int argc,const t_atom *argv,bool cut)
-{
- int lvls = -1;
- if(argc > 0) {
- if(CanbeInt(argv[0])) {
- if(argc > 1)
- post("%s - %s: superfluous arguments ignored",thisName(),GetString(tag));
- lvls = GetAInt(argv[0]);
- }
- else
- post("%s - %s: invalid level specification - set to infinite",thisName(),GetString(tag));
- }
-
- copyall(tag,cut,lvls);
-}
-
-void pool::load(int argc,const t_atom *argv,bool xml)
-{
- const char *flnm = NULL;
- if(argc > 0) {
- if(argc > 1) post("%s - %s: superfluous arguments ignored",thisName(),GetString(thisTag()));
- if(IsString(argv[0])) flnm = GetString(argv[0]);
- }
-
- bool ok = false;
- if(!flnm)
- post("%s - %s: no filename given",thisName(),GetString(thisTag()));
- else {
- string file(MakeFilename(flnm));
- ok = xml?pl->LoadXML(file.c_str()):pl->Load(file.c_str());
- if(!ok)
- post("%s - %s: error loading data",thisName(),GetString(thisTag()));
- }
-
- t_atom at; SetBool(at,ok);
- ToOutAnything(GetOutAttr(),thisTag(),1,&at);
-
- echodir();
-}
-
-void pool::save(int argc,const t_atom *argv,bool xml)
-{
- const char *flnm = NULL;
- if(argc > 0) {
- if(argc > 1) post("%s - %s: superfluous arguments ignored",thisName(),GetString(thisTag()));
- if(IsString(argv[0])) flnm = GetString(argv[0]);
- }
-
- bool ok = false;
- if(!flnm)
- post("%s - %s: no filename given",thisName(),GetString(thisTag()));
- else {
- string file(MakeFilename(flnm));
- ok = xml?pl->SaveXML(file.c_str()):pl->Save(file.c_str());
- if(!ok)
- post("%s - %s: error saving data",thisName(),GetString(thisTag()));
- }
-
- t_atom at; SetBool(at,ok);
- ToOutAnything(GetOutAttr(),thisTag(),1,&at);
-
- echodir();
-}
-
-void pool::lddir(int argc,const t_atom *argv,bool xml)
-{
- const char *flnm = NULL;
- if(argc > 0) {
- if(argc > 1) post("%s - %s: superfluous arguments ignored",thisName(),GetString(thisTag()));
- if(IsString(argv[0])) flnm = GetString(argv[0]);
- }
-
- bool ok = false;
- if(!flnm)
- post("%s - %s: invalid filename",thisName(),GetString(thisTag()));
- else {
- string file(MakeFilename(flnm));
- ok = xml?pl->LdDirXML(curdir,file.c_str(),0):pl->LdDir(curdir,file.c_str(),0);
- if(!ok)
- post("%s - %s: directory couldn't be loaded",thisName(),GetString(thisTag()));
- }
-
- t_atom at; SetBool(at,ok);
- ToOutAnything(GetOutAttr(),thisTag(),1,&at);
-
- echodir();
-}
-
-void pool::ldrec(int argc,const t_atom *argv,bool xml)
-{
- const char *flnm = NULL;
- int depth = -1;
- bool mkdir = true;
- if(argc >= 1) {
- if(IsString(argv[0])) flnm = GetString(argv[0]);
-
- if(argc >= 2) {
- if(CanbeInt(argv[1])) depth = GetAInt(argv[1]);
- else
- post("%s - %s: invalid depth argument - set to -1",thisName(),GetString(thisTag()));
-
- if(argc >= 3) {
- if(CanbeBool(argv[2])) mkdir = GetABool(argv[2]);
- else
- post("%s - %s: invalid mkdir argument - set to true",thisName(),GetString(thisTag()));
-
- if(argc > 3) post("%s - %s: superfluous arguments ignored",thisName(),GetString(thisTag()));
- }
- }
- }
-
- bool ok = false;
- if(!flnm)
- post("%s - %s: invalid filename",thisName(),GetString(thisTag()));
- else {
- string file(MakeFilename(flnm));
- ok = xml?pl->LdDirXML(curdir,file.c_str(),depth,mkdir):pl->LdDir(curdir,file.c_str(),depth,mkdir);
- if(!ok)
- post("%s - %s: directory couldn't be saved",thisName(),GetString(thisTag()));
- }
-
- t_atom at; SetBool(at,ok);
- ToOutAnything(GetOutAttr(),thisTag(),1,&at);
-
- echodir();
-}
-
-void pool::svdir(int argc,const t_atom *argv,bool xml)
-{
- const char *flnm = NULL;
- if(argc > 0) {
- if(argc > 1) post("%s - %s: superfluous arguments ignored",thisName(),GetString(thisTag()));
- if(IsString(argv[0])) flnm = GetString(argv[0]);
- }
-
- bool ok = false;
- if(!flnm)
- post("%s - %s: invalid filename",thisName(),GetString(thisTag()));
- else {
- string file(MakeFilename(flnm));
- ok = xml?pl->SvDirXML(curdir,file.c_str(),0,absdir):pl->SvDir(curdir,file.c_str(),0,absdir);
- if(!ok)
- post("%s - %s: directory couldn't be saved",thisName(),GetString(thisTag()));
- }
-
- t_atom at; SetBool(at,ok);
- ToOutAnything(GetOutAttr(),thisTag(),1,&at);
-
- echodir();
-}
-
-void pool::svrec(int argc,const t_atom *argv,bool xml)
-{
- const char *flnm = NULL;
- if(argc > 0) {
- if(argc > 1) post("%s - %s: superfluous arguments ignored",thisName(),GetString(thisTag()));
- if(IsString(argv[0])) flnm = GetString(argv[0]);
- }
-
- bool ok = false;
- if(!flnm)
- post("%s - %s: invalid filename",thisName(),GetString(thisTag()));
- else {
- string file(MakeFilename(flnm));
- ok = xml?pl->SvDirXML(curdir,file.c_str(),-1,absdir):pl->SvDir(curdir,file.c_str(),-1,absdir);
- if(!ok)
- post("%s - %s: directory couldn't be saved",thisName(),GetString(thisTag()));
- }
-
- t_atom at; SetBool(at,ok);
- ToOutAnything(GetOutAttr(),thisTag(),1,&at);
-
- echodir();
-}
-
-
-
-bool pool::KeyChk(const t_atom &a)
-{
- return IsSymbol(a) || IsFloat(a) || IsInt(a);
-}
-
-bool pool::ValChk(int argc,const t_atom *argv)
-{
- for(int i = 0; i < argc; ++i) {
- const t_atom &a = argv[i];
- if(!IsSymbol(a) && !IsFloat(a) && !IsInt(a)) return false;
- }
- return true;
-}
-
-void pool::ToOutAtom(int ix,const t_atom &a)
-{
- if(IsSymbol(a))
- ToSysSymbol(ix,GetSymbol(a));
- else if(IsFloat(a))
- ToSysFloat(ix,GetFloat(a));
- else if(IsInt(a))
- ToSysInt(ix,GetInt(a));
- else
- post("%s - %s type not supported!",thisName(),GetString(thisTag()));
-}
-
-
-
-pooldata *pool::GetPool(const t_symbol *s)
-{
- PoolMap::iterator it = poolmap.find(s);
- pooldata *p;
- if(it != poolmap.end())
- p = it->second;
- else
- poolmap[s] = p = new pooldata(s);
- p->Push();
- return p;
-}
-
-void pool::RmvPool(pooldata *p)
-{
- FLEXT_ASSERT(p->sym);
- PoolMap::iterator it = poolmap.find(p->sym);
- FLEXT_ASSERT(it != poolmap.end());
- FLEXT_ASSERT(p == it->second);
- if(!p->Pop()) {
- poolmap.erase(it);
- delete p;
- }
-}
-
-string pool::MakeFilename(const char *fn) const
-{
-#if FLEXT_SYS == FLEXT_SYS_PD
- // / and \ must not be mixed!
- // (char *) type casts for BorlandC++
- char *sl = strchr((char *)fn,'/');
- if(!sl) sl = strchr((char *)fn,'\\');
- if(!sl || (sl != fn
-#if FLEXT_OS == FLEXT_OS_WIN
- && sl[-1] != ':' // look for drive specification with ":/" or ":\\"
-#endif
- )) {
- // prepend absolute canvas path if filename has no absolute path
- const char *p = GetString(canvas_getdir(thisCanvas()));
- return string(p)+'/'+fn;
- }
- else
- return fn;
-#else
-#pragma message("Relative file paths not implemented")
- return fn;
-#endif
-}
diff --git a/externals/grill/pool/source/pool.cpp b/externals/grill/pool/source/pool.cpp
deleted file mode 100644
index 23e8517f..00000000
--- a/externals/grill/pool/source/pool.cpp
+++ /dev/null
@@ -1,1216 +0,0 @@
-/*
-pool - hierarchical storage object for PD and Max/MSP
-
-Copyright (c) 2002-2008 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-$LastChangedRevision: 26 $
-$LastChangedDate: 2008-01-03 16:14:29 +0100 (Thu, 03 Jan 2008) $
-$LastChangedBy: thomas $
-*/
-
-#include "pool.h"
-#include <string.h>
-#include <ctype.h>
-#include <stdlib.h>
-#include <fstream>
-#include <vector>
-
-#if FLEXT_OS == FLEXT_OS_WIN
-#include <windows.h> // for charset conversion functions
-#elif FLEXT_OS == FLEXT_OS_MAC
-#include <Carbon/Carbon.h>
-#else
-static bool WCStoUTF8(char *sdst,const wchar_t *src,int dstlen)
-{
- unsigned char *dst = (unsigned char *)sdst;
- unsigned char *max = dst+dstlen;
- for(;;) {
- wchar_t ud = *(src++);
- if(ud < 128) {
- if(dst+1 >= max) return false;
- *(dst++) = (unsigned char)ud;
- }
- else if(ud < 2048) {
- if(dst+2 >= max) return false;
- *(dst++) = 192+(unsigned char)(ud/64);
- *(dst++) = 128+(unsigned char)(ud%64);
- }
- else if(ud < 65535) {
- if(dst+3 >= max) return false;
- *(dst++) = 224+(unsigned char)(ud/4096);
- *(dst++) = 128+(unsigned char)((ud/64)%64);
- *(dst++) = 128+(unsigned char)(ud%64);
- }
- else if(ud < 2097151) {
- if(dst+4 >= max) return false;
- *(dst++) = 240+(unsigned char)(ud/262144);
- *(dst++) = 128+(unsigned char)((ud/4096)%64);
- *(dst++) = 128+(unsigned char)((ud/64)%64);
- *(dst++) = 128+(unsigned char)(ud%64);
- }
- else if(ud < 67108863) {
- if(dst+5 >= max) return false;
- *(dst++) = 248+(unsigned char)(ud/16777216);
- *(dst++) = 128+(unsigned char)((ud/262144)%64);
- *(dst++) = 128+(unsigned char)((ud/4096)%64);
- *(dst++) = 128+(unsigned char)((ud/64)%64);
- *(dst++) = 128+(unsigned char)(ud%64);
- }
- else {
- if(dst+6 >= max) return false;
- *(dst++) = 252+(unsigned char)(ud/1073741824);
- *(dst++) = 128+(unsigned char)((ud/16777216)%64);
- *(dst++) = 128+(unsigned char)((ud/262144)%64);
- *(dst++) = 128+(unsigned char)((ud/4096)%64);
- *(dst++) = 128+(unsigned char)((ud/64)%64);
- *(dst++) = 128+(unsigned char)(ud%64);
- }
- if(!ud) break;
- }
- return true;
-}
-
-static bool UTF8toWCS(wchar_t *dst,const char *ssrc,int dstlen)
-{
- const unsigned char *src = (const unsigned char *)ssrc;
- wchar_t *max = dst+dstlen;
- for(;;) {
- if(*src < 128) {
- *dst = *(src++);
- if(!*dst) break;
- }
- else if(*src < 224) {
- *dst = wchar_t(src[0]-192)*64+wchar_t(src[1]-128);
- src += 2;
- }
- else if(*src < 240) {
- *dst = wchar_t(src[0]-224)*4096+wchar_t(src[1]-128)*64+wchar_t(src[2]-128);
- src += 3;
- }
- else if(*src < 248) {
- *dst = wchar_t(src[0]-240)*262144+wchar_t(src[1]-128)*4096+wchar_t(src[2]-128)*64+wchar_t(src[3]-128);
- src += 4;
- }
- else if(*src < 252) {
- *dst = wchar_t(src[0]-248)*16777216+wchar_t(src[1]-128)*262144+wchar_t(src[2]-128)*4096+wchar_t(src[3]-128)*64+wchar_t(src[4]-128);
- src += 5;
- }
- else if(*src < 254) {
- *dst = wchar_t(src[0]-252)*1073741824+wchar_t(src[1]-128)*16777216+wchar_t(src[2]-128)*262144+wchar_t(src[3]-128)*4096+wchar_t(src[4]-128)*64+wchar_t(src[5]-128);
- src += 6;
- }
- else
- // invalid string
- return false;
-
- if(++dst >= max) return false;
- }
- return true;
-}
-
-#endif
-
-using namespace std;
-
-
-
-inline int compare(int a,int b) { return a == b?0:(a < b?-1:1); }
-inline int compare(float a,float b) { return a == b?0:(a < b?-1:1); }
-
-static int compare(const t_symbol *a,const t_symbol *b)
-{
- if(a == b)
- return 0;
- else
- return strcmp(flext::GetString(a),flext::GetString(b));
-}
-
-static int compare(const t_atom &a,const t_atom &b)
-{
- if(flext::GetType(a) == flext::GetType(b)) {
- switch(flext::GetType(a)) {
- case A_FLOAT:
- return compare(flext::GetFloat(a),flext::GetFloat(b));
-#if FLEXT_SYS == FLEXT_SYS_MAX
- case A_LONG:
- return compare(flext::GetInt(a),flext::GetInt(b));
-#endif
- case A_SYMBOL:
- return compare(flext::GetSymbol(a),flext::GetSymbol(b));
-#if FLEXT_SYS == FLEXT_SYS_PD
- case A_POINTER:
- return flext::GetPointer(a) == flext::GetPointer(b)?0:(flext::GetPointer(a) < flext::GetPointer(b)?-1:1);
-#endif
- default:
- FLEXT_LOG("pool - atom comparison: type not handled");
- return -1;
- }
- }
- else
- return flext::GetType(a) < flext::GetType(b)?-1:1;
-}
-
-
-poolval::poolval(const t_atom &k,AtomList *d):
- data(d),nxt(NULL)
-{
- SetAtom(key,k);
-}
-
-poolval::~poolval()
-{
- if(data) delete data;
-
- FLEXT_ASSERT(nxt == NULL);
-}
-
-poolval &poolval::Set(AtomList *d)
-{
- if(data) delete data;
- data = d;
- return *this;
-}
-
-poolval *poolval::Dup() const
-{
- return new poolval(key,data?new Atoms(*data):NULL);
-}
-
-
-pooldir::pooldir(const t_atom &d,pooldir *p,int vcnt,int dcnt):
- parent(p),nxt(NULL),vals(NULL),dirs(NULL),
- vbits(Int2Bits(vcnt)),dbits(Int2Bits(dcnt)),
- vsize(1<<vbits),dsize(1<<dbits)
-{
- Reset();
- CopyAtom(&dir,&d);
-}
-
-pooldir::~pooldir()
-{
- Reset(false);
-
- FLEXT_ASSERT(nxt == NULL);
-}
-
-void pooldir::Clear(bool rec,bool dironly)
-{
- if(rec && dirs) {
- for(int i = 0; i < dsize; ++i) {
- pooldir *d = dirs[i].d,*d1;
- if(d) {
- do {
- d1 = d->nxt;
- d->nxt = NULL;
- delete d;
- } while((d = d1) != NULL);
- dirs[i].d = NULL;
- dirs[i].cnt = 0;
- }
- }
- }
- if(!dironly && vals) {
- for(int i = 0; i < vsize; ++i) {
- poolval *v = vals[i].v,*v1;
- if(v) {
- do {
- v1 = v->nxt;
- v->nxt = NULL;
- delete v;
- } while((v = v1) != NULL);
- vals[i].v = NULL;
- vals[i].cnt = 0;
- }
- }
- }
-}
-
-void pooldir::Reset(bool realloc)
-{
- Clear(true,false);
-
- if(dirs) delete[] dirs;
- if(vals) delete[] vals;
-
- if(realloc) {
- dirs = new direntry[dsize];
- ZeroMem(dirs,dsize*sizeof *dirs);
- vals = new valentry[vsize];
- ZeroMem(vals,vsize*sizeof *vals);
- }
- else
- dirs = NULL,vals = NULL;
-}
-
-pooldir *pooldir::AddDir(int argc,const t_atom *argv,int vcnt,int dcnt)
-{
- if(!argc) return this;
-
- int c = 1,dix = DIdx(argv[0]);
- pooldir *prv = NULL,*ix = dirs[dix].d;
- for(; ix; prv = ix,ix = ix->nxt) {
- c = compare(argv[0],ix->dir);
- if(c <= 0) break;
- }
-
- if(c || !ix) {
- pooldir *nd = new pooldir(argv[0],this,vcnt,dcnt);
- nd->nxt = ix;
-
- if(prv) prv->nxt = nd;
- else dirs[dix].d = nd;
- dirs[dix].cnt++;
- ix = nd;
- }
-
- return ix->AddDir(argc-1,argv+1);
-}
-
-pooldir *pooldir::GetDir(int argc,const t_atom *argv,bool rmv)
-{
- if(!argc) return this;
-
- int c = 1,dix = DIdx(argv[0]);
- pooldir *prv = NULL,*ix = dirs[dix].d;
- for(; ix; prv = ix,ix = ix->nxt) {
- c = compare(argv[0],ix->dir);
- if(c <= 0) break;
- }
-
- if(c || !ix)
- return NULL;
- else {
- if(argc > 1)
- return ix->GetDir(argc-1,argv+1,rmv);
- else if(rmv) {
- pooldir *nd = ix->nxt;
- if(prv) prv->nxt = nd;
- else dirs[dix].d = nd;
- dirs[dix].cnt--;
- ix->nxt = NULL;
- return ix;
- }
- else
- return ix;
- }
-}
-
-bool pooldir::DelDir(int argc,const t_atom *argv)
-{
- pooldir *pd = GetDir(argc,argv,true);
- if(pd && pd != this) {
- delete pd;
- return true;
- }
- else
- return false;
-}
-
-void pooldir::SetVal(const t_atom &key,AtomList *data,bool over)
-{
- int c = 1,vix = VIdx(key);
- poolval *prv = NULL,*ix = vals[vix].v;
- for(; ix; prv = ix,ix = ix->nxt) {
- c = compare(key,ix->key);
- if(c <= 0) break;
- }
-
- if(c || !ix) {
- // no existing data found
-
- if(data) {
- poolval *nv = new poolval(key,data);
- nv->nxt = ix;
-
- if(prv) prv->nxt = nv;
- else vals[vix].v = nv;
- vals[vix].cnt++;
- }
- }
- else if(over) {
- // data exists... only set if overwriting enabled
-
- if(data)
- ix->Set(data);
- else {
- // delete key
-
- poolval *nv = ix->nxt;
- if(prv) prv->nxt = nv;
- else vals[vix].v = nv;
- vals[vix].cnt--;
- ix->nxt = NULL;
- delete ix;
- }
- }
-}
-
-bool pooldir::SetVali(int rix,AtomList *data)
-{
- poolval *prv = NULL,*ix = NULL;
- int vix;
- for(vix = 0; vix < vsize; ++vix)
- if(rix > vals[vix].cnt) rix -= vals[vix].cnt;
- else {
- ix = vals[vix].v;
- for(; ix && rix; prv = ix,ix = ix->nxt) --rix;
- if(ix && !rix) break;
- }
-
- if(ix) {
- // data exists... overwrite it
-
- if(data)
- ix->Set(data);
- else {
- // delete key
-
- poolval *nv = ix->nxt;
- if(prv) prv->nxt = nv;
- else vals[vix].v = nv;
- vals[vix].cnt--;
- ix->nxt = NULL;
- delete ix;
- }
- return true;
- }
- else
- return false;
-}
-
-poolval *pooldir::RefVal(const t_atom &key)
-{
- int c = 1,vix = VIdx(key);
- poolval *ix = vals[vix].v;
- for(; ix; ix = ix->nxt) {
- c = compare(key,ix->key);
- if(c <= 0) break;
- }
-
- return c || !ix?NULL:ix;
-}
-
-poolval *pooldir::RefVali(int rix)
-{
- for(int vix = 0; vix < vsize; ++vix)
- if(rix > vals[vix].cnt) rix -= vals[vix].cnt;
- else {
- poolval *ix = vals[vix].v;
- for(; ix && rix; ix = ix->nxt) --rix;
- if(ix && !rix) return ix;
- }
- return NULL;
-}
-
-flext::AtomList *pooldir::PeekVal(const t_atom &key)
-{
- poolval *ix = RefVal(key);
- return ix?ix->data:NULL;
-}
-
-flext::AtomList *pooldir::GetVal(const t_atom &key,bool cut)
-{
- int c = 1,vix = VIdx(key);
- poolval *prv = NULL,*ix = vals[vix].v;
- for(; ix; prv = ix,ix = ix->nxt) {
- c = compare(key,ix->key);
- if(c <= 0) break;
- }
-
- if(c || !ix)
- return NULL;
- else {
- AtomList *ret;
- if(cut) {
- poolval *nv = ix->nxt;
- if(prv) prv->nxt = nv;
- else vals[vix].v = nv;
- vals[vix].cnt--;
- ix->nxt = NULL;
- ret = ix->data; ix->data = NULL;
- delete ix;
- }
- else
- ret = new Atoms(*ix->data);
- return ret;
- }
-}
-
-int pooldir::CntAll() const
-{
- int cnt = 0;
- for(int vix = 0; vix < vsize; ++vix) cnt += vals[vix].cnt;
- return cnt;
-}
-
-int pooldir::PrintAll(char *buf,int len) const
-{
- int offs = strlen(buf);
-
- int cnt = 0;
- for(int vix = 0; vix < vsize; ++vix) {
- poolval *ix = vals[vix].v;
- for(int i = 0; ix; ++i,ix = ix->nxt) {
- PrintAtom(ix->key,buf+offs,len-offs);
- strcat(buf+offs," , ");
- int l = strlen(buf+offs)+offs;
- ix->data->Print(buf+l,len-l);
- post(buf);
- }
- cnt += vals[vix].cnt;
- }
-
- buf[offs] = 0;
-
- return cnt;
-}
-
-int pooldir::GetKeys(AtomList &keys)
-{
- int cnt = CntAll();
- keys(cnt);
-
- for(int vix = 0; vix < vsize; ++vix) {
- poolval *ix = vals[vix].v;
- for(int i = 0; ix; ++i,ix = ix->nxt)
- SetAtom(keys[i],ix->key);
- }
- return cnt;
-}
-
-int pooldir::GetAll(t_atom *&keys,Atoms *&lst,bool cut)
-{
- int cnt = CntAll();
- keys = new t_atom[cnt];
- lst = new Atoms[cnt];
-
- for(int i = 0,vix = 0; vix < vsize; ++vix) {
- poolval *ix = vals[vix].v;
- for(; ix; ++i) {
- SetAtom(keys[i],ix->key);
- lst[i] = *ix->data;
-
- if(cut) {
- poolval *t = ix;
- vals[vix].v = ix = ix->nxt;
- vals[vix].cnt--;
- t->nxt = NULL; delete t;
- }
- else
- ix = ix->nxt;
- }
- }
- return cnt;
-}
-
-
-int pooldir::CntSub() const
-{
- int cnt = 0;
- for(int dix = 0; dix < dsize; ++dix) cnt += dirs[dix].cnt;
- return cnt;
-}
-
-
-int pooldir::GetSub(const t_atom **&lst)
-{
- const int cnt = CntSub();
- lst = new const t_atom *[cnt];
- for(int i = 0,dix = 0; i < cnt; ++dix) {
- pooldir *ix = dirs[dix].d;
- for(; ix; ix = ix->nxt) lst[i++] = &ix->dir;
- }
- return cnt;
-}
-
-
-bool pooldir::Paste(const pooldir *p,int depth,bool repl,bool mkdir)
-{
- bool ok = true;
-
- for(int vi = 0; vi < p->vsize; ++vi) {
- for(poolval *ix = p->vals[vi].v; ix; ix = ix->nxt) {
- SetVal(ix->key,new Atoms(*ix->data),repl);
- }
- }
-
- if(ok && depth) {
- for(int di = 0; di < p->dsize; ++di) {
- for(pooldir *dix = p->dirs[di].d; ok && dix; dix = dix->nxt) {
- pooldir *ndir = mkdir?AddDir(1,&dix->dir):GetDir(1,&dix->dir);
- if(ndir) {
- ok = ndir->Paste(dix,depth > 0?depth-1:depth,repl,mkdir);
- }
- }
- }
- }
-
- return ok;
-}
-
-bool pooldir::Copy(pooldir *p,int depth,bool cut)
-{
- bool ok = true;
-
- if(cut) {
- for(int vi = 0; vi < vsize; ++vi) {
- for(poolval *ix = vals[vi].v; ix; ix = ix->nxt)
- p->SetVal(ix->key,ix->data);
- vals[vi].cnt = 0;
- vals[vi].v = NULL;
- }
- }
- else {
- for(int vi = 0; vi < vsize; ++vi) {
- for(poolval *ix = vals[vi].v; ix; ix = ix->nxt) {
- p->SetVal(ix->key,new Atoms(*ix->data));
- }
- }
- }
-
- if(ok && depth) {
- for(int di = 0; di < dsize; ++di) {
- for(pooldir *dix = dirs[di].d; ok && dix; dix = dix->nxt) {
- pooldir *ndir = p->AddDir(1,&dix->dir);
- if(ndir)
- ok = dix->Copy(ndir,depth > 0?depth-1:depth,cut);
- else
- ok = false;
- }
- }
- }
-
- return ok;
-}
-
-static bool _isspace(char c) { return c > 0 && isspace(c); }
-
-static const char *ReadAtom(const char *c,t_atom &a,bool utf8)
-{
- // skip leading whitespace (NON-ASCII character are < 0)
- while(*c && _isspace(*c)) ++c;
- if(!*c) return NULL;
-
- char tmp[1024];
- char *m = tmp; // write position
-
- bool issymbol;
- if(*c == '"') {
- issymbol = true;
- ++c;
- }
- else
- issymbol = false;
-
- // go to next whitespace
- for(bool escaped = false;; ++c)
- if(*c == '\\') {
- if(escaped) {
- *m++ = *c;
- escaped = false;
- }
- else
- escaped = true;
- }
- else if(*c == '"' && issymbol && !escaped) {
- // end of string
- ++c;
- FLEXT_ASSERT(!*c || _isspace(*c));
- *m = 0;
- break;
- }
- else if(!*c || (_isspace(*c) && !escaped)) {
- *m = 0;
- break;
- }
- else {
- *m++ = *c;
- escaped = false;
- }
-
- // save character and set delimiter
-
- float fres;
- // first try float
-#if 0
- if(!issymbol && sscanf(tmp,"%f",&fres) == 1) {
-#else
- char *endp;
- // see if it's a float - thanks to Frank Barknecht
- fres = (float)strtod(tmp,&endp);
- if(!issymbol && !*endp && endp != tmp) {
-#endif
- int ires = (int)fres; // try a cast
- if(fres == ires)
- flext::SetInt(a,ires);
- else
- flext::SetFloat(a,fres);
- }
- // no, it's a symbol
- else {
- const char *c;
- if(utf8) {
-#if FLEXT_OS == FLEXT_OS_WIN
- wchar_t wtmp[1024];
- int err = MultiByteToWideChar(CP_UTF8,0,tmp,strlen(tmp),wtmp,1024);
- if(!err) return NULL;
- err = WideCharToMultiByte(CP_ACP,0,wtmp,err,tmp,1024,NULL,FALSE);
- if(!err) return NULL;
- tmp[err] = 0;
- c = tmp;
-#elif FLEXT_OS == FLEXT_OS_MAC
- char ctmp[1024];
-
- // is the output always MacRoman?
- TextEncoding inconv = CreateTextEncoding(kTextEncodingUnicodeDefault,kTextEncodingDefaultVariant,kUnicodeUTF8Format);
- TextEncoding outconv = CreateTextEncoding(kTextEncodingMacRoman,kTextEncodingDefaultVariant,kTextEncodingDefaultFormat);
-
- TECObjectRef converter;
- OSStatus status = TECCreateConverter(&converter,inconv,outconv);
- if(status) return NULL;
-
- ByteCount inlen,outlen;
- status = TECConvertText(
- converter,
- (ConstTextPtr)tmp,strlen(tmp),&inlen,
- (TextPtr)ctmp,sizeof(ctmp),&outlen
- );
- ctmp[outlen] = 0;
-
- TECDisposeConverter(converter);
- c = ctmp;
- if(status) return NULL;
-#else
- wchar_t wtmp[1024];
- size_t len = mbstowcs(wtmp,tmp,1024);
- if(len < 0) return false;
- if(!WCStoUTF8(tmp,wtmp,sizeof(tmp))) return NULL;
- c = tmp;
-#endif
- }
- else
- c = tmp;
- flext::SetString(a,c);
- }
-
- return c;
-}
-
-static bool ParseAtoms(const char *tmp,flext::AtomList &l,bool utf8)
-{
- FLEXT_ASSERT(tmp);
- vector<t_atom> atoms;
- while(*tmp) {
- t_atom at;
- tmp = ReadAtom(tmp,at,utf8);
- if(!tmp) break;
- atoms.push_back(at);
- }
- l(atoms.size(),&atoms[0]);
- return true;
-}
-
-static bool ParseAtoms(string &s,flext::AtomList &l,bool utf8)
-{
- return ParseAtoms((char *)s.c_str(),l,utf8);
-}
-
-static bool ReadAtoms(istream &is,flext::AtomList &l,char del,bool utf8)
-{
- vector<char> tmp;
- for(;;) {
- char c = is.get();
- if(is.eof() || c == del) break;
- tmp.push_back(c);
- }
- tmp.push_back(0); // end-of-string marker
-
- return is.good() && ParseAtoms(&tmp[0],l,utf8);
-}
-
-static bool WriteAtom(ostream &os,const t_atom &a,bool utf8)
-{
- if(flext::IsFloat(a))
- os << flext::GetFloat(a);
- else if(flext::IsInt(a))
- os << flext::GetInt(a);
- else if(flext::IsSymbol(a)) {
- const char *c = flext::GetString(a);
- if(utf8) {
-#if FLEXT_OS == FLEXT_OS_WIN
- char tmp[1024];
- wchar_t wtmp[1024];
- int err = MultiByteToWideChar(CP_ACP,0,c,strlen(c),wtmp,1024);
- if(!err) return false;
- err = WideCharToMultiByte(CP_UTF8,0,wtmp,err,tmp,1024,NULL,FALSE);
- if(!err) return false;
- tmp[err] = 0;
- c = tmp;
-#elif FLEXT_OS == FLEXT_OS_MAC
- char tmp[1024];
-
- // is the input always MacRoman?
- TextEncoding inconv = CreateTextEncoding(kTextEncodingMacRoman,kTextEncodingDefaultVariant,kTextEncodingDefaultFormat);
- TextEncoding outconv = CreateTextEncoding(kTextEncodingUnicodeDefault,kTextEncodingDefaultVariant,kUnicodeUTF8Format);
-
- TECObjectRef converter;
- OSStatus status = TECCreateConverter(&converter,inconv,outconv);
- if(status) return false;
-
- ByteCount inlen,outlen;
- status = TECConvertText(
- converter,
- (ConstTextPtr)c,strlen(c),&inlen,
- (TextPtr)tmp,sizeof(tmp),&outlen
- );
- tmp[outlen] = 0;
-
- TECDisposeConverter(converter);
-
- if(status) return false;
- c = tmp;
-#else
- char tmp[1024];
- wchar_t wtmp[1024];
- if(!UTF8toWCS(wtmp,c,1024)) return false;
- size_t len = wcstombs(tmp,wtmp,sizeof(tmp));
- if(len < 0) return false;
- c = tmp;
-#endif
- }
-
- os << '"';
- for(; *c; ++c) {
- // escape some special characters
- if(_isspace(*c) || *c == '\\' || *c == ',' || *c == '"')
- os << '\\';
- os << *c;
- }
- os << '"';
- }
- else
- FLEXT_ASSERT(false);
- return true;
-}
-
-static void WriteAtoms(ostream &os,const flext::AtomList &l,bool utf8)
-{
- for(int i = 0; i < l.Count(); ++i) {
- WriteAtom(os,l[i],utf8);
- if(i < l.Count()-1) os << ' ';
- }
-}
-
-bool pooldir::LdDir(istream &is,int depth,bool mkdir)
-{
- for(int i = 1; !is.eof(); ++i) {
- Atoms d,k,*v = new Atoms;
- bool r =
- ReadAtoms(is,d,',',false) &&
- ReadAtoms(is,k,',',false) &&
- ReadAtoms(is,*v,'\n',false);
-
- if(r) {
- if(depth < 0 || d.Count() <= depth) {
- pooldir *nd = mkdir?AddDir(d):GetDir(d);
- if(nd) {
- if(k.Count() == 1) {
- nd->SetVal(k[0],v); v = NULL;
- }
- else if(k.Count() > 1)
- post("pool - file format invalid: key must be a single word");
- }
- #ifdef FLEXT_DEBUG
- else
- post("pool - directory was not found",i);
- #endif
- }
- }
- else if(!is.eof())
- post("pool - format mismatch encountered, skipped line %i",i);
-
- if(v) delete v;
- }
- return true;
-}
-
-bool pooldir::SvDir(ostream &os,int depth,const AtomList &dir)
-{
- int cnt = 0;
- for(int vi = 0; vi < vsize; ++vi) {
- for(poolval *ix = vals[vi].v; ix; ix = ix->nxt) {
- WriteAtoms(os,dir,false);
- os << " , ";
- WriteAtom(os,ix->key,false);
- os << " , ";
- WriteAtoms(os,*ix->data,false);
- os << endl;
- ++cnt;
- }
- }
- if(!cnt) {
- // no key/value pairs present -> force empty directory
- WriteAtoms(os,dir,false);
- os << " , ," << endl;
- }
- if(depth) {
- // save sub-directories
- int nd = depth > 0?depth-1:-1;
- for(int di = 0; di < dsize; ++di) {
- for(pooldir *ix = dirs[di].d; ix; ix = ix->nxt) {
- ix->SvDir(os,nd,Atoms(dir).Append(ix->dir));
- }
- }
- }
- return true;
-}
-
-class xmltag {
-public:
- string tag,attr;
- bool Ok() const { return tag.length() > 0; }
- bool operator ==(const char *t) const { return !tag.compare(t); }
-
- void Clear()
- {
-#if defined(_MSC_VER) && (_MSC_VER < 0x1200)
- // incomplete STL implementation
- tag = ""; attr = "";
-#else
- tag.clear(); attr.clear();
-#endif
- }
-
- enum { t_start,t_end,t_empty } type;
-};
-
-static bool gettag(istream &is,xmltag &tag)
-{
- static const char *commstt = "<!--",*commend = "-->";
-
- for(;;) {
- // eat whitespace
- while(_isspace(is.peek())) is.get();
-
- // no tag begin -> break
- if(is.peek() != '<') break;
- is.get(); // swallow <
-
- char tmp[1024],*t = tmp;
-
- // parse for comment start
- const char *c = commstt;
- while(*++c) {
- if(*c != is.peek()) break;
- *(t++) = is.get();
- }
-
- if(!*c) { // is comment
- char cmp[2] = {0,0}; // set to some unusual initial value
-
- for(int ic = 0; ; ic = (++ic)%2) {
- char c = is.get();
- if(c == '>') {
- // if third character is > then check also the former two
- int i;
- for(i = 0; i < 2 && cmp[(ic+i)%2] == commend[i]; ++i) {}
- if(i == 2) break; // match: comment end found!
- }
- else
- cmp[ic] = c;
- }
- }
- else {
- // parse until > with consideration of "s
- bool intx = false;
- for(;;) {
- *t = is.get();
- if(*t == '"') intx = !intx;
- else if(*t == '>' && !intx) {
- *t = 0;
- break;
- }
- t++;
- }
-
- // look for tag slashes
-
- char *tb = tmp,*te = t-1,*tf;
-
- for(; _isspace(*tb); ++tb) {}
- if(*tb == '/') {
- // slash at the beginning -> end tag
- tag.type = xmltag::t_end;
- for(++tb; _isspace(*tb); ++tb) {}
- }
- else {
- for(; _isspace(*te); --te) {}
- if(*te == '/') {
- // slash at the end -> empty tag
- for(--te; _isspace(*te); --te) {}
- tag.type = xmltag::t_empty;
- }
- else
- // no slash -> begin tag
- tag.type = xmltag::t_start;
- }
-
- // copy tag text without slashes
- for(tf = tb; tf <= te && *tf && !_isspace(*tf); ++tf) {}
- tag.tag.assign(tb,tf-tb);
- while(_isspace(*tf)) ++tf;
- tag.attr.assign(tf,te-tf+1);
-
- return true;
- }
- }
-
- tag.Clear();
- return false;
-}
-
-static void getvalue(istream &is,string &s)
-{
- char tmp[1024],*t = tmp;
- bool intx = false;
- for(;;) {
- char c = is.peek();
- if(c == '"') intx = !intx;
- else if(c == '<' && !intx) break;
- *(t++) = is.get();
- }
- *t = 0;
- s = tmp;
-}
-
-bool pooldir::LdDirXMLRec(istream &is,int depth,bool mkdir,AtomList &d)
-{
- Atoms k,v;
- bool inval = false,inkey = false,indata = false;
- int cntval = 0;
-
- while(!is.eof()) {
- xmltag tag;
- gettag(is,tag);
- if(!tag.Ok()) {
- // look for value
- string s;
- getvalue(is,s);
-
- if(s.length() &&
- (
- (!inval && inkey && d.Count()) || /* dir */
- (inval && (inkey || indata)) /* value */
- )
- ) {
- bool ret = true;
- if(indata) {
- if(v.Count())
- post("pool - XML load: value data already given, ignoring new data");
- else
- ret = ParseAtoms(s,v,true);
- }
- else // inkey
- if(inval) {
- if(k.Count())
- post("pool - XML load, value key already given, ignoring new key");
- else
- ret = ParseAtoms(s,k,true);
- }
- else {
- t_atom &dkey = d[d.Count()-1];
- FLEXT_ASSERT(IsSymbol(dkey));
- const char *ds = GetString(dkey);
- FLEXT_ASSERT(ds);
- if(*ds)
- post("pool - XML load: dir key already given, ignoring new key");
- else
- ReadAtom(s.c_str(),dkey,true);
-
- ret = true;
- }
- if(!ret) post("pool - error interpreting XML value (%s)",s.c_str());
- }
- else
- post("pool - error reading XML data");
- }
- else if(tag == "dir") {
- if(tag.type == xmltag::t_start) {
- // warn if last directory key was not given
- if(d.Count() && GetSymbol(d[d.Count()-1]) == sym__)
- post("pool - XML load: dir key must be given prior to subdirs, ignoring items");
-
- Atoms dnext(d.Count()+1);
- // copy existing dir
- dnext.Set(d.Count(),d.Atoms(),0,false);
- // initialize current dir key as empty
- SetSymbol(dnext[d.Count()],sym__);
-
- // read next level
- LdDirXMLRec(is,depth,mkdir,dnext);
- }
- else if(tag.type == xmltag::t_end) {
- if(!cntval && mkdir) {
- // no values have been found in dir -> make empty dir
- AddDir(d);
- }
-
- // break tag loop
- break;
- }
- }
- else if(tag == "value") {
- if(tag.type == xmltag::t_start) {
- inval = true;
- ++cntval;
- k.Clear(); v.Clear();
- }
- else if(tag.type == xmltag::t_end) {
- // set value after tag closing, but only if level <= depth
- if(depth < 0 || d.Count() <= depth) {
- int fnd;
- for(fnd = d.Count()-1; fnd >= 0; --fnd)
- if(GetSymbol(d[fnd]) == sym__) break;
-
- // look if last dir key has been given
- if(fnd >= 0) {
- if(fnd == d.Count()-1)
- post("pool - XML load: dir key must be given prior to values");
-
- // else: one directory level has been left unintialized, ignore items
- }
- else {
- // only use first word of key
- if(k.Count() == 1) {
- pooldir *nd = mkdir?AddDir(d):GetDir(d);
- if(nd)
- nd->SetVal(k[0],new Atoms(v));
- else
- post("pool - XML load: value key must be exactly one word, value not stored");
- }
- }
- }
- inval = false;
- }
- }
- else if(tag == "key") {
- if(tag.type == xmltag::t_start) {
- inkey = true;
- }
- else if(tag.type == xmltag::t_end) {
- inkey = false;
- }
- }
- else if(tag == "data") {
- if(!inval)
- post("pool - XML tag <data> not within <value>");
-
- if(tag.type == xmltag::t_start) {
- indata = true;
- }
- else if(tag.type == xmltag::t_end) {
- indata = false;
- }
- }
- else if(!d.Count() && tag == "pool" && tag.type == xmltag::t_end) {
- // break tag loop
- break;
- }
-#ifdef FLEXT_DEBUG
- else {
- post("pool - unknown XML tag '%s'",tag.tag.c_str());
- }
-#endif
- }
- return true;
-}
-
-bool pooldir::LdDirXML(istream &is,int depth,bool mkdir)
-{
- while(!is.eof()) {
- xmltag tag;
- if(!gettag(is,tag)) break;
-
- if(tag == "pool") {
- if(tag.type == xmltag::t_start) {
- Atoms empty; // must be a separate definition for gcc
- LdDirXMLRec(is,depth,mkdir,empty);
- }
- else
- post("pool - pool not initialized yet");
- }
- else if(tag == "!DOCTYPE") {
- // ignore
- }
-#ifdef FLEXT_DEBUG
- else {
- post("pool - unknown XML tag '%s'",tag.tag.c_str());
- }
-#endif
- }
- return true;
-}
-
-static void indent(ostream &s,int cnt)
-{
- for(int i = 0; i < cnt; ++i) s << '\t';
-}
-
-bool pooldir::SvDirXML(ostream &os,int depth,const AtomList &dir,int ind)
-{
- int i,lvls = ind?(dir.Count()?1:0):dir.Count();
-
- for(i = 0; i < lvls; ++i) {
- indent(os,ind+i);
- os << "<dir>" << endl;
- indent(os,ind+i+1);
- os << "<key>";
- WriteAtom(os,dir[ind+i],true);
- os << "</key>" << endl;
- }
-
- for(int vi = 0; vi < vsize; ++vi) {
- for(poolval *ix = vals[vi].v; ix; ix = ix->nxt) {
- indent(os,ind+lvls);
- os << "<value><key>";
- WriteAtom(os,ix->key,true);
- os << "</key><data>";
- WriteAtoms(os,*ix->data,true);
- os << "</data></value>" << endl;
- }
- }
-
- if(depth) {
- int nd = depth > 0?depth-1:-1;
- for(int di = 0; di < dsize; ++di) {
- for(pooldir *ix = dirs[di].d; ix; ix = ix->nxt) {
- ix->SvDirXML(os,nd,Atoms(dir).Append(ix->dir),ind+lvls);
- }
- }
- }
-
- for(i = lvls-1; i >= 0; --i) {
- indent(os,ind+i);
- os << "</dir>" << endl;
- }
- return true;
-}
-
-unsigned int pooldir::FoldBits(unsigned long h,int bits)
-{
- if(!bits) return 0;
- const int hmax = (1<<bits)-1;
- unsigned int ret = 0;
- for(unsigned int i = 0; i < sizeof(h)*8; i += bits)
- ret ^= (h>>i)&hmax;
- return ret;
-}
-
-int pooldir::Int2Bits(unsigned long n)
-{
- int b;
- for(b = 0; n; ++b) n >>= 1;
- return b;
-}
diff --git a/externals/grill/pool/source/pool.h b/externals/grill/pool/source/pool.h
deleted file mode 100644
index 3382d843..00000000
--- a/externals/grill/pool/source/pool.h
+++ /dev/null
@@ -1,253 +0,0 @@
-/*
-pool - hierarchical storage object for PD and Max/MSP
-
-Copyright (c) 2002-2008 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-$LastChangedRevision: 26 $
-$LastChangedDate: 2008-01-03 16:14:29 +0100 (Thu, 03 Jan 2008) $
-$LastChangedBy: thomas $
-*/
-
-#ifndef __POOL_H
-#define __POOL_H
-
-#define FLEXT_ATTRIBUTES 1
-
-#include <flext.h>
-
-#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 500)
-#error You need at least flext version 0.5.0
-#endif
-
-#include <iostream>
-
-using namespace std;
-
-
-typedef flext::AtomListStatic<8> Atoms;
-
-
-class poolval:
- public flext
-{
-public:
- poolval(const t_atom &key,AtomList *data);
- ~poolval();
-
- poolval &Set(AtomList *data);
- poolval *Dup() const;
-
- t_atom key;
- AtomList *data;
- poolval *nxt;
-};
-
-class pooldir:
- public flext
-{
-public:
- pooldir(const t_atom &dir,pooldir *parent,int vcnt,int dcnt);
- ~pooldir();
-
- void Clear(bool rec,bool dironly = false);
- void Reset(bool realloc = true);
-
- bool Empty() const { return !dirs && !vals; }
- bool HasDirs() const { return dirs != NULL; }
- bool HasVals() const { return vals != NULL; }
-
- pooldir *GetDir(int argc,const t_atom *argv,bool cut = false);
- pooldir *GetDir(const AtomList &d,bool cut = false) { return GetDir(d.Count(),d.Atoms(),cut); }
- bool DelDir(int argc,const t_atom *argv);
- bool DelDir(const AtomList &d) { return DelDir(d.Count(),d.Atoms()); }
- pooldir *AddDir(int argc,const t_atom *argv,int vcnt = 0,int dcnt = 0);
- pooldir *AddDir(const AtomList &d,int vcnt = 0,int dcnt = 0) { return AddDir(d.Count(),d.Atoms(),vcnt,dcnt); }
-
- void SetVal(const t_atom &key,AtomList *data,bool over = true);
- bool SetVali(int ix,AtomList *data);
- void ClrVal(const t_atom &key) { SetVal(key,NULL); }
- bool ClrVali(int ix) { return SetVali(ix,NULL); }
- AtomList *PeekVal(const t_atom &key);
- AtomList *GetVal(const t_atom &key,bool cut = false);
- int CntAll() const;
- int GetAll(t_atom *&keys,Atoms *&lst,bool cut = false);
- int PrintAll(char *buf,int len) const;
- int GetKeys(AtomList &keys);
- int CntSub() const;
- int GetSub(const t_atom **&dirs);
-
- poolval *RefVal(const t_atom &key);
- poolval *RefVali(int ix);
-
- bool Paste(const pooldir *p,int depth,bool repl,bool mkdir);
- bool Copy(pooldir *p,int depth,bool cur);
-
- bool LdDir(istream &is,int depth,bool mkdir);
- bool LdDirXML(istream &is,int depth,bool mkdir);
- bool SvDir(ostream &os,int depth,const AtomList &dir = AtomList());
- bool SvDirXML(ostream &os,int depth,const AtomList &dir = AtomList(),int ind = 0);
-
- int VSize() const { return vsize; }
- int DSize() const { return dsize; }
-
-protected:
- int VIdx(const t_atom &v) const { return FoldBits(AtomHash(v),vbits); }
- int DIdx(const t_atom &d) const { return FoldBits(AtomHash(d),dbits); }
-
- t_atom dir;
- pooldir *nxt;
-
- pooldir *parent;
- const int vbits,dbits,vsize,dsize;
-
- static unsigned int FoldBits(unsigned long h,int bits);
- static int Int2Bits(unsigned long n);
-
- struct valentry { int cnt; poolval *v; };
- struct direntry { int cnt; pooldir *d; };
-
- valentry *vals;
- direntry *dirs;
-
-private:
- bool LdDirXMLRec(istream &is,int depth,bool mkdir,AtomList &d);
-};
-
-
-class pooldata:
- public flext
-{
-public:
- pooldata(const t_symbol *s = NULL,int vcnt = 0,int dcnt = 0);
- ~pooldata();
-
- bool Private() const { return sym == NULL; }
-
- void Push() { ++refs; }
- bool Pop() { return --refs > 0; }
-
- void Reset() { root.Reset(); }
-
- bool MkDir(const AtomList &d,int vcnt = 0,int dcnt = 0)
- {
- root.AddDir(d,vcnt,dcnt);
- return true;
- }
-
- bool ChkDir(const AtomList &d)
- {
- return root.GetDir(d) != NULL;
- }
-
- bool RmDir(const AtomList &d)
- {
- return root.DelDir(d);
- }
-
- bool Set(const AtomList &d,const t_atom &key,AtomList *data,bool over = true)
- {
- pooldir *pd = root.GetDir(d);
- if(!pd) return false;
- pd->SetVal(key,data,over);
- return true;
- }
-
- bool Seti(const AtomList &d,int ix,AtomList *data)
- {
- pooldir *pd = root.GetDir(d);
- if(!pd) return false;
- pd->SetVali(ix,data);
- return true;
- }
-
- bool Clr(const AtomList &d,const t_atom &key)
- {
- pooldir *pd = root.GetDir(d);
- if(!pd) return false;
- pd->ClrVal(key);
- return true;
- }
-
- bool Clri(const AtomList &d,int ix)
- {
- pooldir *pd = root.GetDir(d);
- if(!pd) return false;
- pd->ClrVali(ix);
- return true;
- }
-
- bool ClrAll(const AtomList &d,bool rec,bool dironly = false)
- {
- pooldir *pd = root.GetDir(d);
- if(!pd) return false;
- pd->Clear(rec,dironly);
- return true;
- }
-
- AtomList *Peek(const AtomList &d,const t_atom &key)
- {
- pooldir *pd = root.GetDir(d);
- return pd?pd->PeekVal(key):NULL;
- }
-
- AtomList *Get(const AtomList &d,const t_atom &key)
- {
- pooldir *pd = root.GetDir(d);
- return pd?pd->GetVal(key):NULL;
- }
-
- poolval *Ref(const AtomList &d,const t_atom &key)
- {
- pooldir *pd = root.GetDir(d);
- return pd?pd->RefVal(key):NULL;
- }
-
- poolval *Refi(const AtomList &d,int ix)
- {
- pooldir *pd = root.GetDir(d);
- return pd?pd->RefVali(ix):NULL;
- }
-
- int CntAll(const AtomList &d)
- {
- pooldir *pd = root.GetDir(d);
- return pd?pd->CntAll():0;
- }
-
- int PrintAll(const AtomList &d);
- int GetAll(const AtomList &d,t_atom *&keys,Atoms *&lst);
-
- int CntSub(const AtomList &d)
- {
- pooldir *pd = root.GetDir(d);
- return pd?pd->CntSub():0;
- }
-
- int GetSub(const AtomList &d,const t_atom **&dirs);
-
- bool Paste(const AtomList &d,const pooldir *clip,int depth = -1,bool repl = true,bool mkdir = true);
- pooldir *Copy(const AtomList &d,const t_atom &key,bool cut);
- pooldir *CopyAll(const AtomList &d,int depth,bool cut);
-
- bool LdDir(const AtomList &d,const char *flnm,int depth,bool mkdir = true);
- bool SvDir(const AtomList &d,const char *flnm,int depth,bool absdir);
- bool Load(const char *flnm) { AtomList l; return LdDir(l,flnm,-1); }
- bool Save(const char *flnm) { AtomList l; return SvDir(l,flnm,-1,true); }
- bool LdDirXML(const AtomList &d,const char *flnm,int depth,bool mkdir = true);
- bool SvDirXML(const AtomList &d,const char *flnm,int depth,bool absdir);
- bool LoadXML(const char *flnm) { AtomList l; return LdDirXML(l,flnm,-1); }
- bool SaveXML(const char *flnm) { AtomList l; return SvDirXML(l,flnm,-1,true); }
-
- int refs;
- const t_symbol *sym;
- pooldata *nxt;
-
- pooldir root;
-
-private:
- static const t_atom nullatom;
-};
-
-#endif
diff --git a/externals/grill/prepend/gpl.txt b/externals/grill/prepend/gpl.txt
deleted file mode 100644
index 5ea29a7d..00000000
--- a/externals/grill/prepend/gpl.txt
+++ /dev/null
@@ -1,346 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) 19yy <name of author>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) 19yy name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Library General
-Public License instead of this License.
-
diff --git a/externals/grill/prepend/license.txt b/externals/grill/prepend/license.txt
deleted file mode 100644
index 7748a30b..00000000
--- a/externals/grill/prepend/license.txt
+++ /dev/null
@@ -1,49 +0,0 @@
-prepend - just like in Max/MSP
-Copyright (C) 2002 Thomas Grill
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-In the official prepend distribution, the GNU General Public License is
-in the file gpl.txt
-
----------------------------------------------------------
-
- OTHER COPYRIGHT NOTICES
-
----------------------------------------------------------
-This package uses the flext C++ layer.
-See its license text below:
-
-
---- flext ----------------------------------------------
-flext - C++ layer for Max/MSP and pd (pure data) externals
-Copyright (C) 2001,2002 Thomas Grill
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-In the official flext distribution, the GNU General Public License is
-in the file gpl.txt
diff --git a/externals/grill/prepend/main.cpp b/externals/grill/prepend/main.cpp
deleted file mode 100644
index 91a9a5ff..00000000
--- a/externals/grill/prepend/main.cpp
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
-
-prepend - just like in MaxMSP
-
-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.
-
-*/
-
-#include <flext.h>
-
-#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 401)
-#error You need at least flext version 0.4.1
-#endif
-
-#define PREPEND_VERSION "0.0.3"
-
-class prepend:
- public flext_base
-{
- FLEXT_HEADER_S(prepend, flext_base, Setup)
-
-public:
- prepend(int argc,t_atom *argv);
-
-protected:
- void m_bang();
- void m_set(int argc,t_atom *argv) { reg[0].Store(NULL,argc,argv); }
- void m_any0(const t_symbol *s,int argc,t_atom *argv) { reg[1].Store(s,argc,argv); m_bang(); }
- void m_any1(const t_symbol *s,int argc,t_atom *argv) { reg[0].Store(s,argc,argv); }
-
- virtual void m_help();
-
-private:
-
- static void Setup(t_class *c);
-
- class reg_t
- {
- public:
- reg_t(): cnt(0),lst(NULL) {}
- ~reg_t() { if(lst) delete[] lst; }
-
- bool Is() const { return cnt && lst; }
- bool IsSimple() const { return !IsSymbol(lst[0]); }
- bool IsList() const { return IsSymbol(lst[0]) && GetSymbol(lst[0]) == &s_list; }
-
- void Store(const t_symbol *s,int argc,t_atom *argv);
- int cnt; t_atom *lst;
- } reg[2];
-
- FLEXT_CALLBACK(m_bang)
- FLEXT_CALLBACK_V(m_set)
- FLEXT_CALLBACK_A(m_any0)
- FLEXT_CALLBACK_A(m_any1)
-};
-
-FLEXT_NEW_V("prepend",prepend)
-
-
-
-prepend::prepend(int argc,t_atom *argv)
-{
- AddInAnything(2);
- AddOutAnything();
-
- m_set(argc,argv);
-}
-
-void prepend::Setup(t_class *c)
-{
- FLEXT_CADDMETHOD_(c,0,"bang",m_bang);
-// FLEXT_CADDMETHOD_(c,0,"set",m_set);
- FLEXT_CADDMETHOD(c,0,m_any0);
- FLEXT_CADDMETHOD(c,1,m_any1);
-}
-
-void prepend::reg_t::Store(const t_symbol *s,int argc,t_atom *argv)
-{
- if(lst) delete[] lst; cnt = 0;
- lst = new t_atom[argc+1];
-
- if(s && s != &s_float) SetSymbol(lst[cnt++],s);
- else if(argc > 0 && !IsSymbol(argv[0])) SetSymbol(lst[cnt++],&s_list);
-
- for(int i = 0; i < argc; ++i,++cnt) lst[cnt] = argv[i];
-}
-
-void prepend::m_bang()
-{
- t_atom *ret = new t_atom[reg[0].cnt+reg[1].cnt+1];
- int i,rcnt = 0;
-
- if(reg[0].Is()) {
- if(reg[0].IsSimple()) SetSymbol(ret[rcnt++],&s_list);
- for(i = reg[0].IsList()?1:0; i < reg[0].cnt; ++i) ret[rcnt++] = reg[0].lst[i];
- }
- else
- SetSymbol(ret[rcnt++],&s_list);
-
- if(reg[1].Is()) {
- for(i = reg[1].IsList()?1:0; i < reg[1].cnt; ++i) ret[rcnt++] = reg[1].lst[i];
- }
-
- if(IsSymbol(ret[0]))
- ToOutAnything(0,GetSymbol(ret[0]),rcnt-1,ret+1);
- else
- ToOutList(0,rcnt,ret);
- delete[] ret;
-}
-
-void prepend::m_help()
-{
- post("%s - just like in Max/MSP, version " PREPEND_VERSION,thisName());
-#ifdef _DEBUG
- post("compiled on " __DATE__ " " __TIME__);
-#endif
- post("(C) Thomas Grill, 2002");
- post("");
- post("Arguments: %s [atoms to prepend]",thisName());
- post("Inlets: 1:triggering atoms");
- post("Inlets: 2:atoms to prepend");
- post("Outlets: 1:sum of prepend");
- post("Methods:");
- post("\thelp: shows this help");
-// post("\tset [atoms]: set atoms to prepend");
- post("");
-}
-
-
-
-
-
diff --git a/externals/grill/prepend/makefile.bcc b/externals/grill/prepend/makefile.bcc
deleted file mode 100644
index 6a6446ed..00000000
--- a/externals/grill/prepend/makefile.bcc
+++ /dev/null
@@ -1,75 +0,0 @@
-# prepend - just like in Max/MSP
-# Copyright (c) 2002 Thomas Grill (xovo@gmx.net)
-#
-# Makefile for BorlandC++
-#
-# usage: make -f makefile.bcc
-#
-# ---------------------------------------------
-
-NAME=prepend
-SETUPFUNCTION=prepend_setup
-
-# where to put the build
-OUTPATH=.\bcc
-
-# flext stuff
-FLEXTPATH=..\flext ### EDIT! ###
-TARGET=pdwin
-
-# paths
-BCCPATH=c:\programme\prog\bcc55 ### EDIT! ###
-PDPATH=c:\programme\audio\pd ### EDIT! ###
-
-# includes, libs
-INCPATH=-I$(BCCPATH)\include -I$(PDPATH)\src -I$(FLEXTPATH)
-LIBPATH=-L$(BCCPATH)\lib -L$(PDPATH)\lib -L$(FLEXTPATH)
-LIBS=cw32.lib import32.lib C0D32.OBJ
-
-# compiler definitions and flags
-DEFS=-DPD -DNT
-CFLAGS=-6 -O2 -OS -ff -tWD
-
-
-# the rest can stay untouched
-# ----------------------------------------------
-
-# all the source files from the package
-SRCS= main.cpp
-HDRS=
-
-#default target
-all: $(OUTPATH)\$(NAME).dll
-
-# remove build
-clean:
- -del /s /q $(OUTPATH) > nul
- rmdir $(OUTPATH)
-
-# -----------------------------------------------
-
-OBJS= $(SRCS:.cpp=.obj)
-
-$(SRCS): $(HDRS)
- -touch $<
-
-.PATH.OBJ=$(OUTPATH)
-
-.cpp.obj:
- bcc32 -c $(CFLAGS) $(DEFS) $(INCPATH) -n$(OUTPATH) $<
-
-$(OUTPATH):
- -@if not exist $< mkdir $<
-
-$(OUTPATH)\pd.lib: $(PDPATH)\bin\pd.dll
- implib -a $@ $**
-
-$(OUTPATH)\$(NAME).def:
- @echo EXPORTS $(SETUPFUNCTION) = _$(SETUPFUNCTION) > $<
-
-$(OUTPATH)\$(NAME).dll :: $(OUTPATH) $(OUTPATH)\$(NAME).def $(OUTPATH)\pd.lib
-
-$(OUTPATH)\$(NAME).dll :: $(OBJS)
- ilink32 -C -Tpd $(LIBPATH) $** ,$<,,$(LIBS) $(OUTPATH)\pd.lib $(FLEXTPATH)\bcc\flext-$(TARGET).lib ,$(OUTPATH)\$(NAME).def
-
-
diff --git a/externals/grill/prepend/makefile.pd-linux b/externals/grill/prepend/makefile.pd-linux
deleted file mode 100644
index a7d5df6b..00000000
--- a/externals/grill/prepend/makefile.pd-linux
+++ /dev/null
@@ -1,69 +0,0 @@
-# prepend - just like in Max/MSP
-# Copyright (c) 2002 Thomas Grill (xovo@gmx.net)
-#
-# Makefile for gcc
-#
-# usage: make -f makefile.pd-linux
-#
-# ---------------------------------------------
-
-NAME=prepend2
-
-# where to build
-TARGDIR=./pd-linux
-
-# where to install ### EDIT! ###
-INSTDIR=/usr/lib/pd/extra
-
-# flext stuff ### EDIT! ###
-FLEXTPATH=/usr/lib/pd/flext
-FLEXTLIB=$(FLEXTPATH)/flext.a
-
-# compiler+linker stuff ### EDIT! ###
-INCLUDES=/usr/lib/pd/include
-FLAGS=-DPD
-CFLAGS=-O6 -mcpu=pentium
-LIBS=m
-
-
-# the rest can stay untouched
-# ----------------------------------------------
-
-# all the source files from the package
-SRCS=main.cpp
-HDRS=
-
-TARGET=$(TARGDIR)/$(NAME).pd_linux
-
-# default target
-all: $(TARGDIR) $(TARGET)
-
-$(SRCS): $(HDRS)
- touch $@
-
-$(TARGDIR):
- mkdir $(TARGDIR)
-
-$(TARGDIR)/%.o : %.cpp
- $(CXX) -c $(CFLAGS) $(FLAGS) $(patsubst %,-I%,$(INCLUDES) $(FLEXTPATH)) $< -o $@
-
-$(TARGET) : $(patsubst %.cpp,$(TARGDIR)/%.o,$(SRCS)) $(FLEXTLIB)
- $(CXX) $(LDFLAGS) -shared $^ $(patsubst %,-l%,$(LIBS)) -o $@
- chmod 755 $@
-
-$(INSTDIR):
- mkdir $(INSTDIR)
-
-install:: $(INSTDIR)
-
-install:: $(TARGET)
- cp $^ $(INSTDIR)
- chown root.root $(patsubst %,$(INSTDIR)/%,$(notdir $^))
-
-.PHONY: clean
-clean:
- rm -f $(TARGDIR)/*.o $(TARGET)
-
-
-
-
diff --git a/externals/grill/prepend/prepend.dsp b/externals/grill/prepend/prepend.dsp
deleted file mode 100644
index eee3de13..00000000
--- a/externals/grill/prepend/prepend.dsp
+++ /dev/null
@@ -1,95 +0,0 @@
-# Microsoft Developer Studio Project File - Name="prepend" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** NICHT BEARBEITEN **
-
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-
-CFG=prepend - Win32 Debug
-!MESSAGE Dies ist kein gültiges Makefile. Zum Erstellen dieses Projekts mit NMAKE
-!MESSAGE verwenden Sie den Befehl "Makefile exportieren" und führen Sie den Befehl
-!MESSAGE
-!MESSAGE NMAKE /f "prepend.mak".
-!MESSAGE
-!MESSAGE Sie können beim Ausführen von NMAKE eine Konfiguration angeben
-!MESSAGE durch Definieren des Makros CFG in der Befehlszeile. Zum Beispiel:
-!MESSAGE
-!MESSAGE NMAKE /f "prepend.mak" CFG="prepend - Win32 Debug"
-!MESSAGE
-!MESSAGE Für die Konfiguration stehen zur Auswahl:
-!MESSAGE
-!MESSAGE "prepend - Win32 Release" (basierend auf "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "prepend - Win32 Debug" (basierend auf "Win32 (x86) Dynamic-Link Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName "prepend"
-# PROP Scc_LocalPath "."
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "prepend - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "pd-msvc/r"
-# PROP Intermediate_Dir "pd-msvc/r"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "PREPEND_EXPORTS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "c:\programme\audio\pd\src" /I "f:\prog\max\flext\source" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D FLEXT_SYS=2 /YX /FD /c
-# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0xc07 /d "NDEBUG"
-# ADD RSC /l 0xc07 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
-# ADD LINK32 kernel32.lib user32.lib pd.lib flext-pdwin.lib /nologo /dll /machine:I386 /out:"c:\programme\audio\pd-libs/prepend.dll" /libpath:"c:/programme/audio/pd/bin" /libpath:"..\flext\pd-msvc"
-
-!ELSEIF "$(CFG)" == "prepend - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "pd-msvc/d"
-# PROP Intermediate_Dir "pd-msvc/d"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "PREPEND_EXPORTS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "c:\programme\audio\pd\src" /I "f:\prog\max\flext\source" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D FLEXT_SYS=2 /YX /FD /GZ /c
-# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0xc07 /d "_DEBUG"
-# ADD RSC /l 0xc07 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib pd.lib flext_d-pdwin.lib /nologo /dll /debug /machine:I386 /pdbtype:sept /libpath:"c:/programme/audio/pd/bin" /libpath:"..\flext\pd-msvc"
-
-!ENDIF
-
-# Begin Target
-
-# Name "prepend - Win32 Release"
-# Name "prepend - Win32 Debug"
-# Begin Source File
-
-SOURCE=.\main.cpp
-# End Source File
-# End Target
-# End Project
diff --git a/externals/grill/prepend/prepend.vcproj b/externals/grill/prepend/prepend.vcproj
deleted file mode 100644
index a812c3d9..00000000
--- a/externals/grill/prepend/prepend.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="prepend"
- SccProjectName="prepend"
- SccAuxPath=""
- SccLocalPath="."
- SccProvider="MSSCCI:Jalindi Igloo">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory=".\pd-msvc/d"
- IntermediateDirectory=".\pd-msvc/d"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src,f:\prog\max\flext\source"
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;FLEXT_SYS=2"
- BasicRuntimeChecks="3"
- RuntimeLibrary="5"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile=".\pd-msvc/d/prepend.pch"
- AssemblerListingLocation=".\pd-msvc/d/"
- ObjectFile=".\pd-msvc/d/"
- ProgramDataBaseFileName=".\pd-msvc/d/"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="4"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib flext_d-pdwin.lib"
- OutputFile=".\pd-msvc/d/prepend.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="c:/programme/audio/pd/bin,..\flext\pd-msvc"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile=".\pd-msvc/d/prepend.pdb"
- ImportLibrary=".\pd-msvc/d/prepend.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="_DEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\pd-msvc/d/prepend.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory=".\pd-msvc/r"
- IntermediateDirectory=".\pd-msvc/r"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src,f:\prog\max\flext\source"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;FLEXT_SYS=2"
- StringPooling="TRUE"
- RuntimeLibrary="4"
- EnableFunctionLevelLinking="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile=".\pd-msvc/r/prepend.pch"
- AssemblerListingLocation=".\pd-msvc/r/"
- ObjectFile=".\pd-msvc/r/"
- ProgramDataBaseFileName=".\pd-msvc/r/"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib flext-pdwin.lib"
- OutputFile="c:\programme\audio\pd-libs/prepend.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="c:/programme/audio/pd/bin,..\flext\pd-msvc"
- ProgramDatabaseFile=".\pd-msvc/r/prepend.pdb"
- ImportLibrary=".\pd-msvc/r/prepend.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\pd-msvc/r/prepend.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath="main.cpp">
- <FileConfiguration
- Name="Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/externals/grill/py/build/config-lnx.def b/externals/grill/py/build/config-lnx.def
deleted file mode 100644
index 86477fcc..00000000
--- a/externals/grill/py/build/config-lnx.def
+++ /dev/null
@@ -1,17 +0,0 @@
-# what is the base prefix of the Python installation?
-PYTHONPREFIX=/usr
-
-# which Python version do you want to compile against?
-PYTHONVERSION=2.4
-
-# uncomment if numpy/numarray/numeric support should be compiled in
-# for info see http://numeric.scipy.org
-PY_NUMPY=1
-# PY_NUMARRAY=1
-# PY_NUMERIC=1
-
-# use thread-safe GIL functionality (do this for python version >= 2.3!)
-PY_USE_GIL=1
-
-# use inofficial (pure data) functionality
-# PY_USE_INOFFICIAL=1
diff --git a/externals/grill/py/build/config-mac.def b/externals/grill/py/build/config-mac.def
deleted file mode 100644
index 3ecd7219..00000000
--- a/externals/grill/py/build/config-mac.def
+++ /dev/null
@@ -1,14 +0,0 @@
-# which major python version?
-PYTHONVER=23
-
-# uncomment if numpy/numarray/numeric support should be compiled in
-# for info see http://numeric.scipy.org
-PY_NUMPY=1
-# PY_NUMARRAY=1
-# PY_NUMERIC=1
-
-# use thread-safe GIL functionality (do this for python version >= 2.3!)
-PY_USE_GIL=1
-
-# use inofficial (pure data) functionality
-# PY_USE_INOFFICIAL=1
diff --git a/externals/grill/py/build/config-win.def b/externals/grill/py/build/config-win.def
deleted file mode 100644
index 9c81bf35..00000000
--- a/externals/grill/py/build/config-win.def
+++ /dev/null
@@ -1,17 +0,0 @@
-# which major python version?
-PYTHONVER=24
-
-# where is the Python installation?
-PYTHONPATH=%programfiles%/python$(PYTHONVER)
-
-# uncomment if numpy/numarray/numeric support should be compiled in
-# for info see http://numeric.scipy.org
-PY_NUMPY=1
-# PY_NUMARRAY=1
-# PY_NUMERIC=1
-
-# use thread-safe GIL functionality (do this for python version >= 2.3!)
-PY_USE_GIL=1
-
-# use inofficial (pure data) functionality
-# PY_USE_INOFFICIAL=1
diff --git a/externals/grill/py/build/gnumake-lnx-gcc.inc b/externals/grill/py/build/gnumake-lnx-gcc.inc
deleted file mode 100644
index 7bbde1f0..00000000
--- a/externals/grill/py/build/gnumake-lnx-gcc.inc
+++ /dev/null
@@ -1,21 +0,0 @@
-DEFS += -DPY_EXPORTS
-INCPATH += -I$(PYTHONPREFIX)/include/python$(PYTHONVERSION)
-LIBS += -lpython$(PYTHONVERSION)
-
-ifdef PY_NUMARRAY
-DEFS += -DPY_NUMARRAY
-endif
-ifdef PY_NUMPY
-DEFS += -DPY_NUMPY
-endif
-ifdef PY_NUMERIC
-DEFS += -DPY_NUMERIC
-endif
-
-ifdef PY_USE_GIL
-DEFS += -DPY_USE_GIL
-endif
-
-ifdef PY_USE_INOFFICIAL
-DEFS += -DPY_USE_INOFFICIAL
-endif
diff --git a/externals/grill/py/build/gnumake-mac-gcc.inc b/externals/grill/py/build/gnumake-mac-gcc.inc
deleted file mode 100644
index d077c84e..00000000
--- a/externals/grill/py/build/gnumake-mac-gcc.inc
+++ /dev/null
@@ -1,22 +0,0 @@
-DEFS += -DPY_EXPORTS
-LIBS += -F/Library/Frameworks -framework Python
-
-ifdef PY_NUMARRAY
-DEFS += -DPY_NUMARRAY
-endif
-ifdef PY_NUMPY
-DEFS += -DPY_NUMPY
-INCPATH += -I/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages/numpy/core/include
-#INCPATH += -F/System/Library/Frameworks -I/Library/Python/2.3/site-packages/numpy/core/include
-endif
-ifdef PY_NUMERIC
-DEFS += -DPY_NUMERIC
-endif
-
-ifdef PY_USE_GIL
-DEFS += -DPY_USE_GIL
-endif
-
-ifdef PY_USE_INOFFICIAL
-DEFS += -DPY_USE_INOFFICIAL
-endif
diff --git a/externals/grill/py/build/gnumake-win-cygwin.inc b/externals/grill/py/build/gnumake-win-cygwin.inc
deleted file mode 100644
index a64fd9e1..00000000
--- a/externals/grill/py/build/gnumake-win-cygwin.inc
+++ /dev/null
@@ -1,22 +0,0 @@
-DEFS += -DPY_EXPORTS
-INCPATH += -I$(PYTHONPATH)/include
-LIBPATH += -L$(PYTHONPATH)/libs
-LIBS += -lpython$(PYTHONVER) -lshell32
-
-ifdef PY_NUMARRAY
-DEFS += -DPY_NUMARRAY
-endif
-ifdef PY_NUMPY
-DEFS += -DPY_NUMPY
-endif
-ifdef PY_NUMERIC
-DEFS += -DPY_NUMERIC
-endif
-
-ifdef PY_USE_GIL
-DEFS += -DPY_USE_GIL
-endif
-
-ifdef PY_USE_INOFFICIAL
-DEFS += -DPY_USE_INOFFICIAL
-endif
diff --git a/externals/grill/py/build/nmake-win-msvc.inc b/externals/grill/py/build/nmake-win-msvc.inc
deleted file mode 100644
index 7cf0d04d..00000000
--- a/externals/grill/py/build/nmake-win-msvc.inc
+++ /dev/null
@@ -1,23 +0,0 @@
-DEFS = $(DEFS) /DPY_EXPORTS
-INCPATH=/I$(PYTHONPATH)\include
-LIBPATH=/LIBPATH:$(PYTHONPATH)\libs
-LIBS=$(LIBS) shell32.lib
-
-!ifdef PY_NUMARRAY
-DEFS = $(DEFS) /DPY_NUMARRAY
-!endif
-!ifdef PY_NUMPY
-INCPATH=$(INCPATH) /I$(PYTHONPATH)\Lib\site-packages\numpy\core\include
-DEFS = $(DEFS) /DPY_NUMPY
-!endif
-!ifdef PY_NUMERIC
-DEFS = $(DEFS) /DPY_NUMERIC
-!endif
-
-!ifdef PY_USE_GIL
-DEFS = $(DEFS) /DPY_USE_GIL
-!endif
-
-!ifdef PY_USE_INOFFICIAL
-DEFS = $(DEFS) /DPY_USE_INOFFICIAL
-!endif
diff --git a/externals/grill/py/gpl.txt b/externals/grill/py/gpl.txt
deleted file mode 100644
index d712e5d9..00000000
--- a/externals/grill/py/gpl.txt
+++ /dev/null
@@ -1,284 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
diff --git a/externals/grill/py/license.txt b/externals/grill/py/license.txt
deleted file mode 100644
index c4162b50..00000000
--- a/externals/grill/py/license.txt
+++ /dev/null
@@ -1,50 +0,0 @@
-py/pyext - python script objects for PD and MaxMSP
-Copyright (C) 2002-2008 Thomas Grill
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-In the official py/pyext distribution, the GNU General Public License is
-in the file gpl.txt
-
----------------------------------------------------------
-
- OTHER COPYRIGHT NOTICES
-
----------------------------------------------------------
-This package uses the flext C++ layer - See its license text below:
-
-
---- flext ----------------------------------------------
-flext - C++ layer for Max/MSP and pd (pure data) externals
-Copyright (C) 2001-2008 Thomas Grill
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-In the official flext distribution, the GNU General Public License is
-in the file gpl.txt
-
-
diff --git a/externals/grill/py/maxmsp/py-objectmappings.txt b/externals/grill/py/maxmsp/py-objectmappings.txt
deleted file mode 100644
index cb0e4db3..00000000
--- a/externals/grill/py/maxmsp/py-objectmappings.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-max objectfile py py;
-max objectfile py. py;
-max objectfile pyext py;
-max objectfile pyext. py;
-max objectfile pyx py;
-max objectfile pyx. py;
-max objectfile pyext~ py;
-max objectfile pyext.~ py;
-max objectfile pyx~ py;
-max objectfile pyx.~ py;
-max objectfile pym py;
-
-max oblist python py;
-max oblist python py.;
-max oblist python pyext;
-max oblist python pyext.;
-max oblist python pyext~;
-max oblist python pyext.~;
-max oblist python pym;
diff --git a/externals/grill/py/maxmsp/thread-1.mxb b/externals/grill/py/maxmsp/thread-1.mxb
deleted file mode 100644
index de2d4716..00000000
--- a/externals/grill/py/maxmsp/thread-1.mxb
+++ /dev/null
Binary files differ
diff --git a/externals/grill/py/package.txt b/externals/grill/py/package.txt
deleted file mode 100644
index 9002aa86..00000000
--- a/externals/grill/py/package.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-NAME=py
-
-BUILDTYPE=multi
-BUILDDIR=build
-
-SRCDIR=source
-PRECOMPILE=pyprefix.h
-
-SRCS= \
- main.cpp \
- py.cpp pyext.cpp modmeth.cpp clmeth.cpp \
- register.cpp bound.cpp pyargs.cpp \
- pysymbol.cpp pybuffer.cpp pybundle.cpp pydsp.cpp \
- pyatom.cpp pybase.cpp pymeth.cpp
-
-HDRS= pyprefix.h main.h pyext.h pysymbol.h pybuffer.h pybundle.h pyatom.h pybase.h
diff --git a/externals/grill/py/pd/attr-1.pd b/externals/grill/py/pd/attr-1.pd
deleted file mode 100644
index 56875379..00000000
--- a/externals/grill/py/pd/attr-1.pd
+++ /dev/null
@@ -1,37 +0,0 @@
-#N canvas 114 127 697 455 12;
-#X obj 224 397 pyext simple ex3;
-#X obj 392 398 print A;
-#X msg 362 247 get tmp;
-#X msg 396 320 get _inlets;
-#X msg 395 344 set _inlets 4;
-#X msg 18 206 dir;
-#X msg 15 312 getattributes;
-#X msg 15 336 getmethods;
-#X msg 18 234 dir+;
-#X text 15 75 This demonstrates the usage of attributes. See the simple.py
-file.;
-#X text 260 212 access a class variable;
-#X text 395 301 try to get/set internal stuff;
-#X text 506 347 (NOT allowed!);
-#X text 14 288 get attributes and methods;
-#X text 51 205 Python module dict;
-#X text 59 235 Python class dict;
-#X text 17 128 All attribute-related methods dump eventual output to
-the attribute outlet (which is the right-most one);
-#X obj 16 13 cnv 15 650 40 empty empty py/pyext 10 22 0 24 -260818
--1 0;
-#X text 235 16 Python script objects \, (C)2003-2005 Thomas Grill;
-#X text 235 32 http://grrrr.org/ext;
-#X msg 260 248 set tmp \$1;
-#X obj 259 230 nbx 5 14 -1e+037 1e+037 0 0 empty empty empty 0 -6 0
-10 -262144 -1 -1 0 256;
-#X connect 0 1 1 0;
-#X connect 2 0 0 0;
-#X connect 3 0 0 0;
-#X connect 4 0 0 0;
-#X connect 5 0 0 0;
-#X connect 6 0 0 0;
-#X connect 7 0 0 0;
-#X connect 8 0 0 0;
-#X connect 20 0 0 0;
-#X connect 21 0 20 0;
diff --git a/externals/grill/py/pd/buffer-1.pd b/externals/grill/py/pd/buffer-1.pd
deleted file mode 100644
index 0314d3fe..00000000
--- a/externals/grill/py/pd/buffer-1.pd
+++ /dev/null
@@ -1,61 +0,0 @@
-#N canvas 123 58 716 496 12;
-#X obj 37 240 print;
-#X obj 107 241 print A;
-#X msg 30 139 reload;
-#N canvas 0 0 450 300 graph1 0;
-#X array array1 100 float 3;
-#A 0 0 0 0 0 0 0 0 0 0 0 0.00285713 0.00471427 0.00514284 0.00557141
-0.00599998 0.00642855 0.00228571 0.00242857 0.00257143 -0.00542855
--0.0114285 -0.0209999 -0.0377142 -0.0427142 -0.0479998 -0.067857 -0.0891426
--0.104143 -0.108 -0.111857 -0.115714 -0.119571 -0.123428 -0.127285
--0.131142 -0.125 -0.128571 -0.132143 -0.127571 -0.122571 -0.12 -0.117142
--0.114 -0.110571 -0.106857 -0.102857 -0.0985711 -0.0872856 -0.0754282
--0.0629998 -0.0499999 -0.0437141 -0.0371427 -0.0227142 -0.00771428
-0.00785714 0.0239999 0.0298571 0.0359047 0.0421427 0.068571 0.0915
-0.132857 0.161999 0.146285 0.134642 0.122571 0.105285 0.0582855 0.00985713
-0.00999999 0.0101428 -0.0411427 -0.0417142 -0.0739998 -0.0749998 -0.0759998
--0.132 -0.133714 -0.12533 -0.113684 -0.101707 -0.089398 -0.0767592
--0.0637893 -0.0504886 -0.036857 -0.0152967 0.0067692 0.0293405 0.0524174
-0.0759997 0.100088 0.12468 0.14978 0.175384 0.201493 0.228109 0.25523
-0.325284;
-#X coords 0 1 99 -1 200 140 1;
-#X restore 421 156 graph;
-#N canvas 0 0 450 300 graph2 0;
-#X array array2 100 float 3;
-#A 0 0 0 0 0 0 0 0.0285712 0.0428568 0.0571424 0.12857 0.171427 0.185712
-0.199998 0.242854 0.342853 0.342853 0.364281 0.41428 0.41428 0.357138
-0.314282 0.278568 0.314282 0.328567 0.342853 0.378567 0.41428 0.457137
-0.49285 0.528564 0.54285 0.557135 0.599992 0.614277 0.671419 0.671419
-0.599992 0.614276 0.59999 0.585705 0.571419 0.499991 0.482135 0.464278
-0.446421 0.428564 0.408564 0.388565 0.368565 0.348565 0.328566 0.305709
-0.282852 0.259995 0.237138 0.214282 0.194282 0.174282 0.154282 0.134283
-0.114283 0.0914263 0.0685695 0.0457127 0.0228559 8.84384e-007 0.0142864
-0.0285719 0.0428574 0.0571429 0.0714284 0.096428 0.121428 0.146427
-0.171427 0.181631 0.191835 0.202039 0.212243 0.222446 0.23265 0.242854
-0.25714 0.271425 0.285711 0.299996 0.314282 0.33571 0.357138 0.385709
-0.407138 0.428566 0.457137 0.457137 0.12857 0.514279 0.557135 0.604754
-0.652372 0.814274;
-#X coords 0 1 99 -1 200 140 1;
-#X restore 421 305 graph;
-#N canvas 0 0 450 300 graph3 0;
-#X array array3 100 float 2;
-#X coords 0 1 99 -1 200 140 1;
-#X restore 65 301 graph;
-#X obj 36 199 py buffer @detach 1;
-#X msg 200 123 mul array3 array1 array2;
-#X msg 200 145 add array3 array1 array2;
-#X obj 16 13 cnv 15 650 40 empty empty py/pyext 10 22 0 24 -260818
--1 0;
-#X text 235 16 Python script objects \, (C)2003-2005 Thomas Grill;
-#X text 235 32 http://grrrr.org/ext;
-#X text 17 67 This demonstrates the usage of buffers. See the buffer.py
-script.;
-#X msg 201 172 fadein array1;
-#X msg 199 196 neg array2;
-#X connect 2 0 6 0;
-#X connect 6 0 0 0;
-#X connect 6 1 1 0;
-#X connect 7 0 6 1;
-#X connect 8 0 6 1;
-#X connect 13 0 6 1;
-#X connect 14 0 6 1;
diff --git a/externals/grill/py/pd/buffer-2.pd b/externals/grill/py/pd/buffer-2.pd
deleted file mode 100644
index fe066805..00000000
--- a/externals/grill/py/pd/buffer-2.pd
+++ /dev/null
@@ -1,37 +0,0 @@
-#N canvas 608 159 694 442 12;
-#X obj 16 13 cnv 15 650 40 empty empty py/pyext 10 22 0 24 -260818
--1 0;
-#X text 235 16 Python script objects \, (C)2003-2005 Thomas Grill;
-#X text 235 32 http://grrrr.org/ext;
-#X text 17 67 This demonstrates how to resize buffers;
-#N canvas 0 0 450 300 graph1 0;
-#X array array1 42 float 3;
-#A 0 0 0 0 0 0.0285715 0.0857145 0.128572 0.171429 0.257144 0.314287
-0.385715 0.385715 0.385715 0.385715 0.385715 0.37143 0.342858 0.314287
-0.228572 0.128572 0.0428573 -0.0857145 -0.200001 -0.285715 -0.328572
--0.357144 -0.400001 -0.428573 -0.428573 -0.457144 -0.457144 -0.457144
--0.457144 -0.457144 -0.457144 -0.457144 -0.457144 -0.457144 -0.414287
--0.342858 -0.314287 1.02445e-007;
-#X coords 0 1 42 -1 200 140 1;
-#X restore 413 259 graph;
-#X msg 40 148 symbol array1;
-#X obj 40 194 py pyext.Buffer @py 1;
-#X obj 143 238 nbx 5 14 0 100 0 1 empty empty empty 0 -6 0 10 -260818
--1 -1 42 256;
-#X obj 143 260 t b f;
-#X obj 39 287 pym 2 resize @py 1;
-#X obj 40 120 loadbang;
-#X text 37 310 returns buffer object;
-#X obj 41 361 py .len;
-#X text 111 361 call __builtin__.len;
-#X text 222 192 create Buffer object;
-#X obj 41 394 nbx 5 14 -1e+037 1e+037 0 0 empty empty empty 0 -6 0
-10 -261681 -1 -1 0 256;
-#X connect 5 0 6 1;
-#X connect 6 0 9 1;
-#X connect 7 0 8 0;
-#X connect 8 0 9 0;
-#X connect 8 1 9 2;
-#X connect 9 0 12 1;
-#X connect 10 0 5 0;
-#X connect 12 0 15 0;
diff --git a/externals/grill/py/pd/builtins-1.pd b/externals/grill/py/pd/builtins-1.pd
deleted file mode 100644
index 23088d9f..00000000
--- a/externals/grill/py/pd/builtins-1.pd
+++ /dev/null
@@ -1,53 +0,0 @@
-#N canvas 602 394 714 429 12;
-#X obj 36 241 py .range @py 1;
-#X floatatom 35 356 5 0 0 0 - - -;
-#X obj 35 323 py .sum;
-#X obj 16 13 cnv 15 650 40 empty empty py/pyext 10 22 0 24 -260818
--1 0;
-#X text 235 32 http://grrrr.org/ext;
-#X obj 36 159 nbx 5 14 -1e+037 1e+037 0 1 empty empty min 0 -6 0 10
--262131 -1 -1 51 256;
-#X obj 95 159 nbx 5 14 -1e+037 1e+037 0 1 empty empty max 0 -6 0 10
--262131 -1 -1 131 256;
-#X obj 154 159 nbx 5 14 1 100000 1 1 empty empty step 0 -6 0 10 -262131
--1 -1 6.61169 256;
-#N canvas 0 0 466 316 pak3 0;
-#X obj 22 25 inlet;
-#X obj 81 26 inlet;
-#X obj 136 26 inlet;
-#X obj 36 158 outlet;
-#X obj 36 123 pack 0 0 0;
-#X obj 78 71 t b f;
-#X obj 133 73 t b f;
-#X obj 208 46 loadbang;
-#X obj 208 73 1;
-#X obj 23 53 int;
-#X obj 135 51 int;
-#X obj 80 50 int;
-#X connect 0 0 9 0;
-#X connect 1 0 11 0;
-#X connect 2 0 10 0;
-#X connect 4 0 3 0;
-#X connect 5 0 4 0;
-#X connect 5 1 4 1;
-#X connect 6 0 4 0;
-#X connect 6 1 4 2;
-#X connect 7 0 8 0;
-#X connect 8 0 4 2;
-#X connect 9 0 4 0;
-#X connect 10 0 6 0;
-#X connect 11 0 5 0;
-#X restore 36 190 pd pak3;
-#X text 169 239 construct a Python list;
-#X text 78 282 Python object pointer is propagated to next object;
-#X text 106 320 calculate sum over list elements;
-#X text 21 73 Py can use built-in Python functions;
-#X text 21 97 A . preceding the function name searches for the function
-in either the pyext module or in __builtins__;
-#X text 235 16 Python script objects \, (C)2003-2006 Thomas Grill;
-#X connect 0 0 2 1;
-#X connect 2 0 1 0;
-#X connect 5 0 8 0;
-#X connect 6 0 8 1;
-#X connect 7 0 8 2;
-#X connect 8 0 0 1;
diff --git a/externals/grill/py/pd/methods-1.pd b/externals/grill/py/pd/methods-1.pd
deleted file mode 100644
index 5b85c43a..00000000
--- a/externals/grill/py/pd/methods-1.pd
+++ /dev/null
@@ -1,24 +0,0 @@
-#N canvas 540 469 734 369 12;
-#X obj 16 13 cnv 15 650 40 empty empty py/pyext 10 22 0 24 -260818
--1 0;
-#X text 235 32 http://grrrr.org/ext;
-#X symbolatom 21 139 10 0 0 0 - - -;
-#X symbolatom 25 298 10 0 0 0 - - -;
-#X obj 22 179 py .str @py 1;
-#X text 145 170 convert the symbol to a Python string;
-#X text 35 216 pass it as a true Python object;
-#X symbolatom 364 295 10 0 0 0 - - -;
-#X text 462 269 use module function;
-#X text 23 119 enter some text;
-#X text 145 187 using the built-in str function;
-#X obj 25 252 pym swapcase;
-#X text 63 270 use swapcase method;
-#X obj 363 250 py string.swapcase;
-#X text 235 16 Python script objects \, (C)2003-2006 Thomas Grill;
-#X text 21 73 Py can act on Python objects in an object-oriented manner
-;
-#X connect 2 0 4 1;
-#X connect 4 0 11 1;
-#X connect 4 0 13 1;
-#X connect 11 0 3 0;
-#X connect 13 0 7 0;
diff --git a/externals/grill/py/pd/methods-2.pd b/externals/grill/py/pd/methods-2.pd
deleted file mode 100644
index df967716..00000000
--- a/externals/grill/py/pd/methods-2.pd
+++ /dev/null
@@ -1,30 +0,0 @@
-#N canvas 540 469 746 351 12;
-#X obj 16 13 cnv 15 650 40 empty empty py/pyext 10 22 0 24 -260818
--1 0;
-#X text 235 32 http://grrrr.org/ext;
-#X symbolatom 21 139 10 0 0 0 - #0-t -;
-#X text 23 119 enter some text;
-#X obj 25 252 pym 2 *;
-#X obj 213 183 t b f;
-#X text 105 251 repeat text;
-#X text 215 117 multiply it!;
-#X symbolatom 25 283 80 0 0 0 - - -;
-#X obj 214 139 nbx 5 14 1 100 0 1 empty empty empty 0 -6 0 10 -262131
--1 -1 6 256;
-#N canvas 0 0 462 312 init 0;
-#X obj 61 116 s \$0-t;
-#X obj 64 44 loadbang;
-#X obj 64 81 symbol a;
-#X connect 1 0 2 0;
-#X connect 2 0 0 0;
-#X restore 606 127 pd init;
-#X obj 213 159 int;
-#X text 235 16 Python script objects \, (C)2003-2006 Thomas Grill;
-#X text 21 73 Py can act on Python objects in an object-oriented manner
-;
-#X connect 2 0 4 1;
-#X connect 4 0 8 0;
-#X connect 5 0 4 0;
-#X connect 5 1 4 2;
-#X connect 9 0 11 0;
-#X connect 11 0 5 0;
diff --git a/externals/grill/py/pd/pak.pd b/externals/grill/py/pd/pak.pd
deleted file mode 100644
index 139350a2..00000000
--- a/externals/grill/py/pd/pak.pd
+++ /dev/null
@@ -1,28 +0,0 @@
-#N canvas 463 293 282 232 12;
-#X obj 17 32 nbx 5 14 -1e+037 1e+037 0 0 empty empty empty 0 -6 0 10
--262144 -1 -1 47 256;
-#X obj 34 52 nbx 5 14 -1e+037 1e+037 0 0 empty empty empty 0 -6 0 10
--262144 -1 -1 182 256;
-#X obj 56 68 nbx 5 14 -1e+037 1e+037 0 0 empty empty empty 0 -6 0 10
--262144 -1 -1 86 256;
-#X obj 68 88 nbx 5 14 -1e+037 1e+037 0 0 empty empty empty 0 -6 0 10
--262144 -1 -1 31 256;
-#X obj 118 29 nbx 5 14 -1e+037 1e+037 0 0 empty empty empty 0 -6 0
-10 -262144 -1 -1 117 256;
-#X obj 135 49 nbx 5 14 -1e+037 1e+037 0 0 empty empty empty 0 -6 0
-10 -262144 -1 -1 0 256;
-#X obj 157 65 nbx 5 14 -1e+037 1e+037 0 0 empty empty empty 0 -6 0
-10 -262144 -1 -1 86 256;
-#X obj 169 85 nbx 5 14 -1e+037 1e+037 0 0 empty empty empty 0 -6 0
-10 -262144 -1 -1 0 256;
-#X obj 36 168 print;
-#X obj 37 129 pyx. pak 8;
-#X connect 0 0 9 1;
-#X connect 1 0 9 2;
-#X connect 2 0 9 3;
-#X connect 3 0 9 4;
-#X connect 4 0 9 5;
-#X connect 5 0 9 6;
-#X connect 6 0 9 7;
-#X connect 7 0 9 8;
-#X connect 9 0 8 0;
diff --git a/externals/grill/py/pd/script-1.pd b/externals/grill/py/pd/script-1.pd
deleted file mode 100644
index 98fee527..00000000
--- a/externals/grill/py/pd/script-1.pd
+++ /dev/null
@@ -1,64 +0,0 @@
-#N canvas 297 17 700 542 12;
-#X obj 39 278 print;
-#X obj 345 251 print;
-#X msg 499 149 freakhole;
-#X msg 148 149 list H e l l o;
-#X msg 166 175 Hello friend;
-#X obj 42 460 print;
-#X msg 102 367 0 1 2 3 4;
-#X msg 197 367 5 67 3;
-#X obj 350 456 print;
-#X obj 316 358 bng 15 250 50 0 empty empty empty 20 8 0 8 -262144 -1
--1;
-#X obj 515 455 print;
-#X obj 484 381 bng 15 250 50 0 empty empty empty 20 8 0 8 -262144 -1
--1;
-#X msg 188 204 1 3;
-#X msg 345 155 help;
-#X msg 350 320 set ret1;
-#X msg 369 344 set ret2;
-#X text 424 319 functions can be set;
-#X msg 421 120 somewhere_past_mars;
-#X text 152 101 reload with new arguments;
-#X msg 40 104 reload 1 2 3;
-#X text 21 69 This demonstrates simple scripting. See the script.py
-file.;
-#X obj 39 241 py script strcat;
-#X obj 43 424 py script addall;
-#X obj 350 420 py script;
-#X obj 346 204 py script strlen;
-#X msg 21 159 dir;
-#X obj 146 279 print A;
-#X msg 58 160 dir+;
-#X obj 16 13 cnv 15 630 40 empty empty py/pyext 10 22 0 24 -260818
--1 0;
-#X text 235 16 Python script objects \, (C)2003-2005 Thomas Grill;
-#X text 235 32 http://grrrr.org/ext;
-#X msg 509 178 a b c;
-#X text 556 181 too many args;
-#X text 505 372 just trigger without arguments;
-#X msg 386 371 set ret4;
-#X obj 516 419 py script ret3;
-#X connect 2 0 24 1;
-#X connect 3 0 21 1;
-#X connect 4 0 21 1;
-#X connect 6 0 22 1;
-#X connect 7 0 22 1;
-#X connect 9 0 23 0;
-#X connect 11 0 35 0;
-#X connect 12 0 21 1;
-#X connect 13 0 24 0;
-#X connect 14 0 23 0;
-#X connect 15 0 23 0;
-#X connect 17 0 24 1;
-#X connect 19 0 21 0;
-#X connect 21 0 0 0;
-#X connect 21 1 26 0;
-#X connect 22 0 5 0;
-#X connect 23 0 8 0;
-#X connect 24 0 1 0;
-#X connect 25 0 21 0;
-#X connect 27 0 21 0;
-#X connect 31 0 24 1;
-#X connect 34 0 23 0;
-#X connect 35 0 10 0;
diff --git a/externals/grill/py/pd/sendrecv-1.pd b/externals/grill/py/pd/sendrecv-1.pd
deleted file mode 100644
index c2b8a500..00000000
--- a/externals/grill/py/pd/sendrecv-1.pd
+++ /dev/null
@@ -1,33 +0,0 @@
-#N canvas 145 126 658 333 12;
-#X msg 125 81 reload mi ma;
-#X floatatom 48 238 5 0 0 0 - - -;
-#X floatatom 297 239 5 0 0 0 - - -;
-#X obj 297 263 s mi;
-#X floatatom 143 265 5 0 0 0 - - -;
-#X floatatom 382 267 5 0 0 0 - - -;
-#X obj 382 240 r ma;
-#X obj 48 262 s he;
-#X obj 143 238 r hu;
-#X text 247 81 reload with different args;
-#X msg 20 82 help;
-#X msg 19 114 doc;
-#X msg 58 114 doc+;
-#X obj 49 165 pyext sendrecv ex1 he hu;
-#X text 30 218 scroll here;
-#X text 292 219 or here;
-#X obj 16 13 cnv 15 600 40 empty empty py/pyext 10 22 0 24 -260818
--1 0;
-#X msg 202 128 bind;
-#X msg 249 129 unbind;
-#X text 213 16 Python script objects \, (C)2003-2005 Thomas Grill;
-#X text 213 32 http://grrrr.org/ext;
-#X connect 0 0 13 0;
-#X connect 1 0 7 0;
-#X connect 2 0 3 0;
-#X connect 6 0 5 0;
-#X connect 8 0 4 0;
-#X connect 10 0 13 0;
-#X connect 11 0 13 0;
-#X connect 12 0 13 0;
-#X connect 17 0 13 1;
-#X connect 18 0 13 1;
diff --git a/externals/grill/py/pd/sendrecv-2.pd b/externals/grill/py/pd/sendrecv-2.pd
deleted file mode 100644
index 77a6a466..00000000
--- a/externals/grill/py/pd/sendrecv-2.pd
+++ /dev/null
@@ -1,12 +0,0 @@
-#N canvas 133 322 647 189 12;
-#X obj 152 98 pyext sendrecv ex2 huha;
-#X floatatom 152 128 5 0 0 0 - - -;
-#X floatatom 33 96 5 0 0 0 - - -;
-#X obj 32 123 s huha;
-#X text 20 77 scroll here;
-#X obj 16 13 cnv 15 600 40 empty empty py/pyext 10 22 0 24 -260818
--1 0;
-#X text 213 16 Python script objects \, (C)2003-2005 Thomas Grill;
-#X text 213 32 http://grrrr.org/ext;
-#X connect 0 0 1 0;
-#X connect 2 0 3 0;
diff --git a/externals/grill/py/pd/sendrecv-3.pd b/externals/grill/py/pd/sendrecv-3.pd
deleted file mode 100644
index f43b7d94..00000000
--- a/externals/grill/py/pd/sendrecv-3.pd
+++ /dev/null
@@ -1,10 +0,0 @@
-#N canvas 294 237 648 327 12;
-#X obj 410 265 pyext sendrecv ex3 @detach 1;
-#X obj 611 236 bng 25 250 50 0 empty ugh empty 0 -6 0 8 -258699 -1
--1;
-#X obj 16 13 cnv 15 600 40 empty empty py/pyext 10 22 0 24 -260818
--1 0;
-#X text 213 16 Python script objects \, (C)2003-2005 Thomas Grill;
-#X text 213 32 http://grrrr.org/ext;
-#X text 414 213 quite likely not to work...;
-#X connect 1 0 0 1;
diff --git a/externals/grill/py/pd/sig-1.pd b/externals/grill/py/pd/sig-1.pd
deleted file mode 100644
index 61342810..00000000
--- a/externals/grill/py/pd/sig-1.pd
+++ /dev/null
@@ -1,28 +0,0 @@
-#N canvas 52 147 663 315 12;
-#X obj 56 234 dac~;
-#X msg 523 211 \; pd dsp 1;
-#X obj 524 184 loadbang;
-#X obj 194 114 hsl 128 15 0.01 1 1 1 empty empty gain -2 -6 0 8 -225271
--1 -1 11200 1;
-#X obj 89 116 noise~;
-#X msg 21 116 reload;
-#X obj 16 13 cnv 15 600 40 empty empty py/pyext 10 22 0 24 -260818
--1 0;
-#X text 213 32 http://grrrr.org/ext;
-#X text 213 16 Python script objects \, (C)2003-2005 Thomas Grill;
-#X text 17 66 This demonstrates signal support. See the sig.py file.
-;
-#X obj 191 131 nbx 5 14 0.001 1 1 0 empty empty empty 0 -6 0 10 -225271
--1 -1 0.58047 256;
-#X msg 192 148 set gain \$1;
-#X text 123 202 message inlets \, outlets;
-#X text 123 217 signal inlets \, outlets;
-#X obj 67 181 pyext~ 0 0 1 1 sig gain2;
-#X connect 2 0 1 0;
-#X connect 3 0 10 0;
-#X connect 4 0 14 0;
-#X connect 5 0 14 0;
-#X connect 10 0 11 0;
-#X connect 11 0 14 0;
-#X connect 14 0 0 0;
-#X connect 14 0 0 1;
diff --git a/externals/grill/py/pd/sig-2.pd b/externals/grill/py/pd/sig-2.pd
deleted file mode 100644
index 699154d8..00000000
--- a/externals/grill/py/pd/sig-2.pd
+++ /dev/null
@@ -1,23 +0,0 @@
-#N canvas 56 67 663 315 12;
-#X obj 121 246 dac~;
-#X msg 523 211 \; pd dsp 1;
-#X obj 524 184 loadbang;
-#X obj 266 134 hsl 128 15 0 1 0 1 empty empty pan -2 -6 0 8 -225271
--1 -1 4700 1;
-#X obj 100 127 noise~;
-#X msg 31 127 reload;
-#X obj 16 13 cnv 15 600 40 empty empty py/pyext 10 22 0 24 -260818
--1 0;
-#X text 213 32 http://grrrr.org/ext;
-#X text 213 16 Python script objects \, (C)2003-2005 Thomas Grill;
-#X text 17 66 This demonstrates signal support. See the sig.py file.
-;
-#X obj 92 179 pyext~ 1 0 1 2 sig pan;
-#X text 185 202 message inlets \, outlets;
-#X text 183 218 signal inlets \, outlets;
-#X connect 2 0 1 0;
-#X connect 3 0 10 1;
-#X connect 4 0 10 0;
-#X connect 5 0 10 0;
-#X connect 10 0 0 0;
-#X connect 10 1 0 1;
diff --git a/externals/grill/py/pd/simple-1.pd b/externals/grill/py/pd/simple-1.pd
deleted file mode 100644
index bfe137de..00000000
--- a/externals/grill/py/pd/simple-1.pd
+++ /dev/null
@@ -1,45 +0,0 @@
-#N canvas 156 192 682 409 12;
-#X obj 53 123 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X floatatom 52 155 5 0 0 0 - - -;
-#X text 388 337 watch the console output!;
-#X msg 52 186 2 3 4;
-#X msg 277 131 ho;
-#X msg 233 155 lets;
-#X msg 283 190 go;
-#X msg 212 214 !!!;
-#X msg 205 113 hey;
-#X obj 183 301 pyext simple ex1;
-#X msg 434 114 onearg 123;
-#X msg 456 167 threeargs 9 8 7;
-#X msg 463 196 varargs 8 4 2 1;
-#X msg 447 140 twoargs 41 15;
-#X msg 453 239 twoargs 1 2 3;
-#X msg 71 299 help;
-#X text 16 69 This demonstrates message handling. See the simple.py
-file.;
-#X text 232 322 file class;
-#X msg 70 324 doc;
-#X msg 106 325 doc+;
-#X obj 16 13 cnv 15 600 40 empty empty py/pyext 10 22 0 24 -260818
--1 0;
-#X text 213 32 http://grrrr.org/ext;
-#X text 213 16 Python script objects \, (C)2003-2005 Thomas Grill;
-#X msg 41 246 reload;
-#X connect 0 0 9 1;
-#X connect 1 0 9 1;
-#X connect 3 0 9 1;
-#X connect 4 0 9 2;
-#X connect 5 0 9 2;
-#X connect 6 0 9 2;
-#X connect 7 0 9 2;
-#X connect 8 0 9 2;
-#X connect 10 0 9 3;
-#X connect 11 0 9 3;
-#X connect 12 0 9 3;
-#X connect 13 0 9 3;
-#X connect 14 0 9 3;
-#X connect 15 0 9 0;
-#X connect 18 0 9 0;
-#X connect 19 0 9 0;
-#X connect 23 0 9 0;
diff --git a/externals/grill/py/pd/simple-2.pd b/externals/grill/py/pd/simple-2.pd
deleted file mode 100644
index 4c857d49..00000000
--- a/externals/grill/py/pd/simple-2.pd
+++ /dev/null
@@ -1,37 +0,0 @@
-#N canvas 570 275 788 398 12;
-#X floatatom 202 113 5 0 0 0 - - -;
-#X text 338 286 watch the console output!;
-#X msg 20 115 help;
-#X text 16 69 This demonstrates message handling. See the simple.py
-file.;
-#X msg 19 140 doc;
-#X msg 55 141 doc+;
-#X floatatom 259 113 5 0 0 0 - - -;
-#X msg 169 235 msg 2;
-#X obj 123 289 pyext simple ex2;
-#X floatatom 123 334 5 0 0 0 - - -;
-#X floatatom 240 335 5 0 0 0 - - -;
-#X msg 100 204 msg 1 3;
-#X msg 234 220 msg a b;
-#X msg 120 174 hello;
-#X msg 193 180 hello;
-#X msg 266 179 msg;
-#X obj 16 13 cnv 15 600 40 empty empty py/pyext 10 22 0 24 -260818
--1 0;
-#X text 213 16 Python script objects \, (C)2003-2005 Thomas Grill;
-#X text 213 32 http://grrrr.org/ext;
-#X msg 333 186 whoopie a b c;
-#X connect 0 0 8 1;
-#X connect 2 0 8 0;
-#X connect 4 0 8 0;
-#X connect 5 0 8 0;
-#X connect 6 0 8 2;
-#X connect 7 0 8 2;
-#X connect 8 0 9 0;
-#X connect 8 1 10 0;
-#X connect 11 0 8 1;
-#X connect 12 0 8 3;
-#X connect 13 0 8 1;
-#X connect 14 0 8 3;
-#X connect 15 0 8 2;
-#X connect 19 0 8 3;
diff --git a/externals/grill/py/pd/simple-3.pd b/externals/grill/py/pd/simple-3.pd
deleted file mode 100644
index 5874991e..00000000
--- a/externals/grill/py/pd/simple-3.pd
+++ /dev/null
@@ -1,30 +0,0 @@
-#N canvas 136 275 657 369 12;
-#X msg 73 266 help;
-#X text 17 80 This demonstrates message handling. See the simple.py
-file.;
-#X msg 72 291 doc;
-#X msg 108 292 doc+;
-#X floatatom 258 305 5 0 0 0 - - -;
-#X floatatom 316 119 5 0 0 0 - - -;
-#X floatatom 399 119 5 0 0 0 - - -;
-#X msg 24 182 reload.;
-#X msg 24 210 reload -10;
-#X text 95 181 reload script and keep arguments;
-#X text 113 211 reload script with new arguments;
-#X text 281 140 triggers;
-#X text 310 304 result;
-#X text 410 140 sets argument;
-#X obj 16 13 cnv 15 600 40 empty empty py/pyext 10 22 0 24 -260818
--1 0;
-#X text 213 16 Python script objects \, (C)2003-2005 Thomas Grill;
-#X text 213 32 http://grrrr.org/ext;
-#X obj 210 266 pyext simple.ex3 1;
-#X text 369 258 the name can also be given in dotted Python style;
-#X connect 0 0 17 0;
-#X connect 2 0 17 0;
-#X connect 3 0 17 0;
-#X connect 5 0 17 1;
-#X connect 6 0 17 2;
-#X connect 7 0 17 0;
-#X connect 8 0 17 0;
-#X connect 17 0 4 0;
diff --git a/externals/grill/py/pd/tcltk.pd b/externals/grill/py/pd/tcltk.pd
deleted file mode 100644
index 368544e6..00000000
--- a/externals/grill/py/pd/tcltk.pd
+++ /dev/null
@@ -1,18 +0,0 @@
-#N canvas 156 192 614 333 12;
-#X obj 328 118 bng 25 250 50 0 empty empty empty 0 -6 0 8 -258699 -1
--1;
-#X msg 94 128 help;
-#X msg 139 127 doc;
-#X text 14 49 This demonstrates a tcl/tk dialog. See the tcltk.py file.
-;
-#X text 10 263 Note: When used concurrently with audio \, you will
-notice clicks. This Tk window is NOT called over a net socket \, like
-PD is;
-#X obj 206 169 pyext tcltk myapp;
-#X obj 206 200 print tcltk;
-#X text 16 15 py/pyext - Python script objects \, (C)2002-2005 Thomas
-Grill;
-#X connect 0 0 5 1;
-#X connect 1 0 5 0;
-#X connect 2 0 5 0;
-#X connect 5 0 6 0;
diff --git a/externals/grill/py/pd/thread-1.pd b/externals/grill/py/pd/thread-1.pd
deleted file mode 100644
index f2160cae..00000000
--- a/externals/grill/py/pd/thread-1.pd
+++ /dev/null
@@ -1,62 +0,0 @@
-#N canvas 135 178 652 409 12;
-#X msg 35 292 help;
-#X msg 34 317 doc;
-#X msg 70 318 doc+;
-#X floatatom 142 340 5 0 0 0 - - -;
-#X text 17 66 This demonstrates threading. See the threads.py file.
-;
-#X obj 137 243 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 2
-2;
-#X msg 137 263 detach \$1;
-#X floatatom 250 341 5 0 0 0 - - -;
-#X obj 272 150 bng 15 250 50 0 empty empty empty 0 -6 0 8 -258699 -1
--1;
-#X obj 143 154 bng 15 250 50 0 empty empty empty 0 -6 0 8 -258699 -1
--1;
-#X obj 143 181 t b b b;
-#X obj 272 177 t b b b;
-#X obj 286 206 1;
-#X obj 157 208 0;
-#X text 84 114 without threads;
-#X text 248 112 with threads;
-#X text 175 362 watch that!;
-#X msg 421 264 stop;
-#X text 391 243 you can even stop it;
-#X obj 142 306 pyext threads ex1;
-#X text 90 128 - blocking!! -;
-#X obj 16 13 cnv 15 600 40 empty empty py/pyext 10 22 0 24 -260818
--1 0;
-#X obj 407 150 bng 15 250 50 0 empty empty empty 0 -6 0 8 -258699 -1
--1;
-#X obj 407 177 t b b b;
-#X text 383 112 with threads;
-#X text 249 129 non-blocking;
-#X text 384 129 parallel;
-#X obj 445 205 2;
-#X text 213 32 http://grrrr.org/ext;
-#X text 213 16 Python script objects \, (C)2003-2005 Thomas Grill;
-#X msg 44 195 reload;
-#X connect 0 0 19 0;
-#X connect 1 0 19 0;
-#X connect 2 0 19 0;
-#X connect 5 0 6 0;
-#X connect 6 0 19 0;
-#X connect 8 0 11 0;
-#X connect 9 0 10 0;
-#X connect 10 0 19 1;
-#X connect 10 1 19 2;
-#X connect 10 2 13 0;
-#X connect 11 0 19 1;
-#X connect 11 1 19 2;
-#X connect 11 2 12 0;
-#X connect 12 0 5 0;
-#X connect 13 0 5 0;
-#X connect 17 0 19 0;
-#X connect 19 0 3 0;
-#X connect 19 1 7 0;
-#X connect 22 0 23 0;
-#X connect 23 0 19 1;
-#X connect 23 1 19 2;
-#X connect 23 2 27 0;
-#X connect 27 0 5 0;
-#X connect 30 0 19 0;
diff --git a/externals/grill/py/py.vcproj b/externals/grill/py/py.vcproj
deleted file mode 100644
index 76ee84a5..00000000
--- a/externals/grill/py/py.vcproj
+++ /dev/null
@@ -1,1347 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="py"
- ProjectGUID="{98512688-BE2E-4C17-A7D4-92BC21DC6FFE}"
- Keyword="Win32Proj">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="PD Debug|Win32"
- OutputDirectory=".\pd-msvc\d"
- IntermediateDirectory=".\pd-msvc\d"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src;..\flext\source;C:\Programme\prog\Python24\include"
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;PY_EXPORTS;FLEXT_SYS=2;PY_USE_GIL;PY_USE_INOFFICIAL"
- BasicRuntimeChecks="3"
- RuntimeLibrary="5"
- RuntimeTypeInfo="TRUE"
- UsePrecompiledHeader="2"
- BrowseInformation="1"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="4"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib"
- OutputFile=".\pd-msvc\d/py.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="c:/programme/audio/pd/bin;&quot;c:\data\prog\packs\Python-2.4\PCbuild&quot;"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile=".\pd-msvc\d/py.pdb"
- ImportLibrary=".\pd-msvc\d/py.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="_DEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\pd-msvc\d/py.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="PD Threads Debug|Win32"
- OutputDirectory=".\pd-msvc\td"
- IntermediateDirectory=".\pd-msvc\td"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- InlineFunctionExpansion="0"
- EnableIntrinsicFunctions="TRUE"
- AdditionalIncludeDirectories="$(prereq)\pthreads\include;$(pdmax)\pd\src;..\flext\source;C:\Python24\include;&quot;C:\Python24\Lib\site-packages\numpy\core\include&quot;;;C:\data\nova\libs\lockfree"
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;PY_EXPORTS;FLEXT_SYS=2;FLEXT_THREADS;PY_NUMPY;FLEXT_USECMEM;PY_USE_GIL;PY_USE_INOFFICIAL"
- BasicRuntimeChecks="3"
- RuntimeLibrary="1"
- EnableEnhancedInstructionSet="1"
- RuntimeTypeInfo="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderThrough="pyprefix.h"
- BrowseInformation="0"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib pthreadVC2.lib"
- OutputFile="$(outdir)/py.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="$(prereq)\python-2.4.4\pcbuild;$(prereq)\pthreads\lib;$(pdmax)\pd\bin"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(outdir)/py.pdb"
- SubSystem="2"
- ImportLibrary="$(outdir)/py.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="_DEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\pd-msvc\td/py.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="PD Threads Release|Win32"
- OutputDirectory=".\pd-msvc\tr"
- IntermediateDirectory=".\pd-msvc\tr"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src;c:\data\pdmax\flext\source;C:\Programme\prog\Python24\include;;C:\data\nova\libs\lockfree"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;FLEXT_SYS=2;FLEXT_THREADS;PY_EXPORTS;PY_NUMARRAY;PY_USE_GIL"
- StringPooling="TRUE"
- RuntimeLibrary="0"
- EnableFunctionLevelLinking="TRUE"
- RuntimeTypeInfo="TRUE"
- UsePrecompiledHeader="2"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib pthreadVC.lib"
- OutputFile="$(outdir)\py.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="c:/programme/audio/pd/bin;&quot;..\flext\pd-msvc&quot;;C:\Programme\prog\Python24\libs"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(outdir)/py.pdb"
- ImportLibrary="$(outdir)/py.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\pd-msvc\tr/py.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="PD Release|Win32"
- OutputDirectory=".\pd-msvc\r"
- IntermediateDirectory=".\pd-msvc\r"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src;..\flext\source;C:\Programme\prog\Python24\include"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;PY_EXPORTS;FLEXT_SYS=2;PY_NUMARRAY"
- StringPooling="TRUE"
- RuntimeLibrary="4"
- EnableFunctionLevelLinking="TRUE"
- UsePrecompiledHeader="2"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib"
- OutputFile=".\pd-msvc\r/py.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="c:/programme/audio/pd/bin;&quot;..\flext\pd-msvc&quot;;C:\Programme\prog\Python24\libs"
- ProgramDatabaseFile=".\pd-msvc\r/py.pdb"
- ImportLibrary=".\pd-msvc\r/py.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\pd-msvc\r/py.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="PD Shared Debug|Win32"
- OutputDirectory=".\pd-msvc\sd"
- IntermediateDirectory=".\pd-msvc\sd"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="&quot;c:\data\prog\pd\pd-cvs\src&quot;;c:\data\prog\packs\pthreads;..\flext\source;&quot;C:\data\prog\packs\Python-2.4\include&quot;;&quot;C:\data\prog\packs\Python-2.4\PC&quot;"
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;PY_EXPORTS;FLEXT_SYS=2;FLEXT_SHARED"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="TRUE"
- UsePrecompiledHeader="2"
- BrowseInformation="1"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="4"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib pthreadVC.lib"
- OutputFile="$(outdir)/py.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="&quot;c:\data\prog\pd\pd-cvs/bin&quot;;c:\data\prog\packs\pthreads;&quot;c:\data\prog\packs\Python-2.4\PCbuild&quot;"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(outdir)/py.pdb"
- ImportLibrary="$(outdir)/py.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="_DEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\pd-msvc\td/py.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="PD Shared Release|Win32"
- OutputDirectory=".\pd-msvc\sr"
- IntermediateDirectory=".\pd-msvc\sr"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- GlobalOptimizations="TRUE"
- InlineFunctionExpansion="2"
- OmitFramePointers="TRUE"
- OptimizeForProcessor="3"
- AdditionalIncludeDirectories="&quot;c:\data\prog\pd\pd-cvs\src&quot;;c:\data\prog\packs\pthreads;..\flext\source;C:\Programme\prog\Python24\include"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;PY_EXPORTS;FLEXT_SYS=2;FLEXT_SHARED"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- RuntimeTypeInfo="TRUE"
- UsePrecompiledHeader="2"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib pthreadVC.lib"
- OutputFile="$(outdir)\py.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="&quot;..\flext\pd-msvc&quot;;&quot;c:\data\prog\pd\pd-cvs/bin&quot;;c:\data\prog\packs\pthreads;C:\Programme\prog\Python24\libs"
- ProgramDatabaseFile=".\pd-msvc\tr/py.pdb"
- ImportLibrary="$(outdir)/py.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\pd-msvc\tr/py.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Max Shared Debug|Win32"
- OutputDirectory=".\max-msvc\sd"
- IntermediateDirectory=".\max-msvc\sd"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="&quot;F:\prog\audio\MaxWinSDK\c74support\msp-includes&quot;;&quot;F:\prog\audio\MaxWinSDK\c74support\max-includes&quot;;f:\prog\packs\pthreads;f:\prog\max\flext\source;C:\Programme\prog\Python23\include"
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;PY_EXPORTS;FLEXT_SYS=1;FLEXT_SHARED"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- StructMemberAlignment="2"
- RuntimeTypeInfo="TRUE"
- UsePrecompiledHeader="2"
- BrowseInformation="1"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="4"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="maxapi.lib maxext.lib maxaudio.lib pthreadVC.lib"
- OutputFile="$(outdir)/py.mxe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="&quot;F:\prog\audio\MaxWinSDK\c74support\msp-includes\win-includes\debug&quot;;&quot;F:\prog\audio\MaxWinSDK\c74support\max-includes\win-includes\debug&quot;;f:\prog\packs\pthreads;&quot;f:\prog\packs\Python-2.3.2\PCbuild&quot;"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(intdir)/py.pdb"
- ImportLibrary="$(intdir)/py.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="_DEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\pd-msvc\td/py.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Max Threaded Debug|Win32"
- OutputDirectory=".\max-msvc\td"
- IntermediateDirectory=".\max-msvc\td"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="&quot;C:\data\prog\audio\maxmspsdk_win\4.5 headers\c74support\msp-includes&quot;;&quot;C:\data\prog\audio\maxmspsdk_win\4.5 headers\c74support\max-includes&quot;;..\flext\source;C:\Programme\prog\Python24\include"
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;PY_EXPORTS;FLEXT_SYS=1;FLEXT_THREADS;_WIN32_WINNT=0x501;PY_NODSP"
- BasicRuntimeChecks="3"
- RuntimeLibrary="1"
- StructMemberAlignment="2"
- RuntimeTypeInfo="TRUE"
- UsePrecompiledHeader="2"
- BrowseInformation="1"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="4"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="maxapi.lib maxaudio.lib"
- OutputFile="&quot;C:\Programme\Gemeinsame Dateien\Cycling &apos;74\externals\flext\py.mxe&quot;"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="&quot;C:\data\prog\audio\maxmspsdk_win\4.5 headers\c74support\msp-includes&quot;;&quot;C:\data\prog\audio\maxmspsdk_win\4.5 headers\c74support\max-includes&quot;;&quot;c:\data\prog\packs\Python-2.4\PCbuild&quot;"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(intdir)/py.pdb"
- ImportLibrary="$(intdir)/py.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="_DEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\pd-msvc\td/py.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Max Threaded Release|Win32"
- OutputDirectory=".\max-msvc\tr"
- IntermediateDirectory=".\max-msvc\tr"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- GlobalOptimizations="FALSE"
- FavorSizeOrSpeed="1"
- AdditionalIncludeDirectories="&quot;C:\data\prog\audio\maxmspsdk_win\4.5 headers\c74support\msp-includes&quot;;&quot;C:\data\prog\audio\maxmspsdk_win\4.5 headers\c74support\max-includes&quot;;..\flext\source;C:\Programme\prog\Python24\include"
- PreprocessorDefinitions="WIN32;_WINDOWS;_USRDLL;PY_EXPORTS;FLEXT_SYS=1;FLEXT_THREADS"
- BasicRuntimeChecks="3"
- RuntimeLibrary="0"
- StructMemberAlignment="2"
- EnableEnhancedInstructionSet="1"
- RuntimeTypeInfo="TRUE"
- UsePrecompiledHeader="2"
- BrowseInformation="1"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="0"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="maxapi.lib maxaudio.lib"
- OutputFile="./max-msvc/py.mxe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="&quot;C:\data\prog\audio\maxmspsdk_win\4.5 headers\c74support\msp-includes&quot;;&quot;C:\data\prog\audio\maxmspsdk_win\4.5 headers\c74support\max-includes&quot;;C:\Programme\prog\Python24\libs"
- GenerateDebugInformation="FALSE"
- ProgramDatabaseFile="$(intdir)/py.pdb"
- ImportLibrary="$(intdir)/py.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="_DEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\pd-msvc\td/py.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="scripts"
- Filter="">
- <File
- RelativePath="scripts\script.py">
- </File>
- <File
- RelativePath="scripts\sendrecv.py">
- </File>
- <File
- RelativePath="scripts\simple.py">
- </File>
- <File
- RelativePath="scripts\tcltk.py">
- </File>
- <File
- RelativePath="scripts\threads.py">
- </File>
- </Filter>
- <Filter
- Name="doc"
- Filter="">
- <File
- RelativePath="gpl.txt">
- </File>
- <File
- RelativePath="license.txt">
- </File>
- <File
- RelativePath="readme.txt">
- </File>
- </Filter>
- <Filter
- Name="make"
- Filter="">
- <File
- RelativePath=".\package.txt">
- </File>
- </Filter>
- <Filter
- Name="ext"
- Filter="">
- <File
- RelativePath="source\bound.cpp">
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\clmeth.cpp">
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\pyext.cpp">
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\pyext.h">
- </File>
- </Filter>
- <Filter
- Name="base"
- Filter="">
- <File
- RelativePath="source\modmeth.cpp">
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\pyargs.cpp">
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath=".\source\pybase.cpp">
- </File>
- <File
- RelativePath=".\source\pybase.h">
- </File>
- <File
- RelativePath=".\source\pybundle.cpp">
- </File>
- <File
- RelativePath=".\source\pybundle.h">
- </File>
- <File
- RelativePath="source\register.cpp">
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- </Filter>
- <Filter
- Name="array"
- Filter="">
- <File
- RelativePath=".\source\pybuffer.cpp">
- </File>
- <File
- RelativePath=".\source\pybuffer.h">
- </File>
- <File
- RelativePath=".\source\pydsp.cpp">
- </File>
- </Filter>
- <Filter
- Name="sym"
- Filter="">
- <File
- RelativePath=".\source\pysymbol.cpp">
- </File>
- <File
- RelativePath=".\source\pysymbol.h">
- </File>
- </Filter>
- <Filter
- Name="atom"
- Filter="">
- <File
- RelativePath=".\source\pyatom.cpp">
- </File>
- <File
- RelativePath=".\source\pyatom.h">
- </File>
- </Filter>
- <Filter
- Name="obj"
- Filter="">
- <File
- RelativePath="source\py.cpp">
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath=".\source\pymeth.cpp">
- </File>
- </Filter>
- <File
- RelativePath="source\main.cpp">
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Threaded Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\main.h">
- </File>
- <File
- RelativePath=".\source\pyprefix.h">
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/externals/grill/py/py.xcode/project.pbxproj b/externals/grill/py/py.xcode/project.pbxproj
deleted file mode 100644
index 48155944..00000000
--- a/externals/grill/py/py.xcode/project.pbxproj
+++ /dev/null
@@ -1,995 +0,0 @@
-// !$*UTF8*$!
-{
- archiveVersion = 1;
- classes = {
- };
- objectVersion = 39;
- objects = {
- 089C1669FE841209C02AAC07 = {
- buildSettings = {
- };
- buildStyles = (
- 4F9091AC011F3BD104CA0E50,
- 4F9091AD011F3BD104CA0E50,
- );
- hasScannedForEncodings = 1;
- isa = PBXProject;
- mainGroup = 089C166AFE841209C02AAC07;
- projectDirPath = "";
- targets = (
- E90E52E508092505001341AC,
- E926B6D2089F75950034D534,
- );
- };
- 089C166AFE841209C02AAC07 = {
- children = (
- 08FB77ADFE841716C02AAC07,
- 089C1671FE841209C02AAC07,
- 19C28FB4FE9D528D11CA2CBB,
- E926B6D4089F75950034D534,
- );
- isa = PBXGroup;
- name = py;
- refType = 4;
- sourceTree = "<group>";
- };
- 089C1671FE841209C02AAC07 = {
- children = (
- E9D6762D08FC61860039A6F6,
- E9D6762E08FC61860039A6F6,
- E9D6762F08FC61860039A6F6,
- E9D6763008FC61860039A6F6,
- E926B819089F78400034D534,
- E926B817089F782F0034D534,
- E90E52D208091F79001341AC,
- E90E521108091CA5001341AC,
- E90E51FB080919EC001341AC,
- );
- isa = PBXGroup;
- name = "External Frameworks and Libraries";
- refType = 4;
- sourceTree = "<group>";
- };
- 08FB77ADFE841716C02AAC07 = {
- children = (
- E903AC8C09D32D03004755CA,
- E903AC8D09D32D03004755CA,
- E90043820887A302008AEAFC,
- E90043830887A302008AEAFC,
- E90043840887A302008AEAFC,
- E90043850887A302008AEAFC,
- E90043860887A302008AEAFC,
- E90E51DB08091989001341AC,
- E90E51DC08091989001341AC,
- E90E51DD08091989001341AC,
- E90E51DE08091989001341AC,
- E90E51DF08091989001341AC,
- E90E51E008091989001341AC,
- E90E51E108091989001341AC,
- E90E51E208091989001341AC,
- E90E51E308091989001341AC,
- E90E51E408091989001341AC,
- E90E51E508091989001341AC,
- E90E51E608091989001341AC,
- E90E51E708091989001341AC,
- E90E51E808091989001341AC,
- E90E51E908091989001341AC,
- E90E51EA08091989001341AC,
- );
- isa = PBXGroup;
- name = Source;
- refType = 4;
- sourceTree = "<group>";
- };
-//080
-//081
-//082
-//083
-//084
-//190
-//191
-//192
-//193
-//194
- 19C28FB4FE9D528D11CA2CBB = {
- children = (
- E90E52E608092505001341AC,
- E926B6D3089F75950034D534,
- );
- isa = PBXGroup;
- name = Products;
- refType = 4;
- sourceTree = "<group>";
- };
-//190
-//191
-//192
-//193
-//194
-//4F0
-//4F1
-//4F2
-//4F3
-//4F4
- 4F9091AC011F3BD104CA0E50 = {
- buildSettings = {
- COPY_PHASE_STRIP = NO;
- DEBUGGING_SYMBOLS = YES;
- GCC_DYNAMIC_NO_PIC = NO;
- GCC_ENABLE_FIX_AND_CONTINUE = YES;
- GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
- GCC_OPTIMIZATION_LEVEL = 0;
- GCC_PREPROCESSOR_DEFINITIONS = "$(GCC_PREPROCESSOR_DEFINITIONS) FLEXT_DEBUG FLEXT_THREADS";
- LIBRARY_STYLE = STATIC;
- OPTIMIZATION_CFLAGS = "-O0";
- ZERO_LINK = YES;
- };
- isa = PBXBuildStyle;
- name = Development;
- };
- 4F9091AD011F3BD104CA0E50 = {
- buildSettings = {
- COPY_PHASE_STRIP = YES;
- GCC_ENABLE_FIX_AND_CONTINUE = NO;
- GCC_PREPROCESSOR_DEFINITIONS = "$(GCC_PREPROCESSOR_DEFINITIONS) FLEXT_SHARED";
- ZERO_LINK = NO;
- };
- isa = PBXBuildStyle;
- name = Deployment;
- };
-//4F0
-//4F1
-//4F2
-//4F3
-//4F4
-//E90
-//E91
-//E92
-//E93
-//E94
- E90043820887A302008AEAFC = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = pyatom.cpp;
- path = source/pyatom.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- E90043830887A302008AEAFC = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = pyatom.h;
- path = source/pyatom.h;
- refType = 4;
- sourceTree = "<group>";
- };
- E90043840887A302008AEAFC = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = pybase.cpp;
- path = source/pybase.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- E90043850887A302008AEAFC = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = pybase.h;
- path = source/pybase.h;
- refType = 4;
- sourceTree = "<group>";
- };
- E90043860887A302008AEAFC = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = pymeth.cpp;
- path = source/pymeth.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- E90043870887A302008AEAFC = {
- fileRef = E90043820887A302008AEAFC;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E90043880887A302008AEAFC = {
- fileRef = E90043830887A302008AEAFC;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E90043890887A302008AEAFC = {
- fileRef = E90043840887A302008AEAFC;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E900438A0887A302008AEAFC = {
- fileRef = E90043850887A302008AEAFC;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E900438B0887A302008AEAFC = {
- fileRef = E90043860887A302008AEAFC;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E903AC8C09D32D03004755CA = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = pybundle.cpp;
- path = source/pybundle.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- E903AC8D09D32D03004755CA = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = pybundle.h;
- path = source/pybundle.h;
- refType = 4;
- sourceTree = "<group>";
- };
- E903AC8E09D32D03004755CA = {
- fileRef = E903AC8C09D32D03004755CA;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E903AC8F09D32D03004755CA = {
- fileRef = E903AC8D09D32D03004755CA;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E903AC9009D32D03004755CA = {
- fileRef = E903AC8C09D32D03004755CA;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E903AC9109D32D03004755CA = {
- fileRef = E903AC8D09D32D03004755CA;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E90E51DB08091989001341AC = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = bound.cpp;
- path = source/bound.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- E90E51DC08091989001341AC = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = clmeth.cpp;
- path = source/clmeth.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- E90E51DD08091989001341AC = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = main.cpp;
- path = source/main.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- E90E51DE08091989001341AC = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = main.h;
- path = source/main.h;
- refType = 4;
- sourceTree = "<group>";
- };
- E90E51DF08091989001341AC = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = modmeth.cpp;
- path = source/modmeth.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- E90E51E008091989001341AC = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = py.cpp;
- path = source/py.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- E90E51E108091989001341AC = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = pyargs.cpp;
- path = source/pyargs.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- E90E51E208091989001341AC = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = pybuffer.cpp;
- path = source/pybuffer.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- E90E51E308091989001341AC = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = pybuffer.h;
- path = source/pybuffer.h;
- refType = 4;
- sourceTree = "<group>";
- };
- E90E51E408091989001341AC = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = pydsp.cpp;
- path = source/pydsp.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- E90E51E508091989001341AC = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = pyext.cpp;
- path = source/pyext.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- E90E51E608091989001341AC = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = pyext.h;
- path = source/pyext.h;
- refType = 4;
- sourceTree = "<group>";
- };
- E90E51E708091989001341AC = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = pyprefix.h;
- path = source/pyprefix.h;
- refType = 4;
- sourceTree = "<group>";
- };
- E90E51E808091989001341AC = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = pysymbol.cpp;
- path = source/pysymbol.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- E90E51E908091989001341AC = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = pysymbol.h;
- path = source/pysymbol.h;
- refType = 4;
- sourceTree = "<group>";
- };
- E90E51EA08091989001341AC = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = register.cpp;
- path = source/register.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- E90E51FB080919EC001341AC = {
- isa = PBXFileReference;
- lastKnownFileType = wrapper.framework;
- name = Python.framework;
- path = /System/Library/Frameworks/Python.framework;
- refType = 0;
- sourceTree = "<absolute>";
- };
- E90E521108091CA5001341AC = {
- isa = PBXFileReference;
- lastKnownFileType = wrapper.framework;
- name = ApplicationServices.framework;
- path = /System/Library/Frameworks/ApplicationServices.framework;
- refType = 0;
- sourceTree = "<absolute>";
- };
- E90E52D208091F79001341AC = {
- isa = PBXFileReference;
- lastKnownFileType = wrapper.framework;
- name = vecLib.framework;
- path = /System/Library/Frameworks/vecLib.framework;
- refType = 0;
- sourceTree = "<absolute>";
- };
- E90E52E208092505001341AC = {
- buildActionMask = 2147483647;
- files = (
- E90E52E908092581001341AC,
- E90E52EA08092581001341AC,
- E90E52EB08092581001341AC,
- E90E52EC08092581001341AC,
- E90E52ED08092581001341AC,
- E90043880887A302008AEAFC,
- E900438A0887A302008AEAFC,
- E903AC9109D32D03004755CA,
- );
- isa = PBXHeadersBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- E90E52E308092505001341AC = {
- buildActionMask = 2147483647;
- files = (
- E90E52EE0809258A001341AC,
- E90E52EF0809258A001341AC,
- E90E52F00809258A001341AC,
- E90E52F10809258A001341AC,
- E90E52F20809258A001341AC,
- E90E52F30809258A001341AC,
- E90E52F40809258A001341AC,
- E90E52F50809258A001341AC,
- E90E52F60809258A001341AC,
- E90E52F70809258A001341AC,
- E90E52F80809258A001341AC,
- E90043870887A302008AEAFC,
- E90043890887A302008AEAFC,
- E900438B0887A302008AEAFC,
- E903AC9009D32D03004755CA,
- );
- isa = PBXSourcesBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- E90E52E408092505001341AC = {
- buildActionMask = 2147483647;
- files = (
- E9D6763108FC619F0039A6F6,
- E9D6763208FC619F0039A6F6,
- E90E535B08092593001341AC,
- E90E535D08092593001341AC,
- E90E535E08092593001341AC,
- );
- isa = PBXFrameworksBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- E90E52E508092505001341AC = {
- buildPhases = (
- E90E52E208092505001341AC,
- E90E52E308092505001341AC,
- E90E52E408092505001341AC,
- );
- buildRules = (
- );
- buildSettings = {
- DYLIB_COMPATIBILITY_VERSION = 1;
- DYLIB_CURRENT_VERSION = 1;
- EXECUTABLE_EXTENSION = pd_darwin;
- GCC_ALTIVEC_EXTENSIONS = YES;
- GCC_MODEL_CPU = G4;
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_PREFIX_HEADER = source/pyprefix.h;
- GCC_PREPROCESSOR_DEFINITIONS = "FLEXT_SYS=2";
- HEADER_SEARCH_PATHS = "$(flext)/source $(PDApp)/src";
- INSTALL_PATH = "$(PDApp)/extra";
- LIBRARY_SEARCH_PATHS = "$(flext)/build";
- LIBRARY_STYLE = DYNAMIC;
- OTHER_CFLAGS = "";
- OTHER_LDFLAGS = "-bundle_loader $(PDApp)/bin/pd";
- OTHER_REZFLAGS = "";
- PRODUCT_NAME = py;
- SECTORDER_FLAGS = "";
- WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas";
- };
- dependencies = (
- );
- isa = PBXNativeTarget;
- name = py.pd_darwin;
- productName = py;
- productReference = E90E52E608092505001341AC;
- productType = "com.apple.product-type.library.dynamic";
- };
- E90E52E608092505001341AC = {
- explicitFileType = "compiled.mach-o.dylib";
- includeInIndex = 0;
- isa = PBXFileReference;
- path = py.pd_darwin;
- refType = 3;
- sourceTree = BUILT_PRODUCTS_DIR;
- };
- E90E52E908092581001341AC = {
- fileRef = E90E51DE08091989001341AC;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E90E52EA08092581001341AC = {
- fileRef = E90E51E308091989001341AC;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E90E52EB08092581001341AC = {
- fileRef = E90E51E608091989001341AC;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E90E52EC08092581001341AC = {
- fileRef = E90E51E708091989001341AC;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E90E52ED08092581001341AC = {
- fileRef = E90E51E908091989001341AC;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E90E52EE0809258A001341AC = {
- fileRef = E90E51DB08091989001341AC;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E90E52EF0809258A001341AC = {
- fileRef = E90E51DC08091989001341AC;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E90E52F00809258A001341AC = {
- fileRef = E90E51DD08091989001341AC;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E90E52F10809258A001341AC = {
- fileRef = E90E51DF08091989001341AC;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E90E52F20809258A001341AC = {
- fileRef = E90E51E008091989001341AC;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E90E52F30809258A001341AC = {
- fileRef = E90E51E108091989001341AC;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E90E52F40809258A001341AC = {
- fileRef = E90E51E208091989001341AC;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E90E52F50809258A001341AC = {
- fileRef = E90E51E408091989001341AC;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E90E52F60809258A001341AC = {
- fileRef = E90E51E508091989001341AC;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E90E52F70809258A001341AC = {
- fileRef = E90E51E808091989001341AC;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E90E52F80809258A001341AC = {
- fileRef = E90E51EA08091989001341AC;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E90E535B08092593001341AC = {
- fileRef = E90E51FB080919EC001341AC;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E90E535D08092593001341AC = {
- fileRef = E90E521108091CA5001341AC;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E90E535E08092593001341AC = {
- fileRef = E90E52D208091F79001341AC;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E926B6CF089F75950034D534 = {
- buildActionMask = 2147483647;
- files = (
- E903AC8F09D32D03004755CA,
- );
- isa = PBXResourcesBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- E926B6D0089F75950034D534 = {
- buildActionMask = 2147483647;
- files = (
- E926B6D8089F76D90034D534,
- E926B6D9089F76D90034D534,
- E926B6DA089F76D90034D534,
- E926B6DB089F76D90034D534,
- E926B6DC089F76D90034D534,
- E926B6DD089F76D90034D534,
- E926B6DE089F76D90034D534,
- E926B6DF089F76D90034D534,
- E926B6E0089F76D90034D534,
- E926B6E1089F76D90034D534,
- E926B6E2089F76D90034D534,
- E926B6E3089F76D90034D534,
- E926B6E4089F76D90034D534,
- E926B6E5089F76D90034D534,
- E926B6E6089F76D90034D534,
- E926B6E7089F76D90034D534,
- E926B6E8089F76D90034D534,
- E926B6E9089F76D90034D534,
- E926B6EA089F76D90034D534,
- E926B6EB089F76D90034D534,
- E926B6EC089F76D90034D534,
- E903AC8E09D32D03004755CA,
- );
- isa = PBXSourcesBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- E926B6D1089F75950034D534 = {
- buildActionMask = 2147483647;
- files = (
- E9D6763308FC61A40039A6F6,
- E9D6763408FC61A40039A6F6,
- E926B833089F7CB50034D534,
- E926B7B6089F77B90034D534,
- E926B6F4089F77B20034D534,
- E926B818089F782F0034D534,
- E926B81A089F78400034D534,
- );
- isa = PBXFrameworksBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- E926B6D2089F75950034D534 = {
- buildPhases = (
- E926B6CF089F75950034D534,
- E926B6D0089F75950034D534,
- E926B6D1089F75950034D534,
- );
- buildRules = (
- );
- buildSettings = {
- GCC_ALTIVEC_EXTENSIONS = YES;
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_PREFIX_HEADER = source/pyprefix.h;
- GCC_PREPROCESSOR_DEFINITIONS = "FLEXT_SYS=1";
- GENERATE_PKGINFO_FILE = YES;
- HEADER_SEARCH_PATHS = "$(flext)/source $(MaxSDK)/max-includes $(MaxSDK)/msp-includes";
- INFOPLIST_FILE = "py-Info.plist";
- LIBRARY_SEARCH_PATHS = "$(MaxSDK)/max-includes $(MaxSDK)/msp-includes";
- OTHER_CFLAGS = "";
- OTHER_REZFLAGS = "";
- PRODUCT_NAME = py;
- SECTORDER_FLAGS = "";
- SKIP_INSTALL = YES;
- WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas";
- WRAPPER_EXTENSION = mxo;
- };
- dependencies = (
- );
- isa = PBXNativeTarget;
- name = py;
- productName = py;
- productReference = E926B6D3089F75950034D534;
- productSettingsXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
-<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
-<plist version=\"1.0\">
-<dict>
- <key>CFBundleDevelopmentRegion</key>
- <string>English</string>
- <key>CFBundleExecutable</key>
- <string>py</string>
- <key>CFBundleIdentifier</key>
- <string>com.yourcompany.py</string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundlePackageType</key>
- <string>APPL</string>
- <key>CFBundleSignature</key>
- <string>????</string>
- <key>CFBundleVersion</key>
- <string>1.0</string>
- <key>CSResourcesFileMapped</key>
- <string>yes</string>
-</dict>
-</plist>
-";
- productType = "com.apple.product-type.bundle";
- };
- E926B6D3089F75950034D534 = {
- explicitFileType = wrapper.cfbundle;
- includeInIndex = 0;
- isa = PBXFileReference;
- path = py.mxo;
- refType = 3;
- sourceTree = BUILT_PRODUCTS_DIR;
- };
- E926B6D4089F75950034D534 = {
- isa = PBXFileReference;
- lastKnownFileType = text.xml;
- name = "py-Info.plist";
- path = "/Users/thomas/Develop/pdmax/py/py-Info.plist";
- refType = 0;
- sourceTree = "<absolute>";
- };
- E926B6D8089F76D90034D534 = {
- fileRef = E90043820887A302008AEAFC;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E926B6D9089F76D90034D534 = {
- fileRef = E90043830887A302008AEAFC;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E926B6DA089F76D90034D534 = {
- fileRef = E90043840887A302008AEAFC;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E926B6DB089F76D90034D534 = {
- fileRef = E90043850887A302008AEAFC;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E926B6DC089F76D90034D534 = {
- fileRef = E90043860887A302008AEAFC;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E926B6DD089F76D90034D534 = {
- fileRef = E90E51DB08091989001341AC;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E926B6DE089F76D90034D534 = {
- fileRef = E90E51DC08091989001341AC;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E926B6DF089F76D90034D534 = {
- fileRef = E90E51DD08091989001341AC;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E926B6E0089F76D90034D534 = {
- fileRef = E90E51DE08091989001341AC;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E926B6E1089F76D90034D534 = {
- fileRef = E90E51DF08091989001341AC;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E926B6E2089F76D90034D534 = {
- fileRef = E90E51E008091989001341AC;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E926B6E3089F76D90034D534 = {
- fileRef = E90E51E108091989001341AC;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E926B6E4089F76D90034D534 = {
- fileRef = E90E51E208091989001341AC;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E926B6E5089F76D90034D534 = {
- fileRef = E90E51E308091989001341AC;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E926B6E6089F76D90034D534 = {
- fileRef = E90E51E408091989001341AC;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E926B6E7089F76D90034D534 = {
- fileRef = E90E51E508091989001341AC;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E926B6E8089F76D90034D534 = {
- fileRef = E90E51E608091989001341AC;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E926B6E9089F76D90034D534 = {
- fileRef = E90E51E708091989001341AC;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E926B6EA089F76D90034D534 = {
- fileRef = E90E51E808091989001341AC;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E926B6EB089F76D90034D534 = {
- fileRef = E90E51E908091989001341AC;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E926B6EC089F76D90034D534 = {
- fileRef = E90E51EA08091989001341AC;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E926B6F4089F77B20034D534 = {
- fileRef = E90E52D208091F79001341AC;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E926B7B6089F77B90034D534 = {
- fileRef = E90E51FB080919EC001341AC;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E926B817089F782F0034D534 = {
- isa = PBXFileReference;
- lastKnownFileType = wrapper.framework;
- name = MaxAPI.framework;
- path = /Library/Frameworks/MaxAPI.framework;
- refType = 0;
- sourceTree = "<absolute>";
- };
- E926B818089F782F0034D534 = {
- fileRef = E926B817089F782F0034D534;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E926B819089F78400034D534 = {
- isa = PBXFileReference;
- lastKnownFileType = wrapper.framework;
- name = MaxAudioAPI.framework;
- path = /Library/Frameworks/MaxAudioAPI.framework;
- refType = 0;
- sourceTree = "<absolute>";
- };
- E926B81A089F78400034D534 = {
- fileRef = E926B819089F78400034D534;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E926B833089F7CB50034D534 = {
- fileRef = E90E521108091CA5001341AC;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9D6762D08FC61860039A6F6 = {
- isa = PBXFileReference;
- lastKnownFileType = "compiled.mach-o.dylib";
- name = "libflext-max_d.dylib";
- path = "/usr/local/lib/libflext-max_d.dylib";
- refType = 0;
- sourceTree = "<absolute>";
- };
- E9D6762E08FC61860039A6F6 = {
- isa = PBXFileReference;
- lastKnownFileType = "compiled.mach-o.dylib";
- name = "libflext-max.dylib";
- path = "/usr/local/lib/libflext-max.dylib";
- refType = 0;
- sourceTree = "<absolute>";
- };
- E9D6762F08FC61860039A6F6 = {
- isa = PBXFileReference;
- lastKnownFileType = "compiled.mach-o.dylib";
- name = "libflext-pd_d.dylib";
- path = "/usr/local/lib/libflext-pd_d.dylib";
- refType = 0;
- sourceTree = "<absolute>";
- };
- E9D6763008FC61860039A6F6 = {
- isa = PBXFileReference;
- lastKnownFileType = "compiled.mach-o.dylib";
- name = "libflext-pd.dylib";
- path = "/usr/local/lib/libflext-pd.dylib";
- refType = 0;
- sourceTree = "<absolute>";
- };
- E9D6763108FC619F0039A6F6 = {
- fileRef = E9D6762F08FC61860039A6F6;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9D6763208FC619F0039A6F6 = {
- fileRef = E9D6763008FC61860039A6F6;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9D6763308FC61A40039A6F6 = {
- fileRef = E9D6762D08FC61860039A6F6;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9D6763408FC61A40039A6F6 = {
- fileRef = E9D6762E08FC61860039A6F6;
- isa = PBXBuildFile;
- settings = {
- };
- };
- };
- rootObject = 089C1669FE841209C02AAC07;
-}
diff --git a/externals/grill/py/py.xcodeproj/project.pbxproj b/externals/grill/py/py.xcodeproj/project.pbxproj
deleted file mode 100644
index 29d99ee7..00000000
--- a/externals/grill/py/py.xcodeproj/project.pbxproj
+++ /dev/null
@@ -1,661 +0,0 @@
-// !$*UTF8*$!
-{
- archiveVersion = 1;
- classes = {
- };
- objectVersion = 42;
- objects = {
-
-/* Begin PBXBuildFile section */
- E90043870887A302008AEAFC /* pyatom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E90043820887A302008AEAFC /* pyatom.cpp */; };
- E90043880887A302008AEAFC /* pyatom.h in Headers */ = {isa = PBXBuildFile; fileRef = E90043830887A302008AEAFC /* pyatom.h */; };
- E90043890887A302008AEAFC /* pybase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E90043840887A302008AEAFC /* pybase.cpp */; };
- E900438A0887A302008AEAFC /* pybase.h in Headers */ = {isa = PBXBuildFile; fileRef = E90043850887A302008AEAFC /* pybase.h */; };
- E900438B0887A302008AEAFC /* pymeth.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E90043860887A302008AEAFC /* pymeth.cpp */; };
- E903AC8E09D32D03004755CA /* pybundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E903AC8C09D32D03004755CA /* pybundle.cpp */; };
- E903AC8F09D32D03004755CA /* pybundle.h in Resources */ = {isa = PBXBuildFile; fileRef = E903AC8D09D32D03004755CA /* pybundle.h */; };
- E903AC9009D32D03004755CA /* pybundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E903AC8C09D32D03004755CA /* pybundle.cpp */; };
- E903AC9109D32D03004755CA /* pybundle.h in Headers */ = {isa = PBXBuildFile; fileRef = E903AC8D09D32D03004755CA /* pybundle.h */; };
- E90E52E908092581001341AC /* main.h in Headers */ = {isa = PBXBuildFile; fileRef = E90E51DE08091989001341AC /* main.h */; };
- E90E52EA08092581001341AC /* pybuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = E90E51E308091989001341AC /* pybuffer.h */; };
- E90E52EB08092581001341AC /* pyext.h in Headers */ = {isa = PBXBuildFile; fileRef = E90E51E608091989001341AC /* pyext.h */; };
- E90E52EC08092581001341AC /* pyprefix.h in Headers */ = {isa = PBXBuildFile; fileRef = E90E51E708091989001341AC /* pyprefix.h */; };
- E90E52ED08092581001341AC /* pysymbol.h in Headers */ = {isa = PBXBuildFile; fileRef = E90E51E908091989001341AC /* pysymbol.h */; };
- E90E52EE0809258A001341AC /* bound.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E90E51DB08091989001341AC /* bound.cpp */; };
- E90E52EF0809258A001341AC /* clmeth.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E90E51DC08091989001341AC /* clmeth.cpp */; };
- E90E52F00809258A001341AC /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E90E51DD08091989001341AC /* main.cpp */; };
- E90E52F10809258A001341AC /* modmeth.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E90E51DF08091989001341AC /* modmeth.cpp */; };
- E90E52F20809258A001341AC /* py.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E90E51E008091989001341AC /* py.cpp */; };
- E90E52F30809258A001341AC /* pyargs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E90E51E108091989001341AC /* pyargs.cpp */; };
- E90E52F40809258A001341AC /* pybuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E90E51E208091989001341AC /* pybuffer.cpp */; };
- E90E52F50809258A001341AC /* pydsp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E90E51E408091989001341AC /* pydsp.cpp */; };
- E90E52F60809258A001341AC /* pyext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E90E51E508091989001341AC /* pyext.cpp */; };
- E90E52F70809258A001341AC /* pysymbol.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E90E51E808091989001341AC /* pysymbol.cpp */; };
- E90E52F80809258A001341AC /* register.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E90E51EA08091989001341AC /* register.cpp */; };
- E90E535D08092593001341AC /* ApplicationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E90E521108091CA5001341AC /* ApplicationServices.framework */; };
- E90E535E08092593001341AC /* vecLib.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E90E52D208091F79001341AC /* vecLib.framework */; };
- E926B6D8089F76D90034D534 /* pyatom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E90043820887A302008AEAFC /* pyatom.cpp */; };
- E926B6D9089F76D90034D534 /* pyatom.h in Sources */ = {isa = PBXBuildFile; fileRef = E90043830887A302008AEAFC /* pyatom.h */; };
- E926B6DA089F76D90034D534 /* pybase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E90043840887A302008AEAFC /* pybase.cpp */; };
- E926B6DB089F76D90034D534 /* pybase.h in Sources */ = {isa = PBXBuildFile; fileRef = E90043850887A302008AEAFC /* pybase.h */; };
- E926B6DC089F76D90034D534 /* pymeth.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E90043860887A302008AEAFC /* pymeth.cpp */; };
- E926B6DD089F76D90034D534 /* bound.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E90E51DB08091989001341AC /* bound.cpp */; };
- E926B6DE089F76D90034D534 /* clmeth.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E90E51DC08091989001341AC /* clmeth.cpp */; };
- E926B6DF089F76D90034D534 /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E90E51DD08091989001341AC /* main.cpp */; };
- E926B6E0089F76D90034D534 /* main.h in Sources */ = {isa = PBXBuildFile; fileRef = E90E51DE08091989001341AC /* main.h */; };
- E926B6E1089F76D90034D534 /* modmeth.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E90E51DF08091989001341AC /* modmeth.cpp */; };
- E926B6E2089F76D90034D534 /* py.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E90E51E008091989001341AC /* py.cpp */; };
- E926B6E3089F76D90034D534 /* pyargs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E90E51E108091989001341AC /* pyargs.cpp */; };
- E926B6E4089F76D90034D534 /* pybuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E90E51E208091989001341AC /* pybuffer.cpp */; };
- E926B6E5089F76D90034D534 /* pybuffer.h in Sources */ = {isa = PBXBuildFile; fileRef = E90E51E308091989001341AC /* pybuffer.h */; };
- E926B6E6089F76D90034D534 /* pydsp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E90E51E408091989001341AC /* pydsp.cpp */; };
- E926B6E7089F76D90034D534 /* pyext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E90E51E508091989001341AC /* pyext.cpp */; };
- E926B6E8089F76D90034D534 /* pyext.h in Sources */ = {isa = PBXBuildFile; fileRef = E90E51E608091989001341AC /* pyext.h */; };
- E926B6E9089F76D90034D534 /* pyprefix.h in Sources */ = {isa = PBXBuildFile; fileRef = E90E51E708091989001341AC /* pyprefix.h */; };
- E926B6EA089F76D90034D534 /* pysymbol.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E90E51E808091989001341AC /* pysymbol.cpp */; };
- E926B6EB089F76D90034D534 /* pysymbol.h in Sources */ = {isa = PBXBuildFile; fileRef = E90E51E908091989001341AC /* pysymbol.h */; };
- E926B6EC089F76D90034D534 /* register.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E90E51EA08091989001341AC /* register.cpp */; };
- E926B6F4089F77B20034D534 /* vecLib.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E90E52D208091F79001341AC /* vecLib.framework */; };
- E926B7B6089F77B90034D534 /* Python.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E90E51FB080919EC001341AC /* Python.framework */; };
- E926B818089F782F0034D534 /* MaxAPI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E926B817089F782F0034D534 /* MaxAPI.framework */; };
- E926B81A089F78400034D534 /* MaxAudioAPI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E926B819089F78400034D534 /* MaxAudioAPI.framework */; };
- E926B833089F7CB50034D534 /* ApplicationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E90E521108091CA5001341AC /* ApplicationServices.framework */; };
- E9D6763308FC61A40039A6F6 /* libflext-max_d.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = E9D6762D08FC61860039A6F6 /* libflext-max_d.dylib */; };
- E9D6763408FC61A40039A6F6 /* libflext-max.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = E9D6762E08FC61860039A6F6 /* libflext-max.dylib */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXFileReference section */
- E90043820887A302008AEAFC /* pyatom.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = pyatom.cpp; path = source/pyatom.cpp; sourceTree = "<group>"; };
- E90043830887A302008AEAFC /* pyatom.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = pyatom.h; path = source/pyatom.h; sourceTree = "<group>"; };
- E90043840887A302008AEAFC /* pybase.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = pybase.cpp; path = source/pybase.cpp; sourceTree = "<group>"; };
- E90043850887A302008AEAFC /* pybase.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = pybase.h; path = source/pybase.h; sourceTree = "<group>"; };
- E90043860887A302008AEAFC /* pymeth.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = pymeth.cpp; path = source/pymeth.cpp; sourceTree = "<group>"; };
- E903AC8C09D32D03004755CA /* pybundle.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = pybundle.cpp; path = source/pybundle.cpp; sourceTree = "<group>"; };
- E903AC8D09D32D03004755CA /* pybundle.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = pybundle.h; path = source/pybundle.h; sourceTree = "<group>"; };
- E90E51DB08091989001341AC /* bound.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = bound.cpp; path = source/bound.cpp; sourceTree = "<group>"; };
- E90E51DC08091989001341AC /* clmeth.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = clmeth.cpp; path = source/clmeth.cpp; sourceTree = "<group>"; };
- E90E51DD08091989001341AC /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = main.cpp; path = source/main.cpp; sourceTree = "<group>"; };
- E90E51DE08091989001341AC /* main.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = main.h; path = source/main.h; sourceTree = "<group>"; };
- E90E51DF08091989001341AC /* modmeth.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = modmeth.cpp; path = source/modmeth.cpp; sourceTree = "<group>"; };
- E90E51E008091989001341AC /* py.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = py.cpp; path = source/py.cpp; sourceTree = "<group>"; };
- E90E51E108091989001341AC /* pyargs.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = pyargs.cpp; path = source/pyargs.cpp; sourceTree = "<group>"; };
- E90E51E208091989001341AC /* pybuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = pybuffer.cpp; path = source/pybuffer.cpp; sourceTree = "<group>"; };
- E90E51E308091989001341AC /* pybuffer.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = pybuffer.h; path = source/pybuffer.h; sourceTree = "<group>"; };
- E90E51E408091989001341AC /* pydsp.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = pydsp.cpp; path = source/pydsp.cpp; sourceTree = "<group>"; };
- E90E51E508091989001341AC /* pyext.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = pyext.cpp; path = source/pyext.cpp; sourceTree = "<group>"; };
- E90E51E608091989001341AC /* pyext.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = pyext.h; path = source/pyext.h; sourceTree = "<group>"; };
- E90E51E708091989001341AC /* pyprefix.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = pyprefix.h; path = source/pyprefix.h; sourceTree = "<group>"; };
- E90E51E808091989001341AC /* pysymbol.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = pysymbol.cpp; path = source/pysymbol.cpp; sourceTree = "<group>"; };
- E90E51E908091989001341AC /* pysymbol.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = pysymbol.h; path = source/pysymbol.h; sourceTree = "<group>"; };
- E90E51EA08091989001341AC /* register.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = register.cpp; path = source/register.cpp; sourceTree = "<group>"; };
- E90E51FB080919EC001341AC /* Python.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Python.framework; path = /System/Library/Frameworks/Python.framework; sourceTree = "<absolute>"; };
- E90E521108091CA5001341AC /* ApplicationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ApplicationServices.framework; path = /System/Library/Frameworks/ApplicationServices.framework; sourceTree = "<absolute>"; };
- E90E52D208091F79001341AC /* vecLib.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = vecLib.framework; path = /System/Library/Frameworks/vecLib.framework; sourceTree = "<absolute>"; };
- E90E52E608092505001341AC /* py.pd_darwin */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = py.pd_darwin; sourceTree = BUILT_PRODUCTS_DIR; };
- E926B6D3089F75950034D534 /* py.mxo */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = py.mxo; sourceTree = BUILT_PRODUCTS_DIR; };
- E926B817089F782F0034D534 /* MaxAPI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MaxAPI.framework; path = /Library/Frameworks/MaxAPI.framework; sourceTree = "<absolute>"; };
- E926B819089F78400034D534 /* MaxAudioAPI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MaxAudioAPI.framework; path = /Library/Frameworks/MaxAudioAPI.framework; sourceTree = "<absolute>"; };
- E9D6762D08FC61860039A6F6 /* libflext-max_d.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libflext-max_d.dylib"; path = "/usr/local/lib/libflext-max_d.dylib"; sourceTree = "<absolute>"; };
- E9D6762E08FC61860039A6F6 /* libflext-max.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libflext-max.dylib"; path = "/usr/local/lib/libflext-max.dylib"; sourceTree = "<absolute>"; };
- E9D6762F08FC61860039A6F6 /* libflext-pd_d.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libflext-pd_d.dylib"; path = "/usr/local/lib/libflext-pd_d.dylib"; sourceTree = "<absolute>"; };
- E9D6763008FC61860039A6F6 /* libflext-pd.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libflext-pd.dylib"; path = "/usr/local/lib/libflext-pd.dylib"; sourceTree = "<absolute>"; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
- E90E52E408092505001341AC /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- E90E535D08092593001341AC /* ApplicationServices.framework in Frameworks */,
- E90E535E08092593001341AC /* vecLib.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- E926B6D1089F75950034D534 /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- E9D6763308FC61A40039A6F6 /* libflext-max_d.dylib in Frameworks */,
- E9D6763408FC61A40039A6F6 /* libflext-max.dylib in Frameworks */,
- E926B833089F7CB50034D534 /* ApplicationServices.framework in Frameworks */,
- E926B7B6089F77B90034D534 /* Python.framework in Frameworks */,
- E926B6F4089F77B20034D534 /* vecLib.framework in Frameworks */,
- E926B818089F782F0034D534 /* MaxAPI.framework in Frameworks */,
- E926B81A089F78400034D534 /* MaxAudioAPI.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
- 089C166AFE841209C02AAC07 /* py */ = {
- isa = PBXGroup;
- children = (
- 08FB77ADFE841716C02AAC07 /* Source */,
- 089C1671FE841209C02AAC07 /* External Frameworks and Libraries */,
- 19C28FB4FE9D528D11CA2CBB /* Products */,
- );
- name = py;
- sourceTree = "<group>";
- };
- 089C1671FE841209C02AAC07 /* External Frameworks and Libraries */ = {
- isa = PBXGroup;
- children = (
- E9D6762D08FC61860039A6F6 /* libflext-max_d.dylib */,
- E9D6762E08FC61860039A6F6 /* libflext-max.dylib */,
- E9D6762F08FC61860039A6F6 /* libflext-pd_d.dylib */,
- E9D6763008FC61860039A6F6 /* libflext-pd.dylib */,
- E926B819089F78400034D534 /* MaxAudioAPI.framework */,
- E926B817089F782F0034D534 /* MaxAPI.framework */,
- E90E52D208091F79001341AC /* vecLib.framework */,
- E90E521108091CA5001341AC /* ApplicationServices.framework */,
- E90E51FB080919EC001341AC /* Python.framework */,
- );
- name = "External Frameworks and Libraries";
- sourceTree = "<group>";
- };
- 08FB77ADFE841716C02AAC07 /* Source */ = {
- isa = PBXGroup;
- children = (
- E903AC8C09D32D03004755CA /* pybundle.cpp */,
- E903AC8D09D32D03004755CA /* pybundle.h */,
- E90043820887A302008AEAFC /* pyatom.cpp */,
- E90043830887A302008AEAFC /* pyatom.h */,
- E90043840887A302008AEAFC /* pybase.cpp */,
- E90043850887A302008AEAFC /* pybase.h */,
- E90043860887A302008AEAFC /* pymeth.cpp */,
- E90E51DB08091989001341AC /* bound.cpp */,
- E90E51DC08091989001341AC /* clmeth.cpp */,
- E90E51DD08091989001341AC /* main.cpp */,
- E90E51DE08091989001341AC /* main.h */,
- E90E51DF08091989001341AC /* modmeth.cpp */,
- E90E51E008091989001341AC /* py.cpp */,
- E90E51E108091989001341AC /* pyargs.cpp */,
- E90E51E208091989001341AC /* pybuffer.cpp */,
- E90E51E308091989001341AC /* pybuffer.h */,
- E90E51E408091989001341AC /* pydsp.cpp */,
- E90E51E508091989001341AC /* pyext.cpp */,
- E90E51E608091989001341AC /* pyext.h */,
- E90E51E708091989001341AC /* pyprefix.h */,
- E90E51E808091989001341AC /* pysymbol.cpp */,
- E90E51E908091989001341AC /* pysymbol.h */,
- E90E51EA08091989001341AC /* register.cpp */,
- );
- name = Source;
- sourceTree = "<group>";
- };
- 19C28FB4FE9D528D11CA2CBB /* Products */ = {
- isa = PBXGroup;
- children = (
- E90E52E608092505001341AC /* py.pd_darwin */,
- E926B6D3089F75950034D534 /* py.mxo */,
- );
- name = Products;
- sourceTree = "<group>";
- };
-/* End PBXGroup section */
-
-/* Begin PBXHeadersBuildPhase section */
- E90E52E208092505001341AC /* Headers */ = {
- isa = PBXHeadersBuildPhase;
- buildActionMask = 2147483647;
- files = (
- E90E52E908092581001341AC /* main.h in Headers */,
- E90E52EA08092581001341AC /* pybuffer.h in Headers */,
- E90E52EB08092581001341AC /* pyext.h in Headers */,
- E90E52EC08092581001341AC /* pyprefix.h in Headers */,
- E90E52ED08092581001341AC /* pysymbol.h in Headers */,
- E90043880887A302008AEAFC /* pyatom.h in Headers */,
- E900438A0887A302008AEAFC /* pybase.h in Headers */,
- E903AC9109D32D03004755CA /* pybundle.h in Headers */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXHeadersBuildPhase section */
-
-/* Begin PBXNativeTarget section */
- E90E52E508092505001341AC /* py.pd_darwin */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = E93C2D850A5DB6E70023B566 /* Build configuration list for PBXNativeTarget "py.pd_darwin" */;
- buildPhases = (
- E90E52E208092505001341AC /* Headers */,
- E90E52E308092505001341AC /* Sources */,
- E90E52E408092505001341AC /* Frameworks */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = py.pd_darwin;
- productName = py;
- productReference = E90E52E608092505001341AC /* py.pd_darwin */;
- productType = "com.apple.product-type.library.dynamic";
- };
- E926B6D2089F75950034D534 /* py */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = E93C2D890A5DB6E70023B566 /* Build configuration list for PBXNativeTarget "py" */;
- buildPhases = (
- E926B6CF089F75950034D534 /* Resources */,
- E926B6D0089F75950034D534 /* Sources */,
- E926B6D1089F75950034D534 /* Frameworks */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = py;
- productName = py;
- productReference = E926B6D3089F75950034D534 /* py.mxo */;
- productType = "com.apple.product-type.bundle";
- };
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
- 089C1669FE841209C02AAC07 /* Project object */ = {
- isa = PBXProject;
- buildConfigurationList = E93C2D8D0A5DB6E70023B566 /* Build configuration list for PBXProject "py" */;
- hasScannedForEncodings = 1;
- mainGroup = 089C166AFE841209C02AAC07 /* py */;
- projectDirPath = "";
- targets = (
- E90E52E508092505001341AC /* py.pd_darwin */,
- E926B6D2089F75950034D534 /* py */,
- );
- };
-/* End PBXProject section */
-
-/* Begin PBXResourcesBuildPhase section */
- E926B6CF089F75950034D534 /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- E903AC8F09D32D03004755CA /* pybundle.h in Resources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXResourcesBuildPhase section */
-
-/* Begin PBXSourcesBuildPhase section */
- E90E52E308092505001341AC /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- E90E52EE0809258A001341AC /* bound.cpp in Sources */,
- E90E52EF0809258A001341AC /* clmeth.cpp in Sources */,
- E90E52F00809258A001341AC /* main.cpp in Sources */,
- E90E52F10809258A001341AC /* modmeth.cpp in Sources */,
- E90E52F20809258A001341AC /* py.cpp in Sources */,
- E90E52F30809258A001341AC /* pyargs.cpp in Sources */,
- E90E52F40809258A001341AC /* pybuffer.cpp in Sources */,
- E90E52F50809258A001341AC /* pydsp.cpp in Sources */,
- E90E52F60809258A001341AC /* pyext.cpp in Sources */,
- E90E52F70809258A001341AC /* pysymbol.cpp in Sources */,
- E90E52F80809258A001341AC /* register.cpp in Sources */,
- E90043870887A302008AEAFC /* pyatom.cpp in Sources */,
- E90043890887A302008AEAFC /* pybase.cpp in Sources */,
- E900438B0887A302008AEAFC /* pymeth.cpp in Sources */,
- E903AC9009D32D03004755CA /* pybundle.cpp in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- E926B6D0089F75950034D534 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- E926B6D8089F76D90034D534 /* pyatom.cpp in Sources */,
- E926B6D9089F76D90034D534 /* pyatom.h in Sources */,
- E926B6DA089F76D90034D534 /* pybase.cpp in Sources */,
- E926B6DB089F76D90034D534 /* pybase.h in Sources */,
- E926B6DC089F76D90034D534 /* pymeth.cpp in Sources */,
- E926B6DD089F76D90034D534 /* bound.cpp in Sources */,
- E926B6DE089F76D90034D534 /* clmeth.cpp in Sources */,
- E926B6DF089F76D90034D534 /* main.cpp in Sources */,
- E926B6E0089F76D90034D534 /* main.h in Sources */,
- E926B6E1089F76D90034D534 /* modmeth.cpp in Sources */,
- E926B6E2089F76D90034D534 /* py.cpp in Sources */,
- E926B6E3089F76D90034D534 /* pyargs.cpp in Sources */,
- E926B6E4089F76D90034D534 /* pybuffer.cpp in Sources */,
- E926B6E5089F76D90034D534 /* pybuffer.h in Sources */,
- E926B6E6089F76D90034D534 /* pydsp.cpp in Sources */,
- E926B6E7089F76D90034D534 /* pyext.cpp in Sources */,
- E926B6E8089F76D90034D534 /* pyext.h in Sources */,
- E926B6E9089F76D90034D534 /* pyprefix.h in Sources */,
- E926B6EA089F76D90034D534 /* pysymbol.cpp in Sources */,
- E926B6EB089F76D90034D534 /* pysymbol.h in Sources */,
- E926B6EC089F76D90034D534 /* register.cpp in Sources */,
- E903AC8E09D32D03004755CA /* pybundle.cpp in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXSourcesBuildPhase section */
-
-/* Begin XCBuildConfiguration section */
- E93C2D860A5DB6E70023B566 /* Development */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- COPY_PHASE_STRIP = NO;
- DEBUGGING_SYMBOLS = YES;
- DYLIB_COMPATIBILITY_VERSION = 1;
- DYLIB_CURRENT_VERSION = 1;
- EXECUTABLE_EXTENSION = pd_darwin;
- FRAMEWORK_SEARCH_PATHS = /Library/Frameworks;
- GCC_ALTIVEC_EXTENSIONS = YES;
- GCC_MODEL_CPU = G4;
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_PREFIX_HEADER = source/pyprefix.h;
- GCC_PREPROCESSOR_DEFINITIONS = (
- "$(inherited)",
- "FLEXT_SYS=2",
- FLEXT_DEBUG,
- FLEXT_SHARED,
- );
- HEADER_SEARCH_PATHS = (
- "$(inherited)",
- "$(flext)/source",
- "$(PD-devel)/src",
- );
- INSTALL_PATH = "$(PDApp)/extra";
- LIBRARY_SEARCH_PATHS = "$(flext)/build";
- LIBRARY_STYLE = STATIC;
- MACH_O_TYPE = mh_dylib;
- OPTIMIZATION_CFLAGS = "-O0";
- OTHER_CFLAGS = "";
- OTHER_LDFLAGS = (
- "-undefined",
- dynamic_lookup,
- "-lflext-pd_d",
- "-framework",
- Python,
- );
- OTHER_REZFLAGS = "";
- PRODUCT_NAME = py;
- SECTORDER_FLAGS = "";
- WARNING_CFLAGS = (
- "-Wmost",
- "-Wno-four-char-constants",
- "-Wno-unknown-pragmas",
- );
- ZERO_LINK = YES;
- };
- name = Development;
- };
- E93C2D870A5DB6E70023B566 /* Deployment */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- COPY_PHASE_STRIP = YES;
- DYLIB_COMPATIBILITY_VERSION = 1;
- DYLIB_CURRENT_VERSION = 1;
- EXECUTABLE_EXTENSION = pd_darwin;
- GCC_ALTIVEC_EXTENSIONS = YES;
- GCC_ENABLE_FIX_AND_CONTINUE = NO;
- GCC_MODEL_CPU = G4;
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_PREFIX_HEADER = source/pyprefix.h;
- GCC_PREPROCESSOR_DEFINITIONS = (
- "$(inherited)",
- "FLEXT_SYS=2",
- FLEXT_SHARED,
- );
- HEADER_SEARCH_PATHS = (
- "$(inherited)",
- "$(flext)/source",
- "$(PD-devel)/src",
- );
- INSTALL_PATH = "$(PDApp)/extra";
- LIBRARY_SEARCH_PATHS = "$(flext)/build";
- LIBRARY_STYLE = DYNAMIC;
- MACH_O_TYPE = mh_dylib;
- OTHER_CFLAGS = "";
- OTHER_LDFLAGS = (
- "-undefined",
- dynamic_lookup,
- "-lflext-pd",
- );
- OTHER_REZFLAGS = "";
- PRODUCT_NAME = py;
- SECTORDER_FLAGS = "";
- WARNING_CFLAGS = (
- "-Wmost",
- "-Wno-four-char-constants",
- "-Wno-unknown-pragmas",
- );
- ZERO_LINK = NO;
- };
- name = Deployment;
- };
- E93C2D880A5DB6E70023B566 /* Default */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- DYLIB_COMPATIBILITY_VERSION = 1;
- DYLIB_CURRENT_VERSION = 1;
- EXECUTABLE_EXTENSION = pd_darwin;
- GCC_ALTIVEC_EXTENSIONS = YES;
- GCC_MODEL_CPU = G4;
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_PREFIX_HEADER = source/pyprefix.h;
- GCC_PREPROCESSOR_DEFINITIONS = "FLEXT_SYS=2";
- HEADER_SEARCH_PATHS = (
- "$(flext)/source",
- "$(PD-devel)/src",
- );
- INSTALL_PATH = "$(PDApp)/extra";
- LIBRARY_SEARCH_PATHS = "$(flext)/build";
- LIBRARY_STYLE = DYNAMIC;
- MACH_O_TYPE = mh_dylib;
- OTHER_CFLAGS = "";
- OTHER_REZFLAGS = "";
- PRODUCT_NAME = py;
- SECTORDER_FLAGS = "";
- WARNING_CFLAGS = (
- "-Wmost",
- "-Wno-four-char-constants",
- "-Wno-unknown-pragmas",
- );
- };
- name = Default;
- };
- E93C2D8A0A5DB6E70023B566 /* Development */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- COPY_PHASE_STRIP = NO;
- DEBUGGING_SYMBOLS = YES;
- GCC_ALTIVEC_EXTENSIONS = YES;
- GCC_DYNAMIC_NO_PIC = NO;
- GCC_ENABLE_FIX_AND_CONTINUE = YES;
- GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
- GCC_OPTIMIZATION_LEVEL = 0;
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_PREFIX_HEADER = source/pyprefix.h;
- GCC_PREPROCESSOR_DEFINITIONS = (
- "$(inherited)",
- "FLEXT_SYS=1",
- FLEXT_SHARED,
- );
- GENERATE_PKGINFO_FILE = YES;
- HEADER_SEARCH_PATHS = (
- "$(inherited)",
- "$(maxsdk)/max-includes",
- "$(maxsdk)/msp-includes",
- );
- INFOPLIST_FILE = "source/py-Info.plist";
- LIBRARY_SEARCH_PATHS = (
- "$(inherited)",
- "$(maxsdk)/max-includes",
- "$(maxsdk)/msp-includes",
- );
- LIBRARY_STYLE = STATIC;
- OPTIMIZATION_CFLAGS = "-O0";
- OTHER_CFLAGS = "";
- OTHER_REZFLAGS = "";
- PRODUCT_NAME = py;
- SECTORDER_FLAGS = "";
- SKIP_INSTALL = YES;
- WARNING_CFLAGS = (
- "-Wmost",
- "-Wno-four-char-constants",
- "-Wno-unknown-pragmas",
- );
- WRAPPER_EXTENSION = mxo;
- ZERO_LINK = YES;
- };
- name = Development;
- };
- E93C2D8B0A5DB6E70023B566 /* Deployment */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- COPY_PHASE_STRIP = YES;
- GCC_ALTIVEC_EXTENSIONS = YES;
- GCC_ENABLE_FIX_AND_CONTINUE = NO;
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_PREFIX_HEADER = source/pyprefix.h;
- GCC_PREPROCESSOR_DEFINITIONS = (
- "$(inherited)",
- "FLEXT_SYS=1",
- FLEXT_SHARED,
- );
- GENERATE_PKGINFO_FILE = YES;
- HEADER_SEARCH_PATHS = (
- "$(inherited)",
- "$(maxsdk)/max-includes",
- "$(maxsdk)/msp-includes",
- );
- INFOPLIST_FILE = "source/py-Info.plist";
- LIBRARY_SEARCH_PATHS = (
- "$(inherited)",
- "$(maxsdk)/max-includes",
- "$(maxsdk)/msp-includes",
- );
- OTHER_CFLAGS = "";
- OTHER_REZFLAGS = "";
- PRODUCT_NAME = py;
- SECTORDER_FLAGS = "";
- SKIP_INSTALL = YES;
- WARNING_CFLAGS = (
- "-Wmost",
- "-Wno-four-char-constants",
- "-Wno-unknown-pragmas",
- );
- WRAPPER_EXTENSION = mxo;
- ZERO_LINK = NO;
- };
- name = Deployment;
- };
- E93C2D8C0A5DB6E70023B566 /* Default */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- GCC_ALTIVEC_EXTENSIONS = YES;
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_PREFIX_HEADER = source/pyprefix.h;
- GCC_PREPROCESSOR_DEFINITIONS = "FLEXT_SYS=1";
- GENERATE_PKGINFO_FILE = YES;
- HEADER_SEARCH_PATHS = (
- "$(flext)/source",
- "$(MaxSDK)/max-includes",
- "$(MaxSDK)/msp-includes",
- );
- INFOPLIST_FILE = "py-Info.plist";
- LIBRARY_SEARCH_PATHS = (
- "$(MaxSDK)/max-includes",
- "$(MaxSDK)/msp-includes",
- );
- OTHER_CFLAGS = "";
- OTHER_REZFLAGS = "";
- PRODUCT_NAME = py;
- SECTORDER_FLAGS = "";
- SKIP_INSTALL = YES;
- WARNING_CFLAGS = (
- "-Wmost",
- "-Wno-four-char-constants",
- "-Wno-unknown-pragmas",
- );
- WRAPPER_EXTENSION = mxo;
- };
- name = Default;
- };
- E93C2D8E0A5DB6E70023B566 /* Development */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- GCC_OPTIMIZATION_LEVEL = 0;
- GCC_PREPROCESSOR_DEFINITIONS = (
- "$(inherited)",
- _DEBUG,
- PY_NUMPY,
- PY_USE_GIL,
- );
- HEADER_SEARCH_PATHS = (
- "/Library/Python/2.3/site-packages/numpy/core/include/",
- "$(lockfree)",
- "$(flext)/source",
- );
- SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
- };
- name = Development;
- };
- E93C2D8F0A5DB6E70023B566 /* Deployment */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ARCHS = (
- i386,
- ppc,
- );
- GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
- GCC_PREPROCESSOR_DEFINITIONS = (
- "$(inherited)",
- NDEBUG,
- PY_NUMPY,
- PY_USE_GIL,
- );
- HEADER_SEARCH_PATHS = (
- "/Library/Python/2.3/site-packages/numpy/core/include/",
- "$(lockfree)",
- "$(flext)/source",
- );
- SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
- };
- name = Deployment;
- };
- E93C2D900A5DB6E70023B566 /* Default */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- GCC_PREPROCESSOR_DEFINITIONS = PY_NUMPY;
- SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
- };
- name = Default;
- };
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
- E93C2D850A5DB6E70023B566 /* Build configuration list for PBXNativeTarget "py.pd_darwin" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- E93C2D860A5DB6E70023B566 /* Development */,
- E93C2D870A5DB6E70023B566 /* Deployment */,
- E93C2D880A5DB6E70023B566 /* Default */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Default;
- };
- E93C2D890A5DB6E70023B566 /* Build configuration list for PBXNativeTarget "py" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- E93C2D8A0A5DB6E70023B566 /* Development */,
- E93C2D8B0A5DB6E70023B566 /* Deployment */,
- E93C2D8C0A5DB6E70023B566 /* Default */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Default;
- };
- E93C2D8D0A5DB6E70023B566 /* Build configuration list for PBXProject "py" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- E93C2D8E0A5DB6E70023B566 /* Development */,
- E93C2D8F0A5DB6E70023B566 /* Deployment */,
- E93C2D900A5DB6E70023B566 /* Default */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Default;
- };
-/* End XCConfigurationList section */
- };
- rootObject = 089C1669FE841209C02AAC07 /* Project object */;
-}
diff --git a/externals/grill/py/readme.txt b/externals/grill/py/readme.txt
deleted file mode 100644
index be168835..00000000
--- a/externals/grill/py/readme.txt
+++ /dev/null
@@ -1,222 +0,0 @@
-py/pyext - python script objects for PD and Max/MSP
-
-Copyright (c)2002-2008 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-Donations for further development of the package are highly appreciated.
-Visit https://www.paypal.com/xclick/business=gr%40grrrr.org&item_name=pyext&no_note=1&tax=0&currency_code=EUR
-
-----------------------------------------------------------------------------
-
-You need to have Python installed on your system for the py/pyext external to work.
-For Windows pick an up-to-date package from http://www.python.org .
-For linux use the package manager.
-For OS X keep things as the are - it has Python installed by default.
-
-
-The py/pyext package should run with Python version >= 2.1.
-It has been thoroughly tested with versions 2.2 to 2.5
-
-The default build setting using PY_USE_GIL requires Python version >= 2.3.
-
-Check out the sample patches and scripts
-
-----------------------------------------------------------------------------
-
-INSTALLATION
-============
-
-PD version >= 0.38 - Add "py" to the Startup items ("binaries to load") and add the folder "scripts" to the pd search path.
-PD version < 0.38 - Load it as a library with e.g. "pd -lib py -path scripts"
-
-Max/MSP - Copy py-objectmappings.txt into the init folder and py.mxe (Windows) or py.mxo (OSX) into the externals folder.
-
-----------------------------------------------------------------------------
-
-DESCRIPTION
-===========
-
-With the py object you can load python modules and execute the functions therein.
-With the pyext you can use python classes to represent full-featured pd/Max message objects.
-Multithreading (detached methods) is supported for both objects.
-You can send messages to named objects or receive (with pyext) with Python methods.
-
-
-Known bugs:
-- The TCL/TK help patch is not usable under OSX.
-- With standard PD 0.37, threaded py scripts will cause "Stack overflows" under some circumstances
- -> use PD 0.38 or the devel_0_37 cvs branch instead
-- It has been reported that pyext crashes on AMD64 with SSE enabled (for these CPUs, disable the respective compiler flags)
-
-----------------------------------------------------------------------------
-
-BUILDING from source
-====================
-
-You will need the flext C++ layer for PD and Max/MSP externals to compile this.
-See http://grrrr.org/ext/flext
-Download, install and compile the package.
-Afterwards you can proceed with building this external.
-
-
-pd/Max - Windows - Microsoft Visual C, Borland C++, MinGW:
-----------------------------------------------------------
-Start a command shell with your eventual build environment
-(e.g. run vcvars32.bat for Microsoft Visual Studio)
-
-then run
- ..\flext\build.bat
-(you would have to substitute ..\flext with the respective path to the flext package)
-
-
-pd/Max - OSX/Linux - GCC:
--------------------------
-From a shell run
-bash ../flext/build.sh
-(you would have to substitute ../flext with the respective path to the flext package)
-
-
-----------------------------------------------------------------------------
-
-Python array support for py/pyext@Max/MSP:
-
-In the Max/MSP SDK change the file
-4.5 headers\c74support\max-includes\ext_types.h, line 45
-from
- typedef unsigned long UInt32;
- typedef signed long SInt32;
-to
- typedef unsigned int UInt32;
- typedef signed int SInt32;
-to avoid a compile-time type definition clash.
-
-----------------------------------------------------------------------------
-
-Version history:
-
-0.2.1:
-- FIX: some simplifications in py and pyext
-- ADD: Python objects can be sent/received through outlets/inlets
-- ADD: py can have multiple inlets for multiple function arguments (right inlets are non-triggering)
-- ADD: allow module.function syntax for py and pyext
-- FIX: pyext: cleanup float vs. int ... first decision is made by tag, afterwards a conversion is tried
-- ADD: pym: object-oriented object... Python methods for any object type
-- ADD: py: allow all callables (also object constructors and builtins)
-- ADD: py: enable Python built-in functions (like range, str etc.)
-- ADD: sequence protocol for symbol type
-- FIX: cleanup for outbound messages (e.g. symbol atoms instead of one-element general messages)
-- FIX: better exception handling (no longer leaves reference to function object) and cleared misleading error message
-- FIX: better definition of output values for atoms, lists and anythings
-- FIX: much better detached method handling (one thread for all object instances!)
-- ADD: open module file in editor on "edit" message (or shift-click (PD) or double click (Max))
-- FIX: _inlets and _outlets default to 0 if not given
-- ADD: enable optimization of Python code in reease build
-- CHG: _isthreaded is now a data member instead of a method
-- FIX: more safety for calls where association python-pd has already been removed
-- ADD: __str__ method for pyext, to enable print self calls
-- ADD: enable symbol binding for all callables (not only functions and methods)
-- ADD: Buffer.resize(frames,keep=1,zero=1) method
-- ADD: py.Bundle class to support flext message bundles
-- ADD: enable usage of compiled-only modules (.py[co])
-- ADD: enable usage of module packages (with module/__init__.py[co])
-- ADD: make use of the PyGILState_*() functions
-- ADD: always run the Python interpreter in the background (to keep alive Python threads)
-- ADD: added PY_USE_INOFFICIAL to enable usage of s_stuff.h PD header, to have access to search and help paths
-- ADD: pyext: _init method is now called after __init__ (after inlets/outlets have been created)
-- FIX: buffer protocol adapted to Python 2.5
-
-0.2.0:
-- ADD: handling of Python threads
-- FIX: output of single atoms instead of 1-element lists
-- ADD: new detach mechanism (call queue)
-- ADD: support for Max/MSP @ OSX and Windows
-- DEL: eliminated meaningless inchannels and outchannels methods
-- ADD: enabled "int"-tags for pyext class functions
-- ADD: py: when no function is given on the command line, let it be selected by message tag
-- FIX: __init__ wasn't called on reload
-- FIX: bound instance methods weren't correctly decref'd
-- ADD: Python symbol type
-- ADD: _del method in pyext-derived class can be used to clean up things on exit
-- FIX: solved py->py messaging problem with lock count instead of message queuing
-- ADD: buffer handling with optional numarray support (if present)
-- ADD: new objects for dsp processing: pyext~,pyx~,pyext.~,pyx.~
-- FIX: correctly report Python errors while contructing the object
-
-0.1.4:
-- ADD: better (and independent) handling of inlet and outlet count (as class variables or dynamically initialized in __init__)
-- FIX: many memory leaks associated to ***GetItem stuff (big thanks to sven!)
-- FIX: set "this" memory in object after reloading script
-- ADD: _getvalue,_setvalue to access PD values
-- FIX: don't shout when Python script returns PyNone
-- ADD: alias creation names pyext. and pyx. take the script name also for the class name
-
-0.1.3:
-- FIX: class variables are now set atomic if parameter list has only 1 element
-- ADD: introduced shortcut "pyx" for pyext.
-- ADD: arguments to the pyext class are now exposed as attributes "args"
-- FIX: parameters to Python functions are treated as integers when they can be.
-- ADD: inlet and outlet count can be given for pyext, python _inlet and _outlet members are ignored then
-- FIX: crash if script or class names are non-strings
-- FIX: long multi-line doc strings are now printed correctly
-- FIX: message "doc+" for class/instance __doc__ now working
-- FIX: improved/debugged handling of reference counts
-- FIX: _pyext._send will now send anythings if feasible
-- CHANGE: no more finalization - it's really not necessary...
-- FIX: calling from unregistered threads (like flext helper thread) now works
-
-0.1.2:
-- CHANGE: updates for flext 0.4.1 - method registering within class scope
-- FIX: bugs in bound.cpp (object_free calls)
-- FIX: bug with threaded methods along with flext bug fix.
-- ADD: map Python threads to system threads
-- ADD: shut down the Python interpreter appropriately
-- CHANGE: use flext timer and bind functionality
-- ADD: attribute functionality
-- ADD: dir and dir+ methods for Python dictionary listing
-- ADD: get and set methods for Python class attributes
-
-0.1.1:
-- CHANGE: updates for flext 0.4.0
-- FIX: crash when module couldn't be loaded
-- FIX: GetBound method (modmeth.cpp, line 138) doesn't exist in flext any more
-- FIX: deadlock occured when connecting two py/pyext boxes in non-detached mode
-- ADD: current path and path of the canvas is added to the python path
-- FIX: path is not added to python path if already included
-
-0.1.0:
-- completely reworked all code
-- added class functionality for full-featured objects and renamed the merge to pyext
-- enabled threads and made everything thread-safe ... phew!
-- using flext 0.3.2
-- pyext now gets full python path
-- python's argv[0] is now "py" or "pyext"
-- etc.etc.
-
-0.0.2:
-- fixed bug when calling script with no function defined (thanks to Ben Saylor)
-- cleaner gcc makefile
-
-0.0.1:
-- using flext 0.2.1
-
----------------------------------------------------------------------------
-
-TODO list:
-
-bugs:
-- crashes with long Python printouts
-
-general:
-- Documentation and better example patches
-- better error reporting for runtime errors
-- we should pre-scan and cache class methods
-
-features:
-- enable multiple interpreters? ( -> not possible within one thread)
-- options to fully detach a script (included initialization and finalization)
-- stop individual threads
-- support named (keyword) arguments (like attributes for messages)
-
-tests:
-- compile-time check for python threading support
diff --git a/externals/grill/py/scripts/buffer.py b/externals/grill/py/scripts/buffer.py
deleted file mode 100644
index 46c47991..00000000
--- a/externals/grill/py/scripts/buffer.py
+++ /dev/null
@@ -1,60 +0,0 @@
-# py/pyext - python script objects for PD and MaxMSP
-#
-# Copyright (c) 2002-2005 Thomas Grill (gr@grrrr.org)
-# For information on usage and redistribution, and for a DISCLAIMER OF ALL
-# WARRANTIES, see the file, "license.txt," in this distribution.
-#
-
-"""This is an example script for the py/pyext object's buffer support.
-
-PD/Max buffers can be mapped to Python arrays.
-Currently, there are three implementations:
-Numeric, numarray and Numeric3 (for all of them see http://numeric.scipy.org)
-"""
-
-import sys
-
-try:
- import pyext
-except:
- print "ERROR: This script must be loaded by the PD/Max py/pyext external"
-
-try:
- from numarray import *
-except:
- print "Failed importing numarray module:",sys.exc_value
-
-def mul(*args):
- # create buffer objects
- # as long as these variables live the underlying buffers are locked
- c = pyext.Buffer(args[0])
- a = pyext.Buffer(args[1])
- b = pyext.Buffer(args[2])
-
- # slicing causes Python arrays (mapped to buffers) to be created
- # note the c[:] - to assign contents you must assign to a slice of the buffer
- c[:] = a[:]*b[:]
-
-def add(*args):
- c = pyext.Buffer(args[0])
- a = pyext.Buffer(args[1])
- b = pyext.Buffer(args[2])
-
- # this is also possible, but is probably slower
- # the + converts a into a Python array, the argument b is taken as a sequence
- # depending on the implementation this may be as fast
- # as above or not
- c[:] = a+b
-
-def fadein(target):
- a = pyext.Buffer(target)
- # in place operations are ok
- a *= arange(len(a),type=Float32)/len(a)
-
-def neg(target):
- a = pyext.Buffer(target)
- # in place transformation (see Python array ufuncs)
- negative(a[:],a[:])
- # must mark buffer content as dirty to update graph
- # (no explicit assignment occurred)
- a.dirty()
diff --git a/externals/grill/py/scripts/pak.py b/externals/grill/py/scripts/pak.py
deleted file mode 100644
index 6394570d..00000000
--- a/externals/grill/py/scripts/pak.py
+++ /dev/null
@@ -1,14 +0,0 @@
-import pyext
-
-class pak(pyext._class):
- def __init__(self,n):
- # n should be type-checked
- self._inlets = n
- self._outlets = 1
- # initialize list
- self.lst = [0 for x in range(n)]
-
- def _anything_(self,n,arg):
- # arg should be type-checked!
- self.lst[n-1] = arg
- self._outlet(1,self.lst)
diff --git a/externals/grill/py/scripts/script.py b/externals/grill/py/scripts/script.py
deleted file mode 100644
index ff41730f..00000000
--- a/externals/grill/py/scripts/script.py
+++ /dev/null
@@ -1,48 +0,0 @@
-# py/pyext - python script objects for PD and MaxMSP
-#
-# Copyright (c) 2002-2005 Thomas Grill (gr@grrrr.org)
-# For information on usage and redistribution, and for a DISCLAIMER OF ALL
-# WARRANTIES, see the file, "license.txt," in this distribution.
-#
-
-"""Several functions to show the py script functionality"""
-
-import sys
-
-print "Script initialized"
-
-try:
- print "Script arguments: ",sys.argv
-except:
- print
-
-def numargs(*args): # variable argument list
- """Return the number of arguments"""
- return len(args)
-
-def strlen(arg):
- """Return the string length"""
- # we must convert to string first (it's a symbol type most likely)
- return len(str(arg))
-
-
-def strcat(*args):
- """Concatenate several symbols"""
- return reduce(lambda a,b: a+str(b), args,"")
-
-def addall(*args): # variable argument list
- """Add a couple of numbers"""
- return reduce(lambda a,b: a+b, args,0)
-
-
-def ret1():
- return 1,2,3,4
-
-
-def ret2():
- return "sd","lk","ki"
-
-
-def ret3():
- return ["sd","lk","ki"]
-
diff --git a/externals/grill/py/scripts/sendrecv.py b/externals/grill/py/scripts/sendrecv.py
deleted file mode 100644
index 9d873bae..00000000
--- a/externals/grill/py/scripts/sendrecv.py
+++ /dev/null
@@ -1,180 +0,0 @@
-# py/pyext - python script objects for PD and MaxMSP
-#
-# Copyright (c) 2002-2005 Thomas Grill (gr@grrrr.org)
-# For information on usage and redistribution, and for a DISCLAIMER OF ALL
-# WARRANTIES, see the file, "license.txt," in this distribution.
-#
-
-"""This is an example script for the py/pyext object's send/receive functionality.
-
-You can:
-- bind
-
-
-There are several classes exposing py/pyext features:
-- ex1: A class receiving messages and sending them out again
-- ex2: A class receiving messages and putting them out to an outlet
-- ex3: Do some PD scripting
-
-"""
-
-try:
- import pyext
-except:
- print "ERROR: This script must be loaded by the PD/Max pyext external"
-
-
-from time import sleep
-
-#################################################################
-
-def recv_gl(arg):
- """This is a global receive function, it has no access to class members."""
- print "GLOBAL",arg
-
-class ex1(pyext._class):
- """Example of a class which receives and sends messages
-
- It has two creation arguments: a receiver and a sender name.
- There are no inlets and outlets.
- Python functions (one global function, one class method) are bound to PD's or Max/MSP's receive symbols.
- The class method sends the received messages out again.
- """
-
-
- # no inlets and outlets
- _inlets=1
- _outlets=0
-
- recvname=""
- sendname=""
-
- def recv(self,*arg):
- """This is a class-local receive function, which has access to class members."""
-
- # print some stuff
- print "CLASS",self.recvname,arg
-
- # send data to specified send address
- self._send(self.sendname,arg)
-
-
- def __init__(self,*args):
- """Class constructor"""
-
- # store sender/receiver names
- if len(args) >= 1: self.recvname = args[0]
- if len(args) >= 2: self.sendname = args[1]
-
- self.bind_1()
-
- def bind_1(self):
- # bind functions to receiver names
- # both are called upon message
- self._bind(self.recvname,self.recv)
- self._bind(self.recvname,recv_gl)
-
- def unbind_1(self):
- self._unbind(self.recvname,self.recv)
- self._unbind(self.recvname,recv_gl)
-
- def __del__(self):
- """Class destructor"""
-
- # unbinding is automatically done at destruction
- pass
-
-
-#################################################################
-
-class ex2(pyext._class):
- """Example of a class which receives a message and forwards it to an outlet
-
- It has one creation argument: the receiver name.
- """
-
-
- # define inlets and outlets
- _inlets=0
- _outlets=1
-
- recvname=""
-
- def recv(self,*arg):
- """This is a class-local receive function"""
-
- # send received data to outlet
- self._outlet(1,arg)
-
-
- def __init__(self,rname):
- """Class constructor"""
-
- # store receiver names
- self.recvname = rname
-
- # bind function to receiver name
- self._bind(self.recvname,self.recv)
-
-
-#################################################################
-
-from math import pi
-from cmath import exp
-from random import random,randint
-
-class ex3(pyext._class):
- """Example of a class which does some object manipulation by scripting"""
-
-
- # define inlets and outlets
- _inlets=1
- _outlets=0
-
- def __init__(self):
- """Class constructor"""
-
- # called scripting method should run on its own thread
- if self._isthreaded:
- print "Threading is on"
- self._detach(1)
-
- def bang_1(self):
- """Do some scripting - PD only!"""
-
- num = 12 # number of objects
- ori = complex(150,180) # origin
- rad = 100 # radius
- l = range(num) # initialize list
-
- # make flower
- self._tocanvas("obj",ori.real,ori.imag,"bng",20,250,50,0,"empty","yeah","empty",0,-6,64,8,-24198,-1,-1)
- for i in xrange(num):
- l[i] = ori+rad*exp(complex(0,i*2*pi/num))
- self._tocanvas("obj",l[i].real,l[i].imag,"bng",15,250,50,0,"empty","yeah"+str(i),"empty",0,-6,64,8,0,-1,-1)
- self._tocanvas("connect",6,0,7+i,0)
-
- # blink
- for i in range(10):
- self._send("yeah","bang")
- sleep(1./(i+1))
-
- # move objects around
- for i in xrange(200):
- ix = randint(0,num-1)
- l[ix] = ori+rad*complex(2*random()-1,2*random()-1)
- self._send("yeah"+str(ix),"pos",l[ix].real,l[ix].imag)
- sleep(0.02)
-
- # now delete
- # this is not well-done... from time to time an object remains
- self._tocanvas("editmode",1)
- for i in xrange(num):
- self._tocanvas("mouse",l[i].real,l[i].imag,0,0)
- self._tocanvas("cut")
-
- self._tocanvas("mouse",ori.real+1,ori.imag+1,0,0)
- self._tocanvas("cut")
-
- self._tocanvas("editmode",0)
-
diff --git a/externals/grill/py/scripts/sig.py b/externals/grill/py/scripts/sig.py
deleted file mode 100644
index 09be7b66..00000000
--- a/externals/grill/py/scripts/sig.py
+++ /dev/null
@@ -1,100 +0,0 @@
-# py/pyext - python script objects for PD and MaxMSP
-#
-# Copyright (c) 2002-2005 Thomas Grill (gr@grrrr.org)
-# For information on usage and redistribution, and for a DISCLAIMER OF ALL
-# WARRANTIES, see the file, "license.txt," in this distribution.
-#
-
-"""This is an example script for the py/pyext signal support.
-
-For numarray see http://numeric.scipy.org
-It will probably once be replaced by Numeric(3)
-"""
-
-try:
- import pyext
-except:
- print "ERROR: This script must be loaded by the PD/Max py/pyext external"
-
-try:
- import psyco
- psyco.full()
- print "Using JIT compilation"
-except:
- # don't care
- pass
-
-import sys,math
-
-try:
- import numarray
-except:
- print "Failed importing numarray module:",sys.exc_value
-
-
-class gain(pyext._class):
- """Just a simple gain stage"""
-
- gain = 0
-
- def _signal(self):
- # Multiply input vector by gain and copy to output
- try:
- self._outvec(0)[:] = self._invec(0)*self.gain
- except:
- pass
-
-
-class gain2(pyext._class):
- """More optimized version"""
-
- gain = 0
-
- def _dsp(self):
- if not self._arraysupport():
- print "No DSP support"
- return False
-
- # cache vectors in this scope
- self.invec = self._invec(0)
- self.outvec = self._outvec(0)
- # initialize _signal method here for optimized version
- if self.invec is self.outvec:
- self._signal = self.signal1
- else:
- self._signal = self.signal2
- return True
-
- def signal1(self):
- # Multiply signal vector in place
- self.outvec *= self.gain
-
- def signal2(self):
- # Multiply input vector by gain and copy to output
- self.outvec[:] = self.invec*self.gain
-
-
-class pan(pyext._class):
- """Stereo panning"""
-
- def __init__(self):
- self.float_1(0.5)
-
- def float_1(self,pos):
- """pos ranges from 0 to 1"""
- x = pos*math.pi/2
- self.fl = math.cos(x)
- self.fr = math.sin(x)
-
- def _dsp(self):
- # if _dsp is present it must return True to enable DSP
- return pyext._arraysupport()
-
- def _signal(self):
- # Multiply input vector by gain and copy to output
- iv = self._invec(0)
- # first process right output channel because left one could be
- # identical to input
- # we could also test with 'self._outvec(1)[:] is iv'
- self._outvec(1)[:] = iv*self.fr
- self._outvec(0)[:] = iv*self.fl
diff --git a/externals/grill/py/scripts/simple.py b/externals/grill/py/scripts/simple.py
deleted file mode 100644
index 1aa211c5..00000000
--- a/externals/grill/py/scripts/simple.py
+++ /dev/null
@@ -1,214 +0,0 @@
-# py/pyext - python script objects for PD and MaxMSP
-#
-# Copyright (c) 2002-2007 Thomas Grill (gr@grrrr.org)
-# For information on usage and redistribution, and for a DISCLAIMER OF ALL
-# WARRANTIES, see the file, "license.txt," in this distribution.
-#
-
-"""This is an example script for the py/pyext object's basic functionality.
-
-pyext Usage:
-- Import pyext
-
-- Inherit your class from pyext._class
-
-- Specfiy the number of inlets and outlets:
- Use the class members (variables) _inlets and _outlets
- If not given they default to 1
- You can also use class methods with the same names to return the respective number
-
-- Constructors/Destructors
- You can specify an __init__ constructor and/or an __del__ destructor.
- The constructor will be called with the object's arguments
-
- e.g. if your PD or MaxMSP object looks like
- [pyext script class arg1 arg2 arg3]
-
- then the __init__(self,*args) function will be called with a tuple argument
- args = (arg1,arg2,arg3)
- With this syntax, you will have to give at least one argument.
- By defining the constructor as __init__(self,*args) you can also initialize
- the class without arguments.
-
-- Methods called by pyext
- The general format is 'tag_inlet(self,arg)' resp. 'tag_inlet(self,*args)':
- tag is the PD or MaxMSP message header.. either bang, float, list etc.
- inlet is the inlet (starting from 1) from which messages are received.
- args is a tuple which corresponds to the content of the message. args can be omitted.
-
- The inlet index can be omitted. The method name then has the format 'tag_(self,inlet,args)'.
- Here, the inlet index is a additional parameter to the method
-
- You can also set up methods which react on any message. These have the special forms
- _anything_inlet(self,*args)
- or
- _anything_(self,inlet,*args)
-
- Please see below for examples.
-
- Any return values are ignored - use _outlet (see below).
-
- Generally, you should avoid method_, method_xx forms for your non-pyext class methods.
- Identifiers (variables and functions) with leading underscores are reserved for pyext.
-
-- Send messages to outlets:
- Use the inherited _outlet method.
- You can either use the form
- self._outlet(outlet,arg1,arg2,arg3,arg4) ... where all args are atoms (no sequence types!)
- or
- self._outlet(outlet,arg) ... where arg is a sequence containing only atoms
-
- Do not use _outlet inside __init__, since the outlets have not been created at that time.
-
-- Use pyext functions and methods:
- See the __doc__ strings of the pyext module and the pyext._class base class.
-
-"""
-
-try:
- import pyext
-except:
- print "ERROR: This script must be loaded by the PD/Max pyext external"
-
-#################################################################
-
-class ex1(pyext._class):
- """Example of a simple class which receives messages and prints to the console"""
-
- # number of inlets and outlets
- _inlets=3
- _outlets=0
-
-
- # methods for first inlet
-
- def bang_1(self):
- print "Bang into first inlet"
-
- def int_1(self,f):
- print "Integer",f,"into first inlet"
-
- def float_1(self,f):
- print "Float",f,"into first inlet"
-
- def list_1(self,*s):
- print "List",s,"into first inlet"
-
-
- # methods for second inlet
-
- def hey_2(self):
- print "Tag 'hey' into second inlet"
-
- def ho_2(self):
- print "Tag 'ho' into second inlet"
-
- def lets_2(self):
- print "Tag 'lets' into second inlet"
-
- def go_2(self):
- print "Tag 'go' into second inlet"
-
- def _anything_2(self,*args):
- print "Some other message into second inlet:",args
-
-
- # methods for third inlet
-
- def onearg_3(self,a):
- print "Tag 'onearg' into third inlet:",a
-
- def twoargs_3(self,*a):
- if len(a) == 2:
- print "Tag 'twoargs' into third inlet:",a[0],a[1]
- else:
- print "Tag 'twoargs': wrong number of arguments"
-
- def threeargs_3(self,*a):
- if len(a) == 3:
- print "Tag 'threeargs' into third inlet",a[0],a[1],a[2]
- else:
- print "Tag 'threeargs': wrong number of arguments"
-
- def varargs_3(self,*args):
- # with *args there can be arguments or not
-
- print "Tag 'varargs' into third inlet",args
-
-
-
-#################################################################
-
-class ex2(pyext._class):
- """Example of a simple class which receives messages and writes to outlets"""
-
- # number of inlets and outlets
- _inlets=3
- _outlets=2
-
- # methods for all inlets
-
- def hello_(self,n):
- print "Tag 'hello' into inlet",n
-
- def _anything_(self,n,*args):
- print "Message into inlet",n,":",args
-
-
- # methods for first inlet
-
- def float_1(self,f):
- self._outlet(2,f)
-
- # methods for second inlet
-
- def float_2(self,f):
- self._outlet(1,f)
-
-
-#################################################################
-
-# helper function - determine whether argument is a numeric type
-def isNumber(value):
- import types
- if type(value) in (types.FloatType, types.IntType, types.LongType):
- return 1
- else:
- return 0
-
-
-class ex3(pyext._class):
- """Example of a simple class doing a typical number addition
-
- It uses a constructor and a class member as temporary storage.
- """
-
- # number of inlets and outlets
- _inlets=2
- _outlets=1
-
- # temporary storage
- tmp=0
-
- # constructor
- def __init__(self,*args):
- if len(args) == 1:
- if isNumber(args[0]):
- self.tmp = args[0]
- else:
- print "ex3: __init__ has superfluous arguments"
-
- # methods
-
- def float_1(self,f):
- self._outlet(1,self.tmp+f)
-
- def float_2(self,f):
- self.tmp = f
-
- # handlers for MaxMSP int type
- def int_1(self,f):
- self.float_1(f)
-
- def int_2(self,f):
- self.float_2(f)
diff --git a/externals/grill/py/scripts/tcltk.py b/externals/grill/py/scripts/tcltk.py
deleted file mode 100644
index 08131995..00000000
--- a/externals/grill/py/scripts/tcltk.py
+++ /dev/null
@@ -1,81 +0,0 @@
-# py/pyext - python script objects for PD and MaxMSP
-#
-# Copyright (c) 2002-2003 Thomas Grill (xovo@gmx.net)
-# For information on usage and redistribution, and for a DISCLAIMER OF ALL
-# WARRANTIES, see the file, "license.txt," in this distribution.
-#
-
-"""This is an example script for showing a nonsense tcl/tk application."""
-
-try:
- import pyext
-except:
- print "ERROR: This script must be loaded by the PD/Max pyext external"
-
-from Tkinter import *
-import random
-
-
-class Application(Frame):
- """This is the TK application class"""
-
- # Button pressed
- def say_hi(self):
- self.extcl._outlet(1,"hi there, everyone!")
-
- # Mouse motion over canvas
- def evfunc(self, ev):
- x = random.uniform(-3,3)
- y = random.uniform(-3,3)
- self.mcanv.move('group',x,y)
-
- # Create interface stuff
- def createWidgets(self):
- self.hi = Button(self)
- self.hi["text"] = "Hi!"
- self.hi["fg"] = "red"
- self.hi["command"] = self.say_hi
- self.hi.pack({"side": "left"})
-
- self.mcanv = Canvas(self)
- self.mcanv.pack({"side": "left"})
- self.mcanv.bind("<Motion>", self.evfunc)
- self.mcanv.create_rectangle(50,50,200,200)
- r = self.mcanv.create_rectangle(50,50,200,200)
- self.mcanv.addtag_withtag('group',r)
-
- for i in xrange(500):
- x = random.uniform(50,200)
- y = random.uniform(50,200)
- l = self.mcanv.create_line(x,y,x+1,y)
- self.mcanv.addtag_withtag('group',l)
-
- # Constructor
- def __init__(self,cl):
- self.extcl = cl
- Frame.__init__(self)
- self.pack()
- self.createWidgets()
- pass
-
-
-# derive class from pyext._class
-
-class myapp(pyext._class):
- """This class demonstrates how a TCL/TK can be openened from within a pyext external"""
-
- # how many inlets and outlets?
- _inlets = 1
- _outlets = 1
-
- # Constructor
- def __init__(self):
- # detach bang method
- self._detach(1)
-
- def bang_1(self):
- self._priority(-3)
- # display the tcl/tk dialog
- app = Application(self)
- app.mainloop()
-
diff --git a/externals/grill/py/scripts/threads.py b/externals/grill/py/scripts/threads.py
deleted file mode 100644
index b0299101..00000000
--- a/externals/grill/py/scripts/threads.py
+++ /dev/null
@@ -1,50 +0,0 @@
-# py/pyext - python script objects for PD and MaxMSP
-#
-# Copyright (c) 2002-2003 Thomas Grill (xovo@gmx.net)
-# For information on usage and redistribution, and for a DISCLAIMER OF ALL
-# WARRANTIES, see the file, "license.txt," in this distribution.
-#
-
-"""This is an example script for the py/pyext object's threading functionality.
-
-For threading support pyext exposes several function and variables
-
-- _detach([0/1]): by enabling thread detaching, threads will run in their own threads
-- _priority(prio+-): you can raise or lower the priority of the current thread
-- _stop({wait time in ms}): stop all running threads (you can additionally specify a wait time in ms)
-- _shouldexit: this is a flag which indicates that the running thread should terminate
-
-"""
-
-try:
- import pyext
-except:
- print "ERROR: This script must be loaded by the PD/Max pyext external"
-
-from time import sleep
-
-#################################################################
-
-class ex1(pyext._class):
- """This is a simple class with one method looping over time."""
-
- # number of inlets and outlets
- _inlets=2
- _outlets=2
-
- sltime=0.1 # sleep time
- loops=20 # loops to iterate
-
- # method for bang to any inlet
- def bang_(self,n):
- for i in xrange(self.loops):
- # if _shouldexit is true, the thread ought to stop
- if self._shouldexit:
- print "BREAK"
- break
-
- self._outlet(n,i)
- sleep(self.sltime)
-
-
-
diff --git a/externals/grill/py/source/bound.cpp b/externals/grill/py/source/bound.cpp
deleted file mode 100644
index 266bb9c5..00000000
--- a/externals/grill/py/source/bound.cpp
+++ /dev/null
@@ -1,202 +0,0 @@
-/*
-py/pyext - python external object for PD and MaxMSP
-
-Copyright (c)2002-2008 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-$LastChangedRevision: 26 $
-$LastChangedDate: 2008-01-03 17:20:03 +0100 (Thu, 03 Jan 2008) $
-$LastChangedBy: thomas $
-*/
-
-#include "pyext.h"
-#include "flinternal.h"
-
-#include <set>
-
-class MethodCompare:
- public std::less<PyObject *>
-{
-public:
- bool operator()(PyObject *a,PyObject *b) const
- {
- if(PyMethod_Check(a))
- if(PyMethod_Check(b)) {
- // both are methods
- PyObject *sa = PyMethod_GET_SELF(a);
- PyObject *sb = PyMethod_GET_SELF(b);
- if(sa)
- if(sb) {
- // both have self
- if(sa == sb)
- return PyMethod_GET_FUNCTION(a) < PyMethod_GET_FUNCTION(b);
- else
- return sa < sb;
- }
- else
- return false;
- else
- if(sb)
- return true;
- else
- return PyMethod_GET_FUNCTION(a) < PyMethod_GET_FUNCTION(b);
- }
- else
- return false;
- else
- if(PyMethod_Check(b))
- return true;
- else
- // both are non-method callables
- return a < b;
- }
-};
-
-typedef std::set<PyObject *,MethodCompare> FuncSet;
-
-struct bounddata
-{
- PyObject *self;
- FuncSet funcs;
-};
-
-bool pyext::boundmeth(flext_base *th,t_symbol *sym,int argc,t_atom *argv,void *data)
-{
- bounddata *obj = (bounddata *)data;
- pyext *pyth = static_cast<pyext *>(th);
-
- ThrState state = pyth->PyLock();
-
- PyObject *args = MakePyArgs(sym,argc,argv);
-
- // call all functions bound by this symbol
- for(FuncSet::iterator it = obj->funcs.begin(); it != obj->funcs.end(); ++it) {
- PyObject *ret = PyObject_CallObject(*it,args);
- if(!ret)
- PyErr_Print();
- else
- Py_DECREF(ret);
- }
-
- Py_XDECREF(args);
-
- pyth->PyUnlock(state);
- return true;
-}
-
-PyObject *pyext::pyext_bind(PyObject *,PyObject *args)
-{
- PyObject *self,*meth,*name;
- if(!PyArg_ParseTuple(args, "OOO:pyext_bind", &self,&name,&meth)) // borrowed references
- post("py/pyext - Wrong arguments!");
- else if(!PyInstance_Check(self) || !PyCallable_Check(meth)) {
- post("py/pyext - Wrong argument types!");
- }
- else {
- pyext *th = GetThis(self);
- if(!th) {
- PyErr_SetString(PyExc_RuntimeError,"pyext - _bind: instance not associated with pd object");
- return NULL;
- }
-
- const t_symbol *recv = pyObject_AsSymbol(name);
-
- void *data = NULL;
- if(recv && th->GetBoundMethod(recv,boundmeth,data)) {
- // already bound to that symbol and function
- bounddata *bdt = (bounddata *)data;
- FLEXT_ASSERT(bdt != NULL && bdt->self == self);
-
- FuncSet::iterator it = bdt->funcs.find(meth);
- if(it == bdt->funcs.end()) {
- bdt->funcs.insert(meth);
- Py_INCREF(meth);
- }
- }
- else {
- Py_INCREF(self); // self is borrowed reference
- Py_INCREF(meth);
-
- bounddata *data = new bounddata;
- data->self = self;
- data->funcs.insert(meth);
-
- th->BindMethod(recv,boundmeth,data);
- }
- }
-
- Py_INCREF(Py_None);
- return Py_None;
-}
-
-PyObject *pyext::pyext_unbind(PyObject *,PyObject *args)
-{
- PyObject *self,*meth,*name;
- if(!PyArg_ParseTuple(args, "OOO:pyext_bind", &self,&name,&meth)) // borrowed references
- post("py/pyext - Wrong arguments!");
- else if(!PyInstance_Check(self) || !PyCallable_Check(meth)) {
- post("py/pyext - Wrong argument types!");
- }
- else {
- pyext *th = GetThis(self);
- if(!th) {
- PyErr_SetString(PyExc_RuntimeError,"pyext - _unbind: instance not associated with pd object");
- return NULL;
- }
-
- const t_symbol *recv = pyObject_AsSymbol(name);
-
- void *data = NULL;
- if(recv && th->GetBoundMethod(recv,boundmeth,data)) {
- bounddata *bdt = (bounddata *)data;
- FLEXT_ASSERT(bdt != NULL);
-
- // erase from map
- // ATTENTION: meth is different from the element found in the map
- // it just points to the same instance method
- FuncSet::iterator it = bdt->funcs.find(meth);
- if(it != bdt->funcs.end()) {
- Py_DECREF(*it);
- bdt->funcs.erase(it);
- }
- else
- post("py/pyext - Function to unbind couldn't be found");
-
- if(bdt->funcs.empty()) {
- Py_DECREF(bdt->self);
- delete bdt;
-
- th->UnbindMethod(recv,boundmeth,NULL);
- }
- }
- }
-
- Py_INCREF(Py_None);
- return Py_None;
-}
-
-
-void pyext::ClearBinding()
-{
- // in case the object couldn't be constructed...
- if(!pyobj) return;
-
- pyext *th = GetThis(pyobj);
- if(!th) return;
-
- void *data = NULL;
- const t_symbol *sym = NULL;
-
- // unbind all
- while(th->UnbindMethod(sym,NULL,&data)) {
- bounddata *bdt = (bounddata *)data;
- if(bdt) {
- for(FuncSet::iterator it = bdt->funcs.begin(); it != bdt->funcs.end(); ++it)
- Py_DECREF(*it);
-
- Py_DECREF(bdt->self);
- delete bdt;
- }
- }
-}
diff --git a/externals/grill/py/source/clmeth.cpp b/externals/grill/py/source/clmeth.cpp
deleted file mode 100644
index 62da451b..00000000
--- a/externals/grill/py/source/clmeth.cpp
+++ /dev/null
@@ -1,426 +0,0 @@
-/*
-py/pyext - python external object for PD and Max/MSP
-
-Copyright (c)2002-2008 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-$LastChangedRevision: 26 $
-$LastChangedDate: 2008-01-03 17:20:03 +0100 (Thu, 03 Jan 2008) $
-$LastChangedBy: thomas $
-*/
-
-#include "pyext.h"
-
-
-PyMethodDef pyext::meth_tbl[] =
-{
-/*
- {"__init__", pyext::pyext__init__, METH_VARARGS, "Constructor"},
- {"__del__", pyext::pyext__del__, METH_VARARGS, "Destructor"},
-*/
- {"__str__", pyext::pyext__str__, METH_VARARGS, "stringify"},
- {"_outlet", pyext::pyext_outlet, METH_VARARGS,"Send message to outlet"},
-#if FLEXT_SYS == FLEXT_SYS_PD
- {"_tocanvas", pyext::pyext_tocanvas, METH_VARARGS,"Send message to canvas" },
-#endif
-
- { "_bind", pyext::pyext_bind, METH_VARARGS,"Bind function to a receiving symbol" },
- { "_unbind", pyext::pyext_unbind, METH_VARARGS,"Unbind function from a receiving symbol" },
-#ifdef FLEXT_THREADS
- { "_detach", pyext::pyext_detach, METH_VARARGS,"Set detach flag for called methods" },
- { "_stop", pyext::pyext_stop, METH_VARARGS,"Stop running threads" },
-#endif
- { "_invec", pyext::pyext_invec, METH_VARARGS,"Get input vector" },
- { "_outvec", pyext::pyext_outvec, METH_VARARGS,"Get output vector" },
- {NULL, NULL, 0, NULL} /* Sentinel */
-};
-
-PyMethodDef pyext::attr_tbl[] =
-{
- { "__setattr__", pyext::pyext_setattr, METH_VARARGS,"Set class attribute" },
- { "__getattr__", pyext::pyext_getattr, METH_VARARGS,"Get class attribute" },
- { NULL, NULL,0,NULL },
-};
-
-
-const char *pyext::pyext_doc =
- "py/pyext - python external object for PD and Max/MSP, (C)2002-2008 Thomas Grill\n"
- "\n"
- "This is the pyext base class. Available methods:\n"
- "_outlet(self,ix,args...): Send a message to an indexed outlet\n"
-#if FLEXT_SYS == FLEXT_SYS_PD
- "_tocanvas(self,args...): Send a message to the parent canvas\n"
-#endif
- "_bind(self,name,func): Bind a python function to a symbol\n"
- "_unbind(self,name,func): Unbind a python function from a symbol\n"
- "_isthreaded: Query whether threading is enabled\n"
-#ifdef FLEXT_THREADS
- "_detach(self,int): Define whether a called Python method has its own thread\n"
- "_stop(self): Stop running threads\n"
- "_shouldexit: Query whether threads should terminate\n"
-#endif
-;
-
-/*
-PyObject* pyext::pyext__init__(PyObject *,PyObject *args)
-{
-// post("pyext.__init__ called");
-
- Py_INCREF(Py_None);
- return Py_None;
-}
-
-PyObject* pyext::pyext__del__(PyObject *,PyObject *args)
-{
-// post("pyext.__del__ called");
-
- Py_INCREF(Py_None);
- return Py_None;
-}
-*/
-
-PyObject* pyext::pyext__str__(PyObject *,PyObject *args)
-{
- PyObject *self;
- if(!PyArg_ParseTuple(args, "O:pyext__str__",&self)) {
- // handle error
- ERRINTERNAL();
- return NULL;
- }
-
- return PyString_FromFormat("<pyext object %p>",self);
-}
-
-PyObject* pyext::pyext_setattr(PyObject *,PyObject *args)
-{
- PyObject *self,*name,*val;
- if(!PyArg_ParseTuple(args, "OOO:pyext_setattr", &self,&name,&val)) {
- // handle error
- ERRINTERNAL();
- return NULL;
- }
-
- bool handled = false;
-
-/*
- if(PyString_Check(name)) {
- char* sname = PyString_AsString(name);
- if (sname) {
-// post("pyext::setattr %s",sname);
- }
- }
-*/
- if(!handled) {
- if(PyInstance_Check(self))
- PyDict_SetItem(((PyInstanceObject *)self)->in_dict, name,val);
- else
- ERRINTERNAL();
- }
-
- Py_INCREF(Py_None);
- return Py_None;
-}
-
-PyObject* pyext::pyext_getattr(PyObject *,PyObject *args)
-{
- PyObject *self,*name,*ret = NULL;
- if(!PyArg_ParseTuple(args, "OO:pyext_getattr", &self,&name)) {
- // handle error
- ERRINTERNAL();
- }
-
- if(PyString_Check(name)) {
- char* sname = PyString_AS_STRING(name);
- if(sname) {
-#ifdef FLEXT_THREADS
- if(!strcmp(sname,"_shouldexit")) {
- pyext *ext = GetThis(self);
- if(ext)
- ret = PyLong_FromLong(ext->shouldexit?1:0);
- else {
- // return true for _shouldexit if association has been removed
- Py_INCREF(Py_True);
- ret = Py_True;
- }
- }
- else
-#endif
- if(!strcmp(sname,"_isthreaded")) {
- #ifdef FLEXT_THREADS
- Py_INCREF(Py_True);
- ret = Py_True;
- #else
- Py_INCREF(Py_False);
- ret = Py_False;
- #endif
- }
- }
- }
-
- if(!ret) {
-#if PY_VERSION_HEX >= 0x02020000
- ret = PyObject_GenericGetAttr(self,name); // new reference (?)
-#else
- if(PyInstance_Check(self))
- // borrowed reference
- ret = PyDict_GetItem(((PyInstanceObject *)self)->in_dict,name);
-#endif
- }
- return ret;
-}
-
-//! Send message to outlet
-PyObject *pyext::pyext_outlet(PyObject *,PyObject *args)
-{
- bool ok = false;
-
- // should always be a tuple!
- FLEXT_ASSERT(PyTuple_Check(args));
-
- int sz = PyTuple_GET_SIZE(args);
-
- // borrowed references!
- PyObject *self,*outl;
-
- if(
- sz >= 2 &&
- (self = PyTuple_GET_ITEM(args,0)) != NULL && PyInstance_Check(self) &&
- (outl = PyTuple_GET_ITEM(args,1)) != NULL && PyInt_Check(outl)
- ) {
- pyext *ext = GetThis(self);
- if(!ext) {
- PyErr_SetString(PyExc_RuntimeError,"pyext - _outlet: instance not associated with pd object");
- return NULL;
- }
-
- PyObject *val;
-#if 0
- if(sz == 3) {
- val = PyTuple_GET_ITEM(args,2); // borrow reference
- Py_INCREF(val);
- tp = PySequence_Check(val);
- }
- else
- tp = false;
-
- if(!tp)
- val = PySequence_GetSlice(args,2,sz); // new ref
-#else
- if(sz == 3) {
- val = PyTuple_GET_ITEM(args,2); // borrow reference
- Py_INCREF(val);
- }
- else
- val = PyTuple_GetSlice(args,2,sz); // new ref
-#endif
-
- int o = PyInt_AS_LONG(outl);
- if(o >= 1 && o <= ext->Outlets()) {
- // offset outlet by signal outlets
- o += ext->sigoutlets;
-
- if(ext->OutObject(ext,o-1,val))
- ok = true;
- else
- PyErr_SetString(PyExc_ValueError,"pyext - _outlet: invalid arguments");
- }
- else
- PyErr_SetString(PyExc_ValueError,"pyext - _outlet: index out of range");
-
- Py_DECREF(val);
- }
- else
- PyErr_SetString(PyExc_SyntaxError,"pyext - Syntax: _outlet(self,outlet,args...)");
-
- if(!ok) return NULL;
- Py_INCREF(Py_None);
- return Py_None;
-}
-
-
-
-#ifdef FLEXT_THREADS
-//! Detach threads
-PyObject *pyext::pyext_detach(PyObject *,PyObject *args)
-{
- PyObject *self;
- int val;
- if(!PyArg_ParseTuple(args, "Oi:pyext_detach",&self,&val)) {
- // handle error
- PyErr_SetString(PyExc_SyntaxError,"pyext - Syntax: _detach(self,[0/1/2])");
- return NULL;
- }
- else if(val < 0 || val > 2) {
- PyErr_SetString(PyExc_ValueError,"pyext - _detach must be in the range 0..2");
- return NULL;
- }
- else {
- pyext *ext = GetThis(self);
- if(!ext) {
- PyErr_SetString(PyExc_RuntimeError,"pyext - _detach: instance not associated with pd object");
- return NULL;
- }
-
- ext->detach = val;
- }
-
- Py_INCREF(Py_None);
- return Py_None;
-}
-
-//! Stop running threads
-PyObject *pyext::pyext_stop(PyObject *,PyObject *args)
-{
- PyObject *self;
- int val = -1;
- if(!PyArg_ParseTuple(args, "O|i:pyext_stop",&self,&val)) {
- // handle error
- PyErr_SetString(PyExc_SyntaxError,"pyext - Syntax: _stop(self,{wait time})");
- return NULL;
- }
- else if(val < 0) {
- PyErr_SetString(PyExc_ValueError,"pyext - _stop time must be >= 0");
- return NULL;
- }
- else {
- pyext *ext = GetThis(self);
- if(!ext) {
- PyErr_SetString(PyExc_RuntimeError,"pyext - _stop: instance not associated with pd object");
- return NULL;
- }
-
- int cnt;
- t_atom at;
- if(val >= 0) cnt = 1,flext::SetInt(at,val);
- else cnt = 0;
- ext->m_stop(cnt,&at);
- }
-
- Py_INCREF(Py_None);
- return Py_None;
-}
-
-#endif
-
-
-#if FLEXT_SYS == FLEXT_SYS_PD
-//! Send message to canvas
-PyObject *pyext::pyext_tocanvas(PyObject *,PyObject *args)
-{
- FLEXT_ASSERT(PyTuple_Check(args));
-
- int sz = PyTuple_GET_SIZE(args);
-
- bool ok = false;
- PyObject *self; // borrowed ref
- if(
- sz >= 1 &&
- (self = PyTuple_GET_ITEM(args,0)) != NULL && PyInstance_Check(self)
- ) {
- pyext *ext = GetThis(self);
- if(!ext) {
- PyErr_SetString(PyExc_RuntimeError,"pyext - _tocanvas: instance not associated with pd object");
- return NULL;
- }
-
- PyObject *val;
-
- bool tp =
- sz == 2 &&
- PySequence_Check(
- val = PyTuple_GET_ITEM(args,1) // borrowed ref
- );
-
- if(!tp)
- val = PyTuple_GetSlice(args,1,sz); // new ref
-
- flext::AtomListStatic<16> lst;
- const t_symbol *sym = GetPyArgs(lst,val);
- if(sym) {
- t_glist *gl = ext->thisCanvas();
- if(gl) {
- // \TODO find a flext-based non-locking method
- sys_lock();
- pd_forwardmess((t_class **)gl,lst.Count(),lst.Atoms());
- sys_unlock();
- }
-#ifdef FLEXT_DEBUG
- else
- post("pyext - no parent canvas?!");
-#endif
- ok = true;
- }
- else
- post("py/pyext - No data to send");
-
- if(!tp) Py_DECREF(val);
- }
-
- if(!ok) {
- PyErr_SetString(PyExc_SyntaxError,"pyext - Syntax: _tocanvas(self,args...)");
- return NULL;
- }
-
- Py_INCREF(Py_None);
- return Py_None;
-}
-#endif
-
-PyObject *pyext::pyext_invec(PyObject *,PyObject *args)
-{
- PyObject *self;
- int val = -1;
- if(!PyArg_ParseTuple(args, "O|i:pyext_invec",&self,&val)) {
- // handle error
- PyErr_SetString(PyExc_SyntaxError,"pyext - Syntax: _invec(self,inlet)");
- return NULL;
- }
- else if(val < 0) {
- PyErr_SetString(PyExc_ValueError,"pyext - _invec: index out of range");
- return NULL;
- }
- else {
- pyext *ext = GetThis(self);
- if(ext) {
- PyObject *b = ext->GetSig(val,true);
- if(b) return b;
- }
- else {
- PyErr_SetString(PyExc_RuntimeError,"pyext - _invec: instance not associated with pd object");
- return NULL;
- }
- }
-
- Py_INCREF(Py_None);
- return Py_None;
-}
-
-PyObject *pyext::pyext_outvec(PyObject *,PyObject *args)
-{
- PyObject *self;
- int val = -1;
- if(!PyArg_ParseTuple(args, "O|i:pyext_outvec",&self,&val)) {
- // handle error
- PyErr_SetString(PyExc_SyntaxError,"pyext - Syntax: _outvec(self,inlet)");
- return NULL;
- }
- else if(val < 0) {
- PyErr_SetString(PyExc_ValueError,"pyext - _outvec: index out of range");
- return NULL;
- }
- else {
- pyext *ext = GetThis(self);
- if(ext) {
- PyObject *b = ext->GetSig(val,false);
- if(b) return b;
- }
- else {
- PyErr_SetString(PyExc_RuntimeError,"pyext - _outvec: instance not associated with pd object");
- return NULL;
- }
- }
-
- Py_INCREF(Py_None);
- return Py_None;
-}
diff --git a/externals/grill/py/source/main.cpp b/externals/grill/py/source/main.cpp
deleted file mode 100644
index fc93084e..00000000
--- a/externals/grill/py/source/main.cpp
+++ /dev/null
@@ -1,15 +0,0 @@
-/*
-py/pyext - python external object for PD and MaxMSP
-
-Copyright (c)2002-2008 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-$LastChangedRevision: 26 $
-$LastChangedDate: 2008-01-03 17:20:03 +0100 (Thu, 03 Jan 2008) $
-$LastChangedBy: thomas $
-*/
-
-#include "pybase.h"
-
-
diff --git a/externals/grill/py/source/main.h b/externals/grill/py/source/main.h
deleted file mode 100644
index 0d5c001c..00000000
--- a/externals/grill/py/source/main.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
-py/pyext - python script object for PD and MaxMSP
-
-Copyright (c)2002-2008 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-$LastChangedRevision: 26 $
-$LastChangedDate: 2008-01-03 17:20:03 +0100 (Thu, 03 Jan 2008) $
-$LastChangedBy: thomas $
-*/
-
-#ifndef __MAIN_H
-#define __MAIN_H
-
-#include "pyprefix.h"
-
-#define PY__VERSION "0.2.1pre"
-
-
-#define PYEXT_MODULE "pyext" // name for module
-#define PYEXT_CLASS "_class" // name for base class
-
-#define REGNAME "_registry"
-
-#define PY_STOP_WAIT 100 // ms
-#define PY_STOP_TICK 1 // ms
-
-
-class pybase;
-
-class FifoEl
- : public FifoCell
-{
-public:
- void Set(pybase *t,PyObject *f,PyObject *a) { th = t,fun = f,args = a; }
- pybase *th;
- PyObject *fun,*args;
-};
-
-typedef PooledFifo<FifoEl> PyFifo;
-
-#endif
diff --git a/externals/grill/py/source/modmeth.cpp b/externals/grill/py/source/modmeth.cpp
deleted file mode 100644
index b388f240..00000000
--- a/externals/grill/py/source/modmeth.cpp
+++ /dev/null
@@ -1,304 +0,0 @@
-/*
-py/pyext - python external object for PD and Max/MSP
-
-Copyright (c)2002-2008 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-$LastChangedRevision: 26 $
-$LastChangedDate: 2008-01-03 17:20:03 +0100 (Thu, 03 Jan 2008) $
-$LastChangedBy: thomas $
-*/
-
-#include "pybase.h"
-
-
-// function table for module
-PyMethodDef pybase::func_tbl[] =
-{
- { "_send", pybase::py_send, METH_VARARGS,"Send message to a named object" },
-#ifdef FLEXT_THREADS
- { "_priority", pybase::py_priority, METH_VARARGS,"Set priority of current thread" },
-#endif
-
- { "_arraysupport", pybase::py_arraysupport, METH_NOARGS,"Query Python array support" },
- { "_samplerate", pybase::py_samplerate, METH_NOARGS,"Get system sample rate" },
- { "_blocksize", pybase::py_blocksize, METH_NOARGS,"Get system block size" },
-
- { "_searchpaths", pybase::py_searchpaths, METH_NOARGS,"Get system search paths" },
- { "_helppaths", pybase::py_helppaths, METH_NOARGS,"Get system help paths" },
-
-#if FLEXT_SYS == FLEXT_SYS_PD
- { "_getvalue", pybase::py_getvalue, METH_VARARGS,"Get value of a 'value' object" },
- { "_setvalue", pybase::py_setvalue, METH_VARARGS,"Set value of a 'value' object" },
-#endif
-
- { "_list", pybase::py_list, METH_VARARGS,"Make a list from arguments" },
- { "_tuple", pybase::py_tuple, METH_VARARGS,"Make a tuple from arguments" },
-
- {NULL, NULL, 0, NULL} // sentinel
-};
-
-const char *pybase::py_doc =
- "py/pyext - python external object for PD and Max/MSP, (C)2002-2008 Thomas Grill\n"
- "\n"
- "This is the pyext module. Available function:\n"
- "_send(args...): Send a message to a send symbol\n"
-#ifdef FLEXT_THREADS
- "_priority(int): Raise/lower thread priority\n"
-#endif
- "_samplerate(): Get system sample rate\n"
- "_blocksize(): Get current blocksize\n"
- "_getvalue(name): Get value of a 'value' object\n"
- "_setvalue(name,float): Set value of a 'value' object\n"
-
- "_list(args...): Make a list from args\n"
- "_tuple(args...): Make a tuple from args\n"
-;
-
-#ifdef FLEXT_THREADS
-void pybase::tick(void *)
-{
- Lock();
-
- if(!thrcount) {
- // all threads have stopped
- shouldexit = false;
- stoptick = 0;
- }
- else {
- // still active threads
- if(!--stoptick) {
- post("py/pyext - Threads couldn't be stopped entirely - %i remaining",thrcount);
- shouldexit = false;
- }
- else
- // continue waiting
- stoptmr.Delay(PY_STOP_TICK/1000.);
- }
-
- Unlock();
-}
-#endif
-
-void pybase::m_stop(int argc,const t_atom *argv)
-{
-#ifdef FLEXT_THREADS
- if(thrcount) {
- Lock();
-
- int wait = PY_STOP_WAIT;
- if(argc >= 1 && CanbeInt(argv[0])) wait = GetAInt(argv[0]);
-
- int ticks = wait/PY_STOP_TICK;
- if(stoptick) {
- // already stopping
- if(ticks < stoptick) stoptick = ticks;
- }
- else
- stoptick = ticks;
- shouldexit = true;
- stoptmr.Delay(PY_STOP_TICK/1000.);
-
- Unlock();
- }
-#endif
-}
-
-PyObject *pybase::py_samplerate(PyObject *self,PyObject *args)
-{
- return PyFloat_FromDouble(sys_getsr());
-}
-
-PyObject *pybase::py_blocksize(PyObject *self,PyObject *args)
-{
- return PyLong_FromLong(sys_getblksize());
-}
-
-PyObject *pybase::py_searchpaths(PyObject *self,PyObject *args)
-{
-#if FLEXT_SYS == FLEXT_SYS_PD && defined(PD_DEVEL_VERSION) && defined(PY_USE_INOFFICIAL)
- PyObject *ret = PyList_New(0);
- char *dir;
- for(int i = 0; (dir = namelist_get(sys_searchpath,i)) != NULL; ++i)
- PyList_Append(ret,PyString_FromString(dir));
- return ret;
-#else
- Py_INCREF(Py_None);
- return Py_None;
-#endif
-}
-
-PyObject *pybase::py_helppaths(PyObject *self,PyObject *args)
-{
-#if FLEXT_SYS == FLEXT_SYS_PD && defined(PD_DEVEL_VERSION) && defined(PY_USE_INOFFICIAL)
- PyObject *ret = PyList_New(0);
- char *dir;
- for(int i = 0; (dir = namelist_get(sys_helppath,i)) != NULL; ++i)
- PyList_Append(ret,PyString_FromString(dir));
- return ret;
-#else
- Py_INCREF(Py_None);
- return Py_None;
-#endif
-}
-
-PyObject *pybase::py_send(PyObject *,PyObject *args)
-{
- // should always be a tuple
- FLEXT_ASSERT(PyTuple_Check(args));
-
- const int sz = PyTuple_GET_SIZE(args);
-
- const t_symbol *recv;
- if(
- sz >= 1 &&
- (recv = pyObject_AsSymbol(PyTuple_GET_ITEM(args,0))) != NULL
- ) {
- PyObject *val;
-
-#if 0
- bool tp =
- sz == 2 &&
- PySequence_Check(
- val = PyTuple_GET_ITEM(args,1) // borrowed ref
- );
-
- if(!tp)
- val = PySequence_GetSlice(args,1,sz); // new ref
-#else
- if(sz == 2) {
- val = PyTuple_GET_ITEM(args,1); // borrow reference
- Py_INCREF(val);
- }
- else
- val = PySequence_GetSlice(args,1,sz); // new ref
-#endif
-
- AtomListStatic<16> lst;
- const t_symbol *sym = GetPyArgs(lst,val);
- Py_DECREF(val);
-
- if(sym) {
- bool ok = Forward(recv,sym,lst.Count(),lst.Atoms());
-#ifdef FLEXT_DEBUG
- if(!ok)
- post("py/pyext - Receiver doesn't exist");
-#endif
- Py_INCREF(Py_None);
- return Py_None;
- }
-/*
- else if(PyErr_Occurred())
- PyErr_Print();
- else
- post("py/pyext - No data to send");
-*/
- else {
- FLEXT_ASSERT(PyErr_Occurred());
- return NULL;
- }
- }
-/*
- else
- post("py/pyext - Send name is invalid");
-*/
- else {
- PyErr_SetString(PyExc_ValueError,"py/pyext - Send name is invalid");
- return NULL;
- }
-}
-
-#ifdef FLEXT_THREADS
-PyObject *pybase::py_priority(PyObject *self,PyObject *args)
-{
- int val;
- if(!PyArg_ParseTuple(args, "i:py_priority", &val)) {
- post("py/pyext - Syntax: _priority [int]");
- }
- else
- RelPriority(val);
-
- Py_INCREF(Py_None);
- return Py_None;
-}
-#endif
-
-#if FLEXT_SYS == FLEXT_SYS_PD
-PyObject *pybase::py_getvalue(PyObject *self,PyObject *args)
-{
- FLEXT_ASSERT(PyTuple_Check(args));
-
- const int sz = PyTuple_GET_SIZE(args);
- const t_symbol *sym;
- PyObject *ret;
-
- if(
- sz == 1 &&
- (sym = pyObject_AsSymbol(PyTuple_GET_ITEM(args,0))) != NULL
- ) {
- float f;
- if(value_getfloat(const_cast<t_symbol *>(sym),&f)) {
- post("py/pyext - Could not get value '%s'",GetString(sym));
- Py_INCREF(Py_None);
- ret = Py_None;
- }
- else
- ret = PyFloat_FromDouble(f);
- }
- else {
- post("py/pyext - Syntax: _getvalue [name]");
- Py_INCREF(Py_None);
- ret = Py_None;
- }
- return ret;
-}
-
-PyObject *pybase::py_setvalue(PyObject *self,PyObject *args)
-{
- FLEXT_ASSERT(PyTuple_Check(args));
-
- const int sz = PyTuple_GET_SIZE(args);
- const t_symbol *sym;
- PyObject *val; // borrowed reference
-
- if(
- sz == 2 &&
- (sym = pyObject_AsSymbol(PyTuple_GET_ITEM(args,0))) != NULL &&
- PyNumber_Check(val = PyTuple_GET_ITEM(args,1))
- ) {
- float f = (float)PyFloat_AsDouble(val);
-
- if(value_setfloat(const_cast<t_symbol *>(sym),f))
- post("py/pyext - Could not set value '%s'",GetString(sym));
- }
- else
- post("py/pyext - Syntax: _setvalue [name] [value]");
-
- Py_INCREF(Py_None);
- return Py_None;
-}
-#endif
-
-PyObject *pybase::py_list(PyObject *,PyObject *args)
-{
- // should always be a tuple
- FLEXT_ASSERT(PyTuple_Check(args));
-
- const int sz = PyTuple_GET_SIZE(args);
- PyObject *ret = PyList_New(sz);
- for(int i = 0; i < sz; ++i) {
- PyObject *el = PyTuple_GET_ITEM(args,i);
- Py_INCREF(el);
- PyList_SET_ITEM(ret,i,el);
- }
- return ret;
-}
-
-PyObject *pybase::py_tuple(PyObject *,PyObject *args)
-{
- // should always be a tuple
- FLEXT_ASSERT(PyTuple_Check(args));
- Py_INCREF(args);
- return args;
-}
diff --git a/externals/grill/py/source/py.cpp b/externals/grill/py/source/py.cpp
deleted file mode 100644
index 1745ad74..00000000
--- a/externals/grill/py/source/py.cpp
+++ /dev/null
@@ -1,419 +0,0 @@
-/*
-py/pyext - python script object for PD and Max/MSP
-
-Copyright (c)2002-2008 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-$LastChangedRevision: 26 $
-$LastChangedDate: 2008-01-03 17:20:03 +0100 (Thu, 03 Jan 2008) $
-$LastChangedBy: thomas $
-*/
-
-#include "pybase.h"
-
-class pyobj
- : public pybase
- , public flext_base
-{
- FLEXT_HEADER_S(pyobj,flext_base,Setup)
-
-public:
- pyobj(int argc,const t_atom *argv);
- ~pyobj();
-
-protected:
- virtual void Exit();
-
- virtual bool CbMethodResort(int n,const t_symbol *s,int argc,const t_atom *argv);
- virtual void CbClick();
-
- void m_help();
-
- void m_reload() { Reload(); }
- void m_reload_(int argc,const t_atom *argv) { args(argc,argv); Reload(); }
- void m_set(int argc,const t_atom *argv);
- void m_dir_() { m__dir(function); }
- void m_doc_() { m__doc(function); }
-
- const t_symbol *funname;
- PyObject *function;
- bool withfunction;
-
- virtual void LoadModule();
- virtual void UnloadModule();
-
- virtual void Load();
- virtual void Unload();
-
- bool SetFunction(const t_symbol *func);
- bool ResetFunction();
-
- virtual void DumpOut(const t_symbol *sym,int argc,const t_atom *argv);
-
- PyObject **objects;
-
-private:
-
- virtual void callpy(PyObject *fun,PyObject *args);
-
- static void Setup(t_classid c);
-
- FLEXT_CALLBACK(m_help)
- FLEXT_CALLBACK(m_reload)
- FLEXT_CALLBACK_V(m_reload_)
- FLEXT_CALLBACK_V(m_set)
- FLEXT_CALLBACK(m_dir_)
- FLEXT_CALLBACK(m_doc_)
-
- // callbacks
- FLEXT_ATTRVAR_I(detach)
- FLEXT_ATTRVAR_B(pymsg)
- FLEXT_ATTRVAR_B(respond)
-
- FLEXT_CALLBACK_V(m_stop)
- FLEXT_CALLBACK(m_dir)
- FLEXT_CALLGET_V(mg_dir)
- FLEXT_CALLBACK(m_doc)
-
- FLEXT_CALLBACK(CbClick)
-
-#ifdef FLEXT_THREADS
- FLEXT_CALLBACK_T(tick)
-#endif
-};
-
-FLEXT_LIB_V("py",pyobj)
-
-
-void pyobj::Setup(t_classid c)
-{
- FLEXT_CADDMETHOD_(c,0,"doc",m_doc);
- FLEXT_CADDMETHOD_(c,0,"dir",m_dir);
-#ifdef FLEXT_THREADS
- FLEXT_CADDATTR_VAR1(c,"detach",detach);
- FLEXT_CADDMETHOD_(c,0,"stop",m_stop);
-#endif
-
- FLEXT_CADDMETHOD_(c,0,"help",m_help);
- FLEXT_CADDMETHOD_(c,0,"reload",m_reload_);
- FLEXT_CADDMETHOD_(c,0,"reload.",m_reload);
- FLEXT_CADDMETHOD_(c,0,"doc+",m_doc_);
- FLEXT_CADDMETHOD_(c,0,"dir+",m_dir_);
-
- FLEXT_CADDMETHOD_(c,0,"set",m_set);
-
- FLEXT_CADDMETHOD_(c,0,"edit",CbClick);
-
- FLEXT_CADDATTR_VAR1(c,"py",pymsg);
- FLEXT_CADDATTR_VAR1(c,"respond",respond);
-}
-
-pyobj::pyobj(int argc,const t_atom *argv)
- : funname(NULL)
- , function(NULL)
- , withfunction(false)
- , objects(NULL)
-{
-#ifdef FLEXT_THREADS
- FLEXT_ADDTIMER(stoptmr,tick);
-#endif
-
- ThrState state = PyLockSys();
-
- int inlets;
- if(argc && CanbeInt(*argv)) {
- inlets = GetAInt(*argv);
- if(inlets < 0) inlets = 1;
- argv++,argc--;
- }
- else
- // -1 signals non-explicit definition
- inlets = -1;
-
- if(inlets >= 1) {
- objects = new PyObject *[inlets];
- for(int i = 0; i < inlets; ++i) { objects[i] = Py_None; Py_INCREF(Py_None); }
- }
-
- AddInAnything(1+(inlets < 0?1:inlets));
- AddOutAnything();
-
- const t_symbol *funnm = NULL;
-
- // init script module
- if(argc) {
- AddCurrentPath(this);
-
- const char *sn = GetAString(*argv);
- argv++,argc--;
-
- if(sn) {
- char modnm[64];
- strcpy(modnm,sn);
-
- char *pt = strrchr(modnm,'.'); // search for last dot
- if(pt && *pt) {
- funnm = MakeSymbol(pt+1);
- *pt = 0;
- }
-
- if(*modnm)
- ImportModule(modnm);
- else
- ImportModule(NULL);
- }
- else
- PyErr_SetString(PyExc_ValueError,"Invalid module name");
- }
-
- Register(GetRegistry(REGNAME));
-
- if(funnm || argc) {
- if(!funnm) {
- funnm = GetASymbol(*argv);
- argv++,argc--;
- }
-
- if(funnm)
- SetFunction(funnm);
- else
- PyErr_SetString(PyExc_ValueError,"Invalid function name");
- }
-
- if(argc) args(argc,argv);
-
- Report();
-
- PyUnlock(state);
-}
-
-pyobj::~pyobj()
-{
- ThrState state = PyLockSys();
- if(objects) {
- for(int i = 0; i < CntIn()-1; ++i) Py_DECREF(objects[i]);
- delete[] objects;
- }
-
- Unregister(GetRegistry(REGNAME));
- Report();
- PyUnlock(state);
-}
-
-void pyobj::Exit()
-{
- pybase::Exit();
- flext_base::Exit();
-}
-
-void pyobj::m_set(int argc,const t_atom *argv)
-{
- ThrState state = PyLockSys();
-
- // function name has precedence
- if(argc >= 2) {
- const char *sn = GetAString(*argv);
- ++argv,--argc;
-
- if(sn) {
-// if(!module || !strcmp(sn,PyModule_GetName(module)))
- {
- ImportModule(sn);
- Register(GetRegistry(REGNAME));
- }
- }
- else
- PyErr_SetString(PyExc_ValueError,"Invalid module name");
- }
-
- if(argc) {
- const t_symbol *fn = GetASymbol(*argv);
- if(fn)
- SetFunction(fn);
- else
- PyErr_SetString(PyExc_ValueError,"Invalid function name");
- }
-
- Report();
-
- PyUnlock(state);
-}
-
-void pyobj::m_help()
-{
- post("");
- post("%s %s - python script object, (C)2002-2008 Thomas Grill",thisName(),PY__VERSION);
-#ifdef FLEXT_DEBUG
- post("DEBUG VERSION, compiled on " __DATE__ " " __TIME__);
-#endif
-
- post("Arguments: %s [script name] [function name] {args...}",thisName());
-
- post("Inlet 1:messages to control the py object");
- post(" 2:call python function with message as argument(s)");
- post("Outlet: 1:return values from python function");
- post("Methods:");
- post("\thelp: shows this help");
- post("\tbang: call script without arguments");
- post("\tset [script name] [function name]: set (script and) function name");
- post("\treload {args...}: reload python script");
- post("\treload. : reload with former arguments");
- post("\tdoc: display module doc string");
- post("\tdoc+: display function doc string");
- post("\tdir: dump module dictionary");
- post("\tdir+: dump function dictionary");
-#ifdef FLEXT_THREADS
- post("\tdetach 0/1/2: detach threads");
- post("\tstop {wait time (ms)}: stop threads");
-#endif
- post("");
-}
-
-bool pyobj::ResetFunction()
-{
- // function was borrowed from dict!
- function = NULL;
-
- if(!dict)
- post("%s - No namespace available",thisName());
- else {
- if(funname) {
- function = PyDict_GetItemString(dict,(char *)GetString(funname)); // borrowed!!!
-
- if(!function && dict == module_dict)
- // search also in __builtins__
- function = PyDict_GetItemString(builtins_dict,(char *)GetString(funname)); // borrowed!!!
-
- if(!function)
- PyErr_SetString(PyExc_AttributeError,"Function not found");
- else if(!PyCallable_Check(function)) {
- function = NULL;
- PyErr_SetString(PyExc_TypeError,"Attribute is not callable");
- }
- }
- }
-
- // exception could be set here
- return function != NULL;
-}
-
-bool pyobj::SetFunction(const t_symbol *func)
-{
- if(func) {
- funname = func;
- withfunction = ResetFunction();
- }
- else {
- function = NULL,funname = NULL;
- withfunction = false;
- }
-
- // exception could be set here
- return withfunction;
-}
-
-
-void pyobj::LoadModule()
-{
- SetFunction(funname);
-}
-
-void pyobj::UnloadModule()
-{
-}
-
-void pyobj::Load()
-{
- ResetFunction();
-}
-
-void pyobj::Unload()
-{
-// SetFunction(NULL);
- function = NULL; // just clear the PyObject, not the function name
-}
-
-void pyobj::callpy(PyObject *fun,PyObject *args)
-{
- PyObject *ret = PyObject_CallObject(fun,args);
- if(ret) {
- OutObject(this,0,ret); // exception might be raised here
- Py_DECREF(ret);
- }
-}
-
-bool pyobj::CbMethodResort(int n,const t_symbol *s,int argc,const t_atom *argv)
-{
- if(n == 0 && s != sym_bang)
- return flext_base::CbMethodResort(n,s,argc,argv);
-
- ThrState state = PyLockSys();
-
- bool ret = false;
-
- if(objects && n >= 1) {
- // store args
- PyObject *&obj = objects[n-1];
- Py_DECREF(obj);
- obj = MakePyArg(s,argc,argv); // steal reference
-
- if(n > 1) ret = true; // just store, don't trigger
- }
-
- if(!ret) {
- if(withfunction) {
- if(function) {
- Py_INCREF(function);
-
- PyObject *pargs;
-
- if(objects || CntIn() == 1) {
- int inlets = CntIn()-1;
- pargs = PyTuple_New(inlets);
- for(int i = 0; i < inlets; ++i) {
- Py_INCREF(objects[i]);
- PyTuple_SET_ITEM(pargs,i,objects[i]);
- }
- }
- else
- // construct tuple from args
- // if n == 0, it's a pure bang
- pargs = MakePyArgs(n?s:NULL,argc,argv);
-
- gencall(function,pargs); // references are stolen
- ret = true;
- }
- else
- PyErr_SetString(PyExc_RuntimeError,"No function set");
- }
- else if(module) {
- // no function defined as creation argument -> use message tag
- if(s) {
- PyObject *func = PyObject_GetAttrString(module,const_cast<char *>(GetString(s)));
- if(func) {
- PyObject *pargs = MakePyArgs(sym_list,argc,argv);
- gencall(func,pargs);
- ret = true;
- }
- }
- else
- PyErr_SetString(PyExc_RuntimeError,"No function set");
- }
-
- Report();
- }
-
- PyUnlock(state);
-
- Respond(ret);
-
- return ret;
-}
-
-void pyobj::CbClick() { pybase::OpenEditor(); }
-
-void pyobj::DumpOut(const t_symbol *sym,int argc,const t_atom *argv)
-{
- ToOutAnything(GetOutAttr(),sym?sym:thisTag(),argc,argv);
-}
diff --git a/externals/grill/py/source/pyargs.cpp b/externals/grill/py/source/pyargs.cpp
deleted file mode 100644
index 73d8f027..00000000
--- a/externals/grill/py/source/pyargs.cpp
+++ /dev/null
@@ -1,231 +0,0 @@
-/*
-py/pyext - python external object for PD and MaxMSP
-
-Copyright (c)2002-2008 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-$LastChangedRevision: 26 $
-$LastChangedDate: 2008-01-03 17:20:03 +0100 (Thu, 03 Jan 2008) $
-$LastChangedBy: thomas $
-*/
-
-#include "pybase.h"
-#include "pyatom.h"
-
-static const t_symbol *symatom = flext::MakeSymbol(" py ");
-
-static PyObject *MakePyAtom(const t_atom &at)
-{
- if(flext::IsSymbol(at))
- return pySymbol_FromSymbol(flext::GetSymbol(at));
-#if 1
- else if(flext::CanbeFloat(at)) {
- // if a number can be an integer... let it be an integer!
- int ival = flext::GetAInt(at);
- double fval = flext::GetAFloat(at);
- return (double)ival == fval?PyInt_FromLong(ival):PyFloat_FromDouble(fval);
- }
-#else
- else if(flext::IsFloat(at))
- return PyFloat_FromDouble(flext::GetFloat(at));
- else if(flext::IsInt(at))
- return PyInt_FromLong(flext::GetInt(at));
-#endif
- return NULL;
-}
-
-static PyObject *MakePyAtom(int argc,const t_atom *argv)
-{
- if(argc != sizeof(size_t)/2) return NULL;
-
- size_t atom = 0;
- for(int i = sizeof(size_t)/2-1; i >= 0; --i)
- if(!flext::CanbeInt(argv[i])) {
- atom = 0;
- break;
- }
- else
- atom = (atom<<16)+flext::GetAInt(argv[i]);
-
- if(atom) {
- PyObject *el = PyAtom::Retrieve(atom);
- if(!el) el = Py_None; // object already gone....
- Py_INCREF(el);
- return el;
- }
- else
- return NULL;
-}
-
-PyObject *pybase::MakePyArgs(const t_symbol *s,int argc,const t_atom *argv,int inlet)
-{
- PyObject *ret,*el;
-
- if(s == symatom && (el = MakePyAtom(argc,argv)) != NULL) {
- ret = PyTuple_New(1);
- PyTuple_SET_ITEM(ret,0,el);
- }
- else {
- bool any = IsAnything(s);
- ret = PyTuple_New(argc+(any?1:0)+(inlet >= 0?1:0));
-
- int pix = 0;
-
- if(inlet >= 0)
- PyTuple_SET_ITEM(ret,pix++,PyInt_FromLong(inlet));
-
- if(any)
- PyTuple_SET_ITEM(ret,pix++,pySymbol_FromSymbol(s));
-
- for(int i = 0; i < argc; ++i) {
- el = MakePyAtom(argv[i]);
- if(!el) {
- post("py/pyext: cannot convert argument %i",any?i+1:i);
-
- el = Py_None;
- Py_INCREF(Py_None);
- }
-
- PyTuple_SET_ITEM(ret,pix++,el); // reference stolen
- }
- }
-
- return ret;
-}
-
-PyObject *pybase::MakePyArg(const t_symbol *s,int argc,const t_atom *argv)
-{
- PyObject *ret;
-
- if(s == symatom && (ret = MakePyAtom(argc,argv)) != NULL) {
- // ok!
- }
- else if(argc == 1 && !IsAnything(s))
- // convert atoms and one-element lists
- ret = MakePyAtom(*argv);
- else {
- bool any = s != sym_list;
- ret = PyTuple_New(argc+(any?1:0));
-
- int pix = 0;
- if(any)
- PyTuple_SET_ITEM(ret,pix++,pySymbol_FromSymbol(s));
-
- for(int i = 0; i < argc; ++i) {
- PyObject *el = MakePyAtom(argv[i]);
- if(!el) {
- post("py/pyext: cannot convert argument %i",any?i+1:i);
-
- el = Py_None;
- Py_INCREF(Py_None);
- }
-
- PyTuple_SET_ITEM(ret,pix++,el); // reference stolen
- }
- }
-
- return ret;
-}
-
-inline bool issym(PyObject *p)
-{
- return PyString_Check(p) || pySymbol_Check(p);
-}
-
-inline bool isseq(PyObject *p)
-{
- return PySequence_Check(p) && !issym(p);
-}
-
-const t_symbol *pybase::getone(t_atom &at,PyObject *arg)
-{
- if(PyInt_Check(arg)) { flext::SetInt(at,PyInt_AsLong(arg)); return sym_fint; }
- else if(PyLong_Check(arg)) { flext::SetInt(at,PyLong_AsLong(arg)); return sym_fint; }
- else if(PyFloat_Check(arg)) { flext::SetFloat(at,(float)PyFloat_AsDouble(arg)); return flext::sym_float; }
- else if(pySymbol_Check(arg)) { flext::SetSymbol(at,pySymbol_AS_SYMBOL(arg)); return flext::sym_symbol; }
- else if(PyString_Check(arg)) { flext::SetString(at,PyString_AS_STRING(arg)); return flext::sym_symbol; }
- else {
- PyObject *tp = PyObject_Type(arg);
- PyObject *stp = tp?PyObject_Str(tp):NULL;
- char *tmp = "";
- if(stp) tmp = PyString_AS_STRING(stp);
- flext::post("py/pyext: Could not convert argument %s",tmp);
- Py_XDECREF(stp);
- Py_XDECREF(tp);
-
- flext::SetSymbol(at,flext::sym__);
- return sym_symbol;
- }
-}
-
-const t_symbol *pybase::getlist(t_atom *lst,PyObject *seq,int cnt,int offs)
-{
- for(int ix = 0; ix < cnt; ++ix) {
- PyObject *arg = PySequence_GetItem(seq,ix+offs); // new reference
- getone(lst[ix],arg);
- Py_DECREF(arg);
- }
- return flext::sym_list;
-}
-
-const t_symbol *pybase::GetPyArgs(AtomList &lst,PyObject *pValue,int offs)
-{
- if(pValue == NULL) return false;
-
- // output bang on None returned
- if(pValue == Py_None) return sym_bang;
-
- // analyze return value or tuple
- const t_symbol *sym = NULL;
-
- if(isseq(pValue)) {
- // Python might crash here if pValue is no "real" sequence, but rather e.g. an instance
-
- int rargc = PySequence_Size(pValue);
-
- if(rargc == 2) {
- // check if syntax is symbol/string, list -> anything message
- PyObject *s = PySequence_GetItem(pValue,0);
- PyObject *l = PySequence_GetItem(pValue,1);
-
- if(issym(s) && isseq(l)) {
- // is anything message
- rargc = PySequence_Size(l);
- lst(offs+rargc);
- getlist(lst.Atoms(),l,rargc);
- sym = pyObject_AsSymbol(s);
- }
- else {
- // (symbol,atom) list
- lst(offs+rargc);
- sym = getlist(lst.Atoms(),pValue,rargc);
- }
-
- Py_DECREF(s);
- Py_DECREF(l);
- }
- else {
- lst(offs+rargc);
- sym = getlist(lst.Atoms(),pValue,rargc);
- }
- }
- else {
- lst(offs+1);
- sym = getone(lst[offs],pValue);
- }
-
- return sym;
-}
-
-
-const t_symbol *pybase::GetPyAtom(AtomList &lst,PyObject *obj)
-{
- size_t atom = PyAtom::Register(obj);
- size_t szat = sizeof(atom)/2;
-
- lst(szat);
- for(size_t i = 0; i < szat; ++i,atom >>= 16)
- flext::SetInt(lst[i],(int)(atom&((1<<16)-1)));
- return symatom;
-}
diff --git a/externals/grill/py/source/pyatom.cpp b/externals/grill/py/source/pyatom.cpp
deleted file mode 100644
index 7b45028e..00000000
--- a/externals/grill/py/source/pyatom.cpp
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
-py/pyext - python script object for PD and Max/MSP
-
-Copyright (c)2002-2008 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-$LastChangedRevision: 26 $
-$LastChangedDate: 2008-01-03 17:20:03 +0100 (Thu, 03 Jan 2008) $
-$LastChangedBy: thomas $
-*/
-
-#include "pyatom.h"
-#include <map>
-
-#define INTV 0.01
-
-typedef std::map<size_t,PyObject *> ObjMap;
-
-static ObjMap objmap;
-static size_t collix = 0,curix = 0;
-static double last = 0;
-
-size_t PyAtom::Register(PyObject *obj)
-{
- Collect();
-
- Py_INCREF(obj);
- objmap[++curix] = obj;
-
-#ifdef _DEBUG
-// post("REG %p (%i)\n",obj,objmap.size());
-#endif
- return curix;
-}
-
-PyObject *PyAtom::Retrieve(size_t id)
-{
- ObjMap::iterator it = objmap.find(id);
- PyObject *ret = it == objmap.end()?NULL:it->second;
- Collect();
- return ret;
-}
-
-void PyAtom::Collect()
-{
- for(;;) {
- ObjMap::iterator it = objmap.begin();
- if(it == objmap.end() || it->first > collix) break;
-
- PyObject *obj = it->second;
- Py_DECREF(obj);
- objmap.erase(it);
-
-#ifdef _DEBUG
-// post("DEL %p\n",obj);
-#endif
- }
-
- // schedule next collect time
- double tm = flext::GetTime();
- if(tm > last+INTV) last = tm,collix = curix;
-}
diff --git a/externals/grill/py/source/pyatom.h b/externals/grill/py/source/pyatom.h
deleted file mode 100644
index beff390a..00000000
--- a/externals/grill/py/source/pyatom.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
-py/pyext - python script object for PD and Max/MSP
-
-Copyright (c)2002-2008 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-$LastChangedRevision: 26 $
-$LastChangedDate: 2008-01-03 17:20:03 +0100 (Thu, 03 Jan 2008) $
-$LastChangedBy: thomas $
-*/
-
-#include "main.h"
-
-class PyAtom
-{
-public:
- static size_t Register(PyObject *obj);
- static PyObject *Retrieve(size_t id);
- static void Collect();
-};
diff --git a/externals/grill/py/source/pybase.cpp b/externals/grill/py/source/pybase.cpp
deleted file mode 100644
index 033219e4..00000000
--- a/externals/grill/py/source/pybase.cpp
+++ /dev/null
@@ -1,923 +0,0 @@
-/*
-py/pyext - python external object for PD and MaxMSP
-
-Copyright (c)2002-2008 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-$LastChangedRevision: 26 $
-$LastChangedDate: 2008-01-03 18:00:03 +0100 (Thu, 03 Jan 2008) $
-$LastChangedBy: thomas $
-*/
-
-#include "pybase.h"
-#include <map>
-
-#if FLEXT_OS == FLEXT_OS_WIN
-#include <windows.h>
-#elif FLEXT_OS == FLEXT_OS_MAC
-#include <ApplicationServices/ApplicationServices.h>
-#endif
-
-static PyMethodDef StdOut_Methods[] =
-{
- { "write", pybase::StdOut_Write, 1 },
- { NULL, NULL, }
-};
-
-static PyObject *gcollect = NULL;
-
-#ifdef FLEXT_THREADS
-
-class ThrCmp
-{
-public:
- inline bool operator()(const flext::thrid_t &a,const flext::thrid_t &b) const
- {
- if(sizeof(a) == sizeof(size_t))
- return *(size_t *)&a < *(size_t *)&b;
- else
- return memcmp(&a,&b,sizeof(a)) < 0;
- }
-};
-
-
-int pybase::lockcount = 0;
-
-#ifndef PY_USE_GIL
-static PyInterpreterState *pymain = NULL;
-
-typedef std::map<flext::thrid_t,ThrState,ThrCmp> PyThrMap;
-
-static PyThrMap pythrmap;
-ThrState pybase::pythrsys = NULL;
-
-ThrState pybase::FindThreadState()
-{
- flext::thrid_t id = flext::GetThreadId();
- PyThrMap::iterator it = pythrmap.find(id);
- if(it == pythrmap.end()) {
- // Make new thread state
- ThrState st = PyThreadState_New(pymain);
- pythrmap[id] = st;
- return st;
- }
- else
- return it->second;
-}
-
-void pybase::FreeThreadState()
-{
- flext::thrid_t id = flext::GetThreadId();
- PyThrMap::iterator it = pythrmap.find(id);
- if(it != pythrmap.end()) {
- // clear out any cruft from thread state object
- PyThreadState_Clear(it->second);
- // delete my thread state object
- PyThreadState_Delete(it->second);
- // delete from map
- pythrmap.erase(it);
- }
-}
-#endif // PY_USE_GIL
-
-PyFifo pybase::qufifo;
-flext::ThrCond pybase::qucond;
-#endif
-
-
-PyObject *pybase::module_obj = NULL;
-PyObject *pybase::module_dict = NULL;
-
-PyObject *pybase::builtins_obj = NULL;
-PyObject *pybase::builtins_dict = NULL;
-
-const t_symbol *pybase::sym_fint = NULL;
-const t_symbol *pybase::sym_response = NULL;
-
-// -----------------------------------------------------------------------------------------------------------
-
-
-void initsymbol();
-void initsamplebuffer();
-void initbundle();
-
-void pybase::lib_setup()
-{
- post("");
- post("------------------------------------------------");
- post("py/pyext %s - python script objects",PY__VERSION);
- post("(C)2002-2008 Thomas Grill - http://grrrr.org/ext");
- post("");
- post("using Python %s",Py_GetVersion());
-
-#ifdef FLEXT_DEBUG
- post("");
- post("DEBUG version compiled on %s %s",__DATE__,__TIME__);
-#endif
-
- // -------------------------------------------------------------
-
- sym_response = flext::MakeSymbol("response");
-
-#if FLEXT_SYS == FLEXT_SYS_PD
- sym_fint = sym_float;
-#else
- sym_fint = sym_int;
-#endif
-
- // -------------------------------------------------------------
-
- Py_Initialize();
-
-#ifdef FLEXT_DEBUG
-// Py_DebugFlag = 1;
-// Py_VerboseFlag = 1;
-#else
- Py_OptimizeFlag = 1;
-#endif
-
-#ifdef FLEXT_THREADS
- // enable thread support and acquire the global thread lock
- PyEval_InitThreads();
-
-#ifndef PY_USE_GIL
- // get thread state
- pythrsys = PyThreadState_Get();
- // get main interpreter state
- pymain = pythrsys->interp;
-
- // add thread state of main thread to map
- pythrmap[GetThreadId()] = pythrsys;
-#endif // PY_USE_GIL
-
-#endif
-
- // sys.argv must be set to empty tuple
- char *nothing = "";
- PySys_SetArgv(0,&nothing);
-
- // register/initialize pyext module only once!
- module_obj = Py_InitModule(PYEXT_MODULE, func_tbl);
- module_dict = PyModule_GetDict(module_obj); // borrowed reference
-
- PyModule_AddStringConstant(module_obj,"__doc__",(char *)py_doc);
-
- // redirect stdout
- PyObject* py_out;
- py_out = Py_InitModule("stdout", StdOut_Methods);
- PySys_SetObject("stdout", py_out);
- py_out = Py_InitModule("stderr", StdOut_Methods);
- PySys_SetObject("stderr", py_out);
-
- // get garbage collector function
- PyObject *gcobj = PyImport_ImportModule("gc");
- if(gcobj) {
- gcollect = PyObject_GetAttrString(gcobj,"collect");
- Py_DECREF(gcobj);
- }
-
- builtins_obj = PyImport_ImportModule("__builtin__");
- builtins_dict = PyModule_GetDict(builtins_obj); // borrowed reference
-
- // add symbol type
- initsymbol();
- PyModule_AddObject(module_obj,"Symbol",(PyObject *)&pySymbol_Type);
-
- // pre-defined symbols
- PyModule_AddObject(module_obj,"_s_",(PyObject *)pySymbol__);
- PyModule_AddObject(module_obj,"_s_bang",(PyObject *)pySymbol_bang);
- PyModule_AddObject(module_obj,"_s_list",(PyObject *)pySymbol_list);
- PyModule_AddObject(module_obj,"_s_symbol",(PyObject *)pySymbol_symbol);
- PyModule_AddObject(module_obj,"_s_float",(PyObject *)pySymbol_float);
- PyModule_AddObject(module_obj,"_s_int",(PyObject *)pySymbol_int);
-
- // add samplebuffer type
- initsamplebuffer();
- PyModule_AddObject(module_obj,"Buffer",(PyObject *)&pySamplebuffer_Type);
-
- // add message bundle type
- initbundle();
- PyModule_AddObject(module_obj,"Bundle",(PyObject *)&pyBundle_Type);
-
- // -------------------------------------------------------------
-#if FLEXT_SYS == FLEXT_SYS_PD && defined(PD_DEVEL_VERSION) && defined(PY_USE_INOFFICIAL)
- // add PD paths
-
- char *dir;
- for(int i = 0; (dir = namelist_get(sys_searchpath,i)) != NULL; ++i) {
- AddToPath(dir);
- }
-#endif
- // -------------------------------------------------------------
-
- FLEXT_SETUP(pyobj);
- FLEXT_SETUP(pymeth);
- FLEXT_SETUP(pyext);
-#ifndef PY_NODSP
- FLEXT_DSP_SETUP(pydsp);
-#endif
-
-#ifdef FLEXT_THREADS
- // release global lock
- PyEval_ReleaseLock();
-
- // launch thread worker
- LaunchThread(quworker,NULL);
-
- // launch python worker
- LaunchThread(pyworker,NULL);
-#endif
-
- post("------------------------------------------------");
- post("");
-}
-
-FLEXT_LIB_SETUP(py,pybase::lib_setup)
-
-
-// -----------------------------------------------------------------------------------------------------------
-
-
-pybase::pybase()
- : module(NULL)
- , dict(NULL)
-#ifdef FLEXT_THREADS
- , thrcount(0)
- , shouldexit(false),stoptick(0)
-#endif
- , detach(0)
- , pymsg(false)
-{
- ThrState state = PyLock();
- Py_INCREF(module_obj);
- PyUnlock(state);
-}
-
-pybase::~pybase()
-{
- ThrState state = PyLock();
- Py_XDECREF(module_obj);
- PyUnlock(state);
-}
-
-void pybase::Exit()
-{
-#ifdef FLEXT_THREADS
- erasethreads();
-
- shouldexit = true;
- qucond.Signal();
-
- if(thrcount) {
- // Wait for a certain time
- for(int i = 0; i < (PY_STOP_WAIT/PY_STOP_TICK) && thrcount; ++i)
- Sleep(PY_STOP_TICK*0.001f);
- if(thrcount) {
- // Wait forever
- post("py/pyext - Waiting for thread termination!");
- while(thrcount) Sleep(PY_STOP_TICK*0.001f);
- post("py/pyext - Okay, all threads have terminated");
- }
- }
-#endif
-}
-
-void pybase::GetDir(PyObject *obj,AtomList &lst)
-{
- if(obj) {
- ThrState state = PyLock();
-
- PyObject *pvar = PyObject_Dir(obj);
- if(!pvar)
- PyErr_Print(); // no method found
- else {
- const t_symbol *sym = GetPyArgs(lst,pvar);
- if(!sym)
- post("py/pyext - Argument list could not be created");
- else
- FLEXT_ASSERT(sym == sym_list);
- Py_DECREF(pvar);
- }
-
- PyUnlock(state);
- }
-}
-
-void pybase::m__dir(PyObject *obj)
-{
- AtomList lst;
- GetDir(obj,lst);
- // dump dir to attribute outlet
- DumpOut(NULL,lst.Count(),lst.Atoms());
-}
-
-void pybase::m__doc(PyObject *obj)
-{
- if(obj) {
- ThrState state = PyLock();
-
- PyObject *docf = PyDict_GetItemString(obj,"__doc__"); // borrowed!!!
- if(docf && PyString_Check(docf)) {
- post("");
- const char *s = PyString_AS_STRING(docf);
-
- // FIX: Python doc strings can easily be larger than 1k characters
- // -> split into separate lines
- for(;;) {
- char buf[1024];
- char *nl = strchr((char *)s,'\n'); // the cast is for Borland C++
- if(!nl) {
- // no more newline found
- post(s);
- break;
- }
- else {
- // copy string before newline to temp buffer and post
- unsigned int l = nl-s;
- if(l >= sizeof(buf)) l = sizeof buf-1;
- strncpy(buf,s,l); // copy all but newline
- buf[l] = 0;
- post(buf);
- s = nl+1; // set after newline
- }
- }
- }
-
- PyUnlock(state);
- }
-}
-
-void pybase::OpenEditor()
-{
- if(!module) return;
- const char *mname = PyModule_GetFilename(module);
- if(!mname) {
- PyErr_Clear();
- return;
- }
-
- char fname[1024];
- strcpy(fname,mname);
-
- // replacing .pyc or .pyo for source file name
- char *dt = strrchr(fname,'.');
- if(dt && !strncmp(dt,".py",2)) strcpy(dt,".py");
-
- // this should open the editor....
-#if FLEXT_OS == FLEXT_OS_WIN
- int err = (int)ShellExecute(NULL,"edit",fname,NULL,NULL,SW_SHOW);
- if(err == SE_ERR_NOASSOC) {
- // no association found - try notepad
- err = (int)ShellExecute(NULL,NULL,"notepad.exe",fname,NULL,SW_SHOW);
- }
- else if(err == ERROR_FILE_NOT_FOUND || err == SE_ERR_FNF)
- post("py/pyext - File not %s found",fname);
- else if(err <= 32)
- post("py/pyext - Unknown error opening %s",fname);
-
-#elif FLEXT_OS == FLEXT_OS_MAC
- FSRef ref;
- OSStatus err = FSPathMakeRef((unsigned char *)fname,&ref,NULL);
- if(err)
- post("py/pyext - Error interpreting path %s",fname);
- else {
- FSRef editor;
- err = LSGetApplicationForItem(&ref,kLSRolesEditor,&editor,NULL);
- if(err) {
- // Can't find associated application... try Textedit
- err = FSPathMakeRef((unsigned char *)"/Applications/TextEdit.app",&editor,NULL);
- if(err)
- post("py/pyext - Can't find Textedit application");
- }
-
- if(!err) {
- LSLaunchFSRefSpec lspec;
- lspec.appRef = &editor;
- lspec.numDocs = 1;
- lspec.itemRefs = &ref;
- lspec.passThruParams = NULL;
- lspec.launchFlags = kLSLaunchDefaults;
- lspec.asyncRefCon = NULL;
- err = LSOpenFromRefSpec(&lspec,NULL);
- if(err)
- post("py/pyext - Couldn't launch editor");
- }
- }
-#else
- // thanks to Tim Blechmann
-
- char *editor = getenv("EDITOR");
-
- if(!editor) { // || !strcmp(editor, "/usr/bin/nano") || !strcmp(editor, "/usr/bin/pico") || !strcmp(editor, "/usr/bin/vi")) {
- // no environment variable or console text editor found ... use idle instead (should have come with Python)
- editor = "idle";
- }
-
- pid_t child = fork();
- if(!child) {
- char cmd[80];
- strcpy(cmd,editor);
- strcat(cmd," ");
- strcat(cmd,fname);
- execl("/bin/sh", "sh", "-c", cmd, (char *) NULL);
- }
-#endif
-}
-
-void pybase::SetArgs()
-{
- // script arguments
- int argc = args.Count();
- const t_atom *argv = args.Atoms();
- char **sargv = new char *[argc+1];
- for(int i = 0; i <= argc; ++i) {
- sargv[i] = new char[256];
- if(!i)
- strcpy(sargv[i],"py/pyext");
- else
- GetAString(argv[i-1],sargv[i],255);
- }
-
- // the arguments to the module are only recognized once! (at first use in a patcher)
- PySys_SetArgv(argc+1,sargv);
-
- for(int j = 0; j <= argc; ++j) delete[] sargv[j];
- delete[] sargv;
-}
-
-static bool getmodulesub(const char *mod,char *dir,int len,char *ext)
-{
-#if FLEXT_SYS == FLEXT_SYS_PD
- char *name;
- int fd = open_via_path("",mod,ext,dir,&name,len,0);
- if(fd > 0) {
- FLEXT_ASSERT(name && *name);
- close(fd);
- }
- else {
- // look for mod/__init__.py
- std::string tmp(mod);
- int l = tmp.size();
- tmp += "/__init__";
- fd = open_via_path("",tmp.c_str(),ext,dir,&name,len,0);
- if(fd > 0) {
- FLEXT_ASSERT(name && *name);
- close(fd);
- // we must remove the module name from dir
- char *t = dir+strlen(dir)-l;
- FLEXT_ASSERT(!strcmp(mod,t) && t[-1] == '/');
- t[-1] = 0;
- }
- else
- name = NULL;
- }
-
- // if dir is current working directory... name points to dir
- if(dir == name) strcpy(dir,".");
- return name != NULL;
-#elif FLEXT_SYS == FLEXT_SYS_MAX
- short path;
- long type;
- char smod[1024];
- strcpy(smod,mod);
- strcat(smod,ext);
- bool ok = !locatefile_extended(smod,&path,&type,&type,0);
- if(ok)
- // convert pathname to unix style
- path_topathname(path,NULL,smod);
- else {
- // do path/file.ext combinations work at all under Max?
- strcpy(smod,mod);
-
- short path;
- type = 'fold';
- ok = !locatefile_extended(smod,&path,&type,&type,1);
- if(ok) {
- // convert pathname to unix style (including trailing slash)
- path_topathname(path,NULL,smod);
- char *end = smod+strlen(smod);
- strcpy(end,mod);
- strcat(end,"/__init__");
- strcat(end,ext);
-
- // check if file is really existing: try to open it
- FILE *f = fopen(smod,"r");
- if(f) {
- *end = 0; // clear module part ... we only need base path
- fclose(f);
- }
- else
- ok = false;
- }
- }
-
- if(ok) {
- // convert path into slash style needed for Python
-#if 0
- // Max API function uses Volume:/Path notation
- path_nameconform(smod,dir,PATH_STYLE_SLASH,PATH_TYPE_ABSOLUTE);
-#else
-#if FLEXT_OS == FLEXT_OS_WIN
- char *colon = NULL;
-#else
- char *colon = strchr(smod,':');
-#endif
- if(colon) {
- *colon = 0;
- strcpy(dir,"/Volumes/");
- strcat(dir,smod);
- strcat(dir,colon+1);
- }
- else
- strcpy(dir,smod);
-#endif
- return true;
- }
- else
- // not found
- return false;
-#else
-#pragma message("Not implemented");
- return false;
-#endif
-}
-
-static bool getmodulepath(const char *mod,char *dir,int len)
-{
- return
- getmodulesub(mod,dir,len,".py") ||
- getmodulesub(mod,dir,len,".pyc") ||
- getmodulesub(mod,dir,len,".pyo");
-}
-
-bool pybase::ImportModule(const char *name)
-{
- if(name) {
- if(modname == name) {
- // module with the same name is already loaded
- if(module) return true;
- }
- else
- modname = name;
- }
- else
- modname.clear();
-
- UnimportModule();
- return ReloadModule();
-}
-
-void pybase::UnimportModule()
-{
- if(module) {
- FLEXT_ASSERT(dict && module_obj && module_dict);
-
- Py_DECREF(module);
-
- // reference count to module is not 0 here, altough probably the last instance was unloaded
- // Python retains one reference to the module all the time
- // we don't care
-
- module = NULL;
- dict = NULL;
- }
-}
-
-bool pybase::ReloadModule()
-{
- SetArgs();
- PyObject *newmod;
-
- if(modname.length()) {
-
- if(module)
- newmod = PyImport_ReloadModule(module);
- else {
- // search in module path (TODO: check before if module is already present to avoid costly searching)
- char dir[1024];
- if(!getmodulepath(modname.c_str(),dir,sizeof(dir)))
- PyErr_SetString(PyExc_ImportError,"Module not found in path");
- else
- AddToPath(dir);
-
- // module could also be loaded ok, even if it's not in the path (e.g. for internal stuff)
- newmod = PyImport_ImportModule((char *)modname.c_str());
- }
- }
- else {
- // if no module name given, take py module
- newmod = module_obj;
- Py_INCREF(newmod);
- }
-
- if(!newmod) {
- // unload faulty module
- UnimportModule();
- return false;
- }
- else {
- Py_XDECREF(module);
- module = newmod;
- dict = PyModule_GetDict(module); // borrowed
- return true;
- }
-}
-
-void pybase::AddToPath(const char *dir)
-{
- if(dir && *dir) {
- PyObject *pobj = PySys_GetObject("path");
- if(pobj && PyList_Check(pobj)) {
- PyObject *ps = PyString_FromString(dir);
- if(!PySequence_Contains(pobj,ps))
- PyList_Append(pobj,ps); // makes new reference
- Py_DECREF(ps);
- }
- PySys_SetObject("path",pobj); // steals reference to pobj
- }
-}
-
-void pybase::AddCurrentPath(flext_base *o)
-{
- char dir[1024];
-
- // add dir of current patch to path
- o->GetCanvasDir(dir,sizeof(dir));
- if(*dir) AddToPath(dir);
-
- // add current dir to path
-#if FLEXT_SYS == FLEXT_SYS_PD
- AddToPath(GetString(canvas_getcurrentdir()));
-#elif FLEXT_SYS == FLEXT_SYS_MAX
- short path = path_getdefault();
- path_topathname(path,NULL,dir);
- AddToPath(dir);
-#endif
-}
-
-bool pybase::OutObject(flext_base *ext,int o,PyObject *obj)
-{
- flext::AtomListStatic<16> lst;
- const t_symbol *sym = pymsg?GetPyAtom(lst,obj):GetPyArgs(lst,obj);
- if(sym) {
- // call to outlet _outside_ the Mutex lock!
- // otherwise (if not detached) deadlock will occur
- ext->ToOutAnything(o,sym,lst.Count(),lst.Atoms());
- return true;
- }
- else
- return false;
-}
-
-void pybase::Reload()
-{
- ThrState state = PyLock();
-
- PyObject *reg = GetRegistry(REGNAME);
-
- if(reg) {
- PyObject *key;
- Py_ssize_t pos = 0;
- while(PyDict_Next(reg,&pos,&key,NULL)) {
- pybase *th = (pybase *)PyLong_AsLong(key);
- FLEXT_ASSERT(th);
- th->Unload();
- }
-
- UnloadModule();
- }
-
- bool ok = ReloadModule();
-
- if(ok) {
- LoadModule();
-
- if(reg) {
- SetRegistry(REGNAME,reg);
-
- PyObject *key;
- Py_ssize_t pos = 0;
- while(PyDict_Next(reg,&pos,&key,NULL)) {
- pybase *th = (pybase *)PyLong_AsLong(key);
- FLEXT_ASSERT(th);
- th->Load();
- }
- }
- else
- Load();
- }
-
- Report();
- PyUnlock(state);
-}
-
-static PyObject *output = NULL;
-
-// post to the console
-PyObject* pybase::StdOut_Write(PyObject* self, PyObject* args)
-{
- // should always be a tuple
- FLEXT_ASSERT(PyTuple_Check(args));
-
- const int sz = PyTuple_GET_SIZE(args);
-
- for(int i = 0; i < sz; ++i) {
- PyObject *val = PyTuple_GET_ITEM(args,i); // borrowed reference
- PyObject *str = PyObject_Str(val); // new reference
- char *cstr = PyString_AS_STRING(str);
- char *lf = strchr(cstr,'\n');
-
- // line feed in string
- if(!lf) {
- // no -> just append
- if(output)
- PyString_ConcatAndDel(&output,str); // str is decrefd
- else
- output = str; // take str reference
- }
- else {
- // yes -> append up to line feed, reset output buffer to string remainder
- PyObject *part = PyString_FromStringAndSize(cstr,lf-cstr); // new reference
- if(output)
- PyString_ConcatAndDel(&output,part); // str is decrefd
- else
- output = part; // take str reference
-
- // output concatenated string
- post(PyString_AS_STRING(output));
-
- Py_DECREF(output);
- output = PyString_FromString(lf+1); // new reference
- }
- }
-
- Py_INCREF(Py_None);
- return Py_None;
-}
-
-
-class work_data
-{
-public:
- work_data(PyObject *f,PyObject *a): fun(f),args(a) {}
- ~work_data() { Py_DECREF(fun); Py_DECREF(args); }
-
- PyObject *fun,*args;
-};
-
-bool pybase::gencall(PyObject *pmeth,PyObject *pargs)
-{
- bool ret = false;
-
- // Now call method
- switch(detach) {
- case 0:
- ret = docall(pmeth,pargs);
- Py_DECREF(pargs);
- Py_DECREF(pmeth);
- break;
-#ifdef FLEXT_THREADS
- case 1:
- // put call into queue
- ret = qucall(pmeth,pargs);
- break;
- case 2:
- // each call a new thread
- if(!shouldexit) {
- thr_params *p = new thr_params;
- p->cl = (flext_base *)this;
- p->var->_ext = new work_data(pmeth,pargs);
- ret = LaunchThread(thrworker,p);
- if(!ret) post("py/pyext - Failed to launch thread!");
- }
- break;
-#endif
- default:
- post("py/pyext - Unknown detach mode");
- }
- return ret;
-}
-
-void pybase::exchandle()
-{
-#if 0
- // want to use that, but exception keeps a reference to the object
- // might be a Python bug!
- PyErr_Print();
-#else
- // must use that instead... clear the exception
- PyObject *type,*value,*traceback;
- PyErr_Fetch(&type,&value,&traceback);
- PyErr_NormalizeException(&type,&value,&traceback);
- PyErr_Display(type,value,traceback);
-
- Py_XDECREF(type);
- Py_XDECREF(value);
- Py_XDECREF(traceback);
-#endif
-}
-
-#ifdef FLEXT_THREADS
-void pybase::thrworker(thr_params *p)
-{
- FLEXT_ASSERT(p);
- pybase *th = (pybase *)p->cl;
- work_data *w = (work_data *)p->var->_ext;
-
- ++th->thrcount; // \todo this should be atomic
- ThrState state = PyLock();
-
- // call worker
- th->docall(w->fun,w->args);
- delete w;
-
- PyUnlock(state);
- --th->thrcount; // \todo this should be atomic
-}
-
-/*! This thread function basically keeps alive the Python interpreter in the background
- It's good for threads that have been started from scripted functions
-*/
-void pybase::pyworker(thr_params *)
-{
- ThrState state = PyLock();
-
- PyObject *timemod = PyImport_ImportModule("time");
- PyObject *sleep = PyObject_GetAttrString(timemod,"sleep");
- PyObject *args = PyTuple_New(1);
- PyTuple_SET_ITEM(args,0,PyFloat_FromDouble(1000000));
-
- for(;;) {
- PyObject *res = PyObject_CallObject(sleep,args);
- Py_DECREF(res);
- }
-
- PyUnlock(state);
-}
-
-void pybase::quworker(thr_params *)
-{
- FifoEl *el;
- ThrState my = FindThreadState(),state;
-
- for(;;) {
- while(el = qufifo.Get()) {
- ++el->th->thrcount; // \todo this should be atomic
- state = PyLock(my);
- el->th->docall(el->fun,el->args);
- Py_XDECREF(el->fun);
- Py_XDECREF(el->args);
- PyUnlock(state);
- --el->th->thrcount; // \todo this should be atomic
- qufifo.Free(el);
- }
- qucond.Wait();
- }
-
- // we never end
-#if 0
- state = PyLock(my);
- // unref remaining Python objects
- while(el = qufifo.Get()) {
- Py_XDECREF(el->fun);
- Py_XDECREF(el->args);
- qufifo.Free(el);
- }
- PyUnlock(state);
-#endif
-}
-
-void pybase::erasethreads()
-{
- PyFifo tmp;
- FifoEl *el;
- while(el = qufifo.Get()) {
- if(el->th == this) {
- Py_XDECREF(el->fun);
- Py_XDECREF(el->args);
- qufifo.Free(el);
- }
- else
- tmp.Put(el);
- }
- // Push back
- while(el = tmp.Get()) qufifo.Put(el);
-}
-#endif
-
-bool pybase::collect()
-{
- if(gcollect) {
- PyObject *ret = PyObject_CallObject(gcollect,NULL);
- if(ret) {
-#ifdef FLEXT_DEBUG
- int refs = PyInt_AsLong(ret);
- if(refs) post("py/pyext - Garbage collector reports %i unreachable objects",refs);
-#endif
- Py_DECREF(ret);
- return false;
- }
- }
- return true;
-}
diff --git a/externals/grill/py/source/pybase.h b/externals/grill/py/source/pybase.h
deleted file mode 100644
index 48e2f772..00000000
--- a/externals/grill/py/source/pybase.h
+++ /dev/null
@@ -1,256 +0,0 @@
-/*
-py/pyext - python script object for PD and MaxMSP
-
-Copyright (c)2002-2008 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-$LastChangedRevision: 26 $
-$LastChangedDate: 2008-01-03 17:20:03 +0100 (Thu, 03 Jan 2008) $
-$LastChangedBy: thomas $
-*/
-
-#ifndef __PYBASE_H
-#define __PYBASE_H
-
-#include "main.h"
-#include "pysymbol.h"
-#include "pybuffer.h"
-#include "pybundle.h"
-
-#ifdef PY_USE_GIL
- typedef PyGILState_STATE ThrState;
-#else
- typedef PyThreadState *ThrState;
-#endif
-
-class pybase
- : public flext
-{
-public:
- pybase();
- virtual ~pybase();
-
- void Exit();
-
- static PyObject *MakePyArgs(const t_symbol *s,int argc,const t_atom *argv,int inlet = -1);
- static PyObject *MakePyArg(const t_symbol *s,int argc,const t_atom *argv);
- static const t_symbol *GetPyArgs(AtomList &lst,PyObject *pValue,int offs = 0);
- static const t_symbol *GetPyAtom(AtomList &lst,PyObject *pValue);
-
- static void lib_setup();
-
-protected:
-
- virtual void DumpOut(const t_symbol *sym,int argc,const t_atom *argv) = 0;
-
- void m__dir(PyObject *obj);
- void m__doc(PyObject *obj);
-
- void m_dir() { m__dir(module); }
- void mg_dir(AtomList &lst) { m__dir(module); }
- void m_doc() { m__doc(dict); }
-
- std::string modname; // module name
- PyObject *module,*dict; // object module and associated dictionary
-
- static const char *py_doc;
-
- void GetDir(PyObject *obj,AtomList &lst);
-
- AtomList args;
-
- void AddCurrentPath(flext_base *o);
- void SetArgs();
-
- bool OutObject(flext_base *ext,int o,PyObject *obj);
-
- // reload module and all connected objects
- void Reload();
-
- bool ImportModule(const char *name);
- void UnimportModule();
- bool ReloadModule();
-
- // Get module registry
- PyObject *GetRegistry(const char *regname);
- // Set module registry
- void SetRegistry(const char *regname,PyObject *reg);
-
- // Register object
- void Register(PyObject *reg);
- // Unregister object
- void Unregister(PyObject *reg);
-
- virtual void LoadModule() = 0;
- virtual void UnloadModule() = 0;
-
- virtual void Load() = 0;
- virtual void Unload() = 0;
-
- void OpenEditor();
-
- void Respond(bool b)
- {
- if(respond) {
- t_atom a;
- SetBool(a,b);
- DumpOut(sym_response,1,&a);
- }
- }
-
- void Report() { while(PyErr_Occurred()) PyErr_Print(); }
-
- static bool IsAnything(const t_symbol *s) { return s && s != sym_float && s != sym_int && s != sym_symbol && s != sym_list && s != sym_pointer; }
- static bool IsAtom(const t_symbol *s) { return s == sym_float || s == sym_int || s == sym_symbol || s == sym_pointer; }
-
-// enum retval { nothing,atom,sequ };
-
- // --- module stuff -----
-
- static PyObject *module_obj,*module_dict;
- static PyObject *builtins_obj,*builtins_dict;
- static PyMethodDef func_tbl[],attr_tbl[];
-
- static PyObject *py__doc__(PyObject *,PyObject *args);
- static PyObject *py_send(PyObject *,PyObject *args);
-#ifdef FLEXT_THREADS
- static PyObject *py_priority(PyObject *,PyObject *args);
-#endif
-
- static PyObject *py_arraysupport(PyObject *,PyObject *args);
- static PyObject *py_samplerate(PyObject *,PyObject *args);
- static PyObject *py_blocksize(PyObject *,PyObject *args);
-
- static PyObject *py_searchpaths(PyObject *,PyObject *args);
- static PyObject *py_helppaths(PyObject *,PyObject *args);
-
-#if FLEXT_SYS == FLEXT_SYS_PD
- static PyObject *py_getvalue(PyObject *,PyObject *args);
- static PyObject *py_setvalue(PyObject *,PyObject *args);
-#endif
-
- static PyObject *py_list(PyObject *,PyObject *args);
- static PyObject *py_tuple(PyObject *,PyObject *args);
-
- // ----thread stuff ------------
-
- virtual void m_stop(int argc,const t_atom *argv);
-
- bool respond;
-#ifdef FLEXT_THREADS
- int thrcount;
- bool shouldexit;
- int stoptick;
- Timer stoptmr;
-
- void tick(void *);
-#endif
-
- int detach;
- bool pymsg;
-
- bool gencall(PyObject *fun,PyObject *args);
-
- bool docall(PyObject *fun,PyObject *args)
- {
- callpy(fun,args);
- if(PyErr_Occurred()) {
- exchandle();
- return false;
- }
- else
- return true;
- }
-
- virtual void callpy(PyObject *fun,PyObject *args) = 0;
-
- void exchandle();
-
- static bool collect();
-
-protected:
-
-#ifdef FLEXT_THREADS
- static void thrworker(thr_params *data);
-
- bool qucall(PyObject *fun,PyObject *args)
- {
- FifoEl *el = qufifo.New();
- el->Set(this,fun,args);
- qufifo.Put(el);
- qucond.Signal();
- return true;
- }
-
- static void quworker(thr_params *);
- static void pyworker(thr_params *);
- void erasethreads();
-
- static PyFifo qufifo;
- static ThrCond qucond;
-
-#ifndef PY_USE_GIL
- static ThrState pythrsys;
-#endif
-#endif
-
- static const t_symbol *sym_fint; // float or int symbol, depending on native number message type
- static const t_symbol *sym_response;
-
- static const t_symbol *getone(t_atom &at,PyObject *arg);
- static const t_symbol *getlist(t_atom *lst,PyObject *seq,int cnt,int offs = 0);
-
-public:
-
- static void AddToPath(const char *dir);
-
-#ifdef FLEXT_THREADS
- // this is especially needed when one py/pyext object calls another one
- // we don't want the message to be queued, but otoh we have to avoid deadlock
- // (recursive calls can only happen in the system thread)
- static int lockcount;
-
-#ifdef PY_USE_GIL
- static inline ThrState FindThreadState() { return ThrState(); }
-
- static inline ThrState PyLock(ThrState = ThrState()) { return PyGILState_Ensure(); }
- static inline ThrState PyLockSys() { return PyLock(); }
- static inline void PyUnlock(ThrState st) { PyGILState_Release(st); }
-#else // PY_USE_GIL
- static ThrState FindThreadState();
- static void FreeThreadState();
-
- static ThrState PyLock(ThrState st = FindThreadState())
- {
- if(st != pythrsys || !lockcount++) PyEval_AcquireLock();
- return PyThreadState_Swap(st);
- }
-
-#if 1
- static inline ThrState PyLockSys() { return PyLock(); }
-#else
- static ThrState PyLockSys()
- {
- if(!lockcount++) PyEval_AcquireLock();
- return PyThreadState_Swap(pythrsys);
- }
-#endif
-
- static void PyUnlock(ThrState st)
- {
- ThrState old = PyThreadState_Swap(st);
- if(old != pythrsys || !--lockcount) PyEval_ReleaseLock();
- }
-#endif // PY_USE_GIL
-
-#else // FLEXT_THREADS
- static inline ThrState PyLock(ThrState = NULL) { return NULL; }
- static inline ThrState PyLockSys() { return NULL; }
- static inline void PyUnlock(ThrState st) {}
-#endif
-
- static PyObject* StdOut_Write(PyObject* Self, PyObject* Args);
-};
-
-#endif
diff --git a/externals/grill/py/source/pybuffer.cpp b/externals/grill/py/source/pybuffer.cpp
deleted file mode 100644
index 82414e11..00000000
--- a/externals/grill/py/source/pybuffer.cpp
+++ /dev/null
@@ -1,828 +0,0 @@
-/*
-py/pyext - python script object for PD and Max/MSP
-
-Copyright (c)2002-2008 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-$LastChangedRevision: 26 $
-$LastChangedDate: 2008-01-04 12:24:43 +0100 (Fri, 04 Jan 2008) $
-$LastChangedBy: thomas $
-*/
-
-#include "pybase.h"
-
-#undef PY_ARRAYS
-
-
-#if defined(PY_NUMERIC) || defined(PY_NUMPY) || defined(PY_NUMARRAY)
- #define PY_ARRAYS 1
-#endif
-
-#ifdef PY_ARRAYS
-
-#ifdef PY_NUMARRAY
-# if FLEXT_OS == FLEXT_OS_MAC
-# include <Python/numarray/libnumarray.h>
-# else
-# include <numarray/libnumarray.h>
-# endif
-
-static NumarrayType numtype = tAny;
-inline bool arrsupport() { return numtype != tAny; }
-
-#else
-# if defined(PY_NUMPY)
-# include <numpy/arrayobject.h>
-# else
-# if FLEXT_OS == FLEXT_OS_MAC
-# include <Python/numarray/arrayobject.h>
-# else
-# include <numarray/arrayobject.h>
-# endif
-# endif
-
- static PyArray_TYPES numtype = PyArray_NOTYPE;
- inline bool arrsupport() { return numtype != PyArray_NOTYPE; }
-#endif
-#endif
-
-
-PyObject *pybase::py_arraysupport(PyObject *self,PyObject *args)
-{
- PyObject *ret;
-#ifdef PY_ARRAYS
- ret = Py_True;
-#else
- ret = Py_False;
-#endif
- Py_INCREF(ret);
- return ret;
-}
-
-
-// PD defines a T_OBJECT symbol
-#undef T_OBJECT
-
-#if FLEXT_OS == FLEXT_OS_MAC
-#include "Python/bufferobject.h"
-#include "Python/structmember.h"
-#else
-#include "bufferobject.h"
-#include "structmember.h"
-#endif
-
-static PyObject *buffer_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
- pySamplebuffer *self = (pySamplebuffer *)pySamplebuffer_Type.tp_alloc(&pySamplebuffer_Type, 0);
- self->sym = NULL;
- self->buf = NULL;
- self->dirty = false;
- return (PyObject *)self;
-}
-
-static void buffer_dealloc(PyObject *obj)
-{
- pySamplebuffer *self = (pySamplebuffer *)obj;
-
- if(self->buf) {
- self->buf->Unlock(self->lock);
- if(self->dirty) self->buf->Dirty(true);
- delete self->buf;
- }
-
- obj->ob_type->tp_free(obj);
-}
-
-static int buffer_init(PyObject *obj, PyObject *args, PyObject *kwds)
-{
- FLEXT_ASSERT(pySamplebuffer_Check(obj));
-
- PyObject *arg = PySequence_GetItem(args,0); // new reference
- if(!arg) return -1;
-
- int ret = 0;
-
- pySamplebuffer *self = (pySamplebuffer *)obj;
- FLEXT_ASSERT(!self->sym && !self->buf);
-
- if(pySymbol_Check(arg))
- self->sym = pySymbol_AS_SYMBOL(arg);
- else if(PyString_Check(arg))
- self->sym = flext::MakeSymbol(PyString_AS_STRING(arg));
- else
- ret = -1;
- Py_DECREF(arg);
-
- if(self->sym) {
- flext::buffer *b = new flext::buffer(self->sym);
- if(b->Ok() && b->Valid())
- self->lock = (self->buf = b)->Lock();
- else
- delete b;
- }
-
- return ret;
-}
-
-static PyObject *buffer_repr(PyObject *self)
-{
- FLEXT_ASSERT(pySamplebuffer_Check(self));
- return (PyObject *)PyString_FromFormat("<Samplebuffer %s>",pySamplebuffer_AS_STRING(self));
-}
-
-static long buffer_hash(PyObject *self)
-{
- FLEXT_ASSERT(pySamplebuffer_Check(self));
- return (long)(((pySamplebuffer *)self)->buf);
-}
-
-static PyObject *buffer_getsymbol(pySamplebuffer* self,void *closure)
-{
- if(self->sym)
- return pySymbol_FromSymbol(self->sym);
- else {
- Py_INCREF(Py_None);
- return Py_None;
- }
-}
-
-static PyGetSetDef buffer_getseters[] = {
- {"symbol",(getter)buffer_getsymbol, NULL, NULL},
- {NULL} /* Sentinel */
-};
-
-static PyObject *buffer_dirty(PyObject *obj)
-{
- ((pySamplebuffer *)obj)->dirty = true;
- Py_INCREF(Py_None);
- return Py_None;
-}
-
-static PyObject *buffer_resize(PyObject *obj,PyObject *args,PyObject *kwds)
-{
- flext::buffer *b = ((pySamplebuffer *)obj)->buf;
- if(b) {
- int frames,keep = 1,zero = 1;
- static char *kwlist[] = {"frames", "keep", "zero", NULL};
- if(!PyArg_ParseTupleAndKeywords(args, kwds, "i|ii", kwlist, &frames, &keep, &zero))
- return NULL;
-
- b->Frames(frames,keep != 0,zero != 0);
-
- Py_INCREF(obj);
- return obj;
- }
- else {
- PyErr_SetString(PyExc_RuntimeError,"Invalid buffer");
- return NULL;
- }
-}
-
-static PyMethodDef buffer_methods[] = {
- {"dirty", (PyCFunction)buffer_dirty,METH_NOARGS,"Mark buffer as dirty"},
- {"resize", (PyCFunction)buffer_resize,METH_VARARGS|METH_KEYWORDS,"Resize buffer"},
- {NULL} /* Sentinel */
-};
-
-
-
-// support the buffer protocol
-
-static Py_ssize_t buffer_readbuffer(PyObject *obj, Py_ssize_t segment, void **ptrptr)
-{
- flext::buffer *b = ((pySamplebuffer *)obj)->buf;
- ptrptr[0] = b->Data();
- return b->Channels()*b->Frames()*sizeof(t_sample);
-}
-
-static Py_ssize_t buffer_writebuffer(PyObject *obj, Py_ssize_t segment, void **ptrptr)
-{
- flext::buffer *b = ((pySamplebuffer *)obj)->buf;
- ptrptr[0] = b->Data();
- return b->Channels()*b->Frames()*sizeof(t_sample);
-}
-
-static Py_ssize_t buffer_segcount(PyObject *obj, Py_ssize_t *lenp)
-{
- flext::buffer *b = ((pySamplebuffer *)obj)->buf;
- if(lenp) lenp[0] = b->Channels()*b->Frames()*sizeof(t_sample);
- return 1;
-}
-
-static Py_ssize_t buffer_charbuffer(PyObject *obj, Py_ssize_t segment,
-#if PY_VERSION_HEX < 0x02050000
- const
-#endif
- char **ptrptr)
-{
- flext::buffer *b = ((pySamplebuffer *)obj)->buf;
- ptrptr[0] = (char *)b->Data();
- return b->Channels()*b->Frames()*sizeof(t_sample);
-}
-
-static PyBufferProcs buffer_as_buffer = {
- buffer_readbuffer,
- buffer_writebuffer,
- buffer_segcount,
- buffer_charbuffer
-};
-
-static Py_ssize_t buffer_length(PyObject *s)
-{
- pySamplebuffer *self = reinterpret_cast<pySamplebuffer *>(s);
- return self->buf?self->buf->Frames():0;
-}
-
-static PyObject *buffer_item(PyObject *s,Py_ssize_t i)
-{
- pySamplebuffer *self = reinterpret_cast<pySamplebuffer *>(s);
- PyObject *ret;
- if(self->buf) {
- if (i < 0 || i >= self->buf->Frames()) {
- PyErr_SetString(PyExc_IndexError,"Index out of range");
- ret = NULL;
- }
- else {
- if(self->buf->Channels() == 1)
- ret = PyFloat_FromDouble(self->buf->Data()[i]);
- else {
- PyErr_SetString(PyExc_NotImplementedError,"Multiple channels not implemented yet");
- ret = NULL;
- }
- }
- }
- else {
- Py_INCREF(Py_None);
- ret = Py_None;
- }
- return ret;
-}
-
-PyObject *arrayfrombuffer(PyObject *buf,int c,int n)
-{
-#ifdef PY_ARRAYS
- if(arrsupport()) {
- PyObject *arr;
- int shape[2];
- shape[0] = n;
- shape[1] = c;
-#ifdef PY_NUMARRAY
- arr = (PyObject *)NA_NewAllFromBuffer(c == 1?1:2,shape,numtype,buf,0,0,NA_ByteOrder(),1,1);
-#else
- void *data;
- Py_ssize_t len;
- int err = PyObject_AsWriteBuffer(buf,&data,&len);
- if(!err) {
- FLEXT_ASSERT(len <= n*c*sizeof(t_sample));
- Py_INCREF(buf);
- // \todo change to new API!
- arr = PyArray_FromDimsAndData(c == 1?1:2,shape,numtype,(char *)data);
- }
- else {
- // exception string is already set
- arr = NULL;
- }
-#endif
- return arr;
- }
- else
-#endif
- return NULL;
-}
-
-static PyObject *buffer_slice(PyObject *s,Py_ssize_t ilow = 0,Py_ssize_t ihigh = 1<<(sizeof(int)*8-2))
-{
- pySamplebuffer *self = reinterpret_cast<pySamplebuffer *>(s);
- PyObject *ret;
-#ifdef PY_ARRAYS
- if(arrsupport()) {
- if(self->buf) {
- const int n = self->buf->Frames();
- const int c = self->buf->Channels();
- if(ilow < 0) ilow += n;
- if(ilow >= n) ilow = n-1;
- if(ihigh < 0) ihigh += n;
- if(ihigh > n) ihigh = n;
-
- PyObject *nobj = arrayfrombuffer((PyObject *)self,c,n);
- if(ilow != 0 || ihigh != n) {
- ret = PySequence_GetSlice(nobj,ilow,ihigh);
- Py_DECREF(nobj);
- }
- else
- ret = nobj;
- }
- else {
- Py_INCREF(Py_None);
- ret = Py_None;
- }
- }
- else
-#endif
- {
- PyErr_SetString(PyExc_RuntimeError,"No numarray support");
- ret = NULL;
- }
- return ret;
-}
-
-static int buffer_ass_item(PyObject *s,Py_ssize_t i,PyObject *v)
-{
- pySamplebuffer *self = reinterpret_cast<pySamplebuffer *>(s);
- int ret;
- if(self->buf) {
- if (i < 0 || i >= self->buf->Frames()) {
- PyErr_Format(PyExc_IndexError,"Index out of range");
- ret = -1;
- }
- else {
- if(self->buf->Channels() == 1) {
- self->buf->Data()[i] = (t_sample)PyFloat_AsDouble(v);
- if(PyErr_Occurred()) {
- // cast to double failed
- PyErr_SetString(PyExc_TypeError,"Value must be a numarray");
- ret = -1;
- }
- else {
- self->dirty = true;
- ret = 0;
- }
- }
- else {
- PyErr_SetString(PyExc_NotImplementedError,"Multiple channels not implemented yet");
- ret = -1;
- }
- }
- }
- else
- ret = -1;
- return ret;
-}
-
-static int buffer_ass_slice(PyObject *s,Py_ssize_t ilow,Py_ssize_t ihigh,PyObject *value)
-{
- pySamplebuffer *self = reinterpret_cast<pySamplebuffer *>(s);
- int ret;
-#ifdef PY_ARRAYS
- if(arrsupport()) {
- if(!value) {
- PyErr_SetString(PyExc_TypeError,"Object doesn't support item deletion");
- ret = -1;
- }
- else if(self->buf) {
- const int n = self->buf->Frames();
- const int c = self->buf->Channels();
- if(ilow < 0) ilow += n;
- if(ilow >= n) ilow = n-1;
- if(ihigh < 0) ihigh += n;
- if(ihigh > n) ihigh = n;
-
-#ifdef PY_NUMARRAY
- PyArrayObject *out = NA_InputArray(value,numtype,NUM_C_ARRAY);
-#else
- PyArrayObject *out = (PyArrayObject *)PyArray_ContiguousFromObject(value,numtype,0,0);
-#endif
- if(!out) {
- PyErr_SetString(PyExc_TypeError,"Assigned object must be a numarray");
- ret = -1;
- }
- else if(out->nd != 1) {
- PyErr_SetString(PyExc_NotImplementedError,"Multiple dimensions not supported yet");
- ret = -1;
- }
- else {
- int dlen = ihigh-ilow;
- int slen = out->dimensions[0];
-#ifdef PY_NUMARRAY
- flext::CopySamples(self->buf->Data()+ilow,(t_sample *)NA_OFFSETDATA(out),slen < dlen?slen:dlen);
-#else
- flext::CopySamples(self->buf->Data()+ilow,(t_sample *)out->data,slen < dlen?slen:dlen);
-#endif
- self->dirty = true;
- ret = 0;
- }
-
- Py_XDECREF(out);
- }
- else {
- PyErr_SetString(PyExc_ValueError,"Buffer is not assigned");
- ret = -1;
- }
- }
- else
-#endif
- {
- PyErr_SetString(PyExc_RuntimeError,"No numarray support");
- ret = -1;
- }
- return ret;
-}
-
-static PyObject *buffer_concat(PyObject *s,PyObject *op)
-{
- pySamplebuffer *self = reinterpret_cast<pySamplebuffer *>(s);
- PyObject *nobj = buffer_slice(s);
- if(nobj) {
- PyObject *ret = PySequence_Concat(nobj,op);
- if(ret == nobj) self->dirty = true;
- Py_DECREF(nobj);
- return ret;
- }
- else
- return NULL;
-}
-
-static PyObject *buffer_repeat(PyObject *s,Py_ssize_t rep)
-{
- pySamplebuffer *self = reinterpret_cast<pySamplebuffer *>(s);
- PyObject *nobj = buffer_slice(s);
- if(nobj) {
- PyObject *ret = PySequence_Repeat(nobj,rep);
- if(ret == nobj) self->dirty = true;
- Py_DECREF(nobj);
- return ret;
- }
- else
- return NULL;
-}
-
-
-static PySequenceMethods buffer_as_seq = {
- buffer_length, /* inquiry sq_length; __len__ */
- buffer_concat, /* __add__ */
- buffer_repeat, /* __mul__ */
- buffer_item, /* intargfunc sq_item; __getitem__ */
- buffer_slice, /* intintargfunc sq_slice; __getslice__ */
- buffer_ass_item, /* intobjargproc sq_ass_item; __setitem__ */
- buffer_ass_slice, /* intintobjargproc sq_ass_slice; __setslice__ */
-};
-
-static PyObject *buffer_iter(PyObject *s)
-{
- pySamplebuffer *self = reinterpret_cast<pySamplebuffer *>(s);
- PyObject *nobj = buffer_slice(s);
- if(nobj) {
- PyObject *it = PyObject_GetIter(nobj);
- Py_DECREF(nobj);
- return it;
- }
- else
- return NULL;
-}
-
-
-static PyObject *buffer_add(PyObject *s,PyObject *op)
-{
- pySamplebuffer *self = reinterpret_cast<pySamplebuffer *>(s);
- PyObject *nobj = buffer_slice(s);
- if(nobj) {
- PyObject *ret = PyNumber_Add(nobj,op);
- if(ret == nobj) self->dirty = true;
- Py_DECREF(nobj);
- return ret;
- }
- else
- return NULL;
-}
-
-static PyObject *buffer_subtract(PyObject *s,PyObject *op)
-{
- pySamplebuffer *self = reinterpret_cast<pySamplebuffer *>(s);
- PyObject *nobj = buffer_slice(s);
- if(nobj) {
- PyObject *ret = PyNumber_Subtract(nobj,op);
- if(ret == nobj) self->dirty = true;
- Py_DECREF(nobj);
- return ret;
- }
- else
- return NULL;
-}
-
-static PyObject *buffer_multiply(PyObject *s,PyObject *op)
-{
- pySamplebuffer *self = reinterpret_cast<pySamplebuffer *>(s);
- PyObject *nobj = buffer_slice(s);
- if(nobj) {
- PyObject *ret = PyNumber_Multiply(nobj,op);
- if(ret == nobj) self->dirty = true;
- Py_DECREF(nobj);
- return ret;
- }
- else
- return NULL;
-}
-
-static PyObject *buffer_divide(PyObject *s,PyObject *op)
-{
- pySamplebuffer *self = reinterpret_cast<pySamplebuffer *>(s);
- PyObject *nobj = buffer_slice(s);
- if(nobj) {
- PyObject *ret = PyNumber_Divide(nobj,op);
- if(ret == nobj) self->dirty = true;
- Py_DECREF(nobj);
- return ret;
- }
- else
- return NULL;
-}
-
-static PyObject *buffer_remainder(PyObject *s,PyObject *op)
-{
- pySamplebuffer *self = reinterpret_cast<pySamplebuffer *>(s);
- PyObject *nobj = buffer_slice(s);
- if(nobj) {
- PyObject *ret = PyNumber_Remainder(nobj,op);
- if(ret == nobj) self->dirty = true;
- Py_DECREF(nobj);
- return ret;
- }
- else
- return NULL;
-}
-
-static PyObject *buffer_divmod(PyObject *s,PyObject *op)
-{
- pySamplebuffer *self = reinterpret_cast<pySamplebuffer *>(s);
- PyObject *nobj = buffer_slice(s);
- if(nobj) {
- PyObject *ret = PyNumber_Divmod(nobj,op);
- if(ret == nobj) self->dirty = true;
- Py_DECREF(nobj);
- return ret;
- }
- else
- return NULL;
-}
-
-static PyObject *buffer_power(PyObject *s,PyObject *op1,PyObject *op2)
-{
- pySamplebuffer *self = reinterpret_cast<pySamplebuffer *>(s);
- PyObject *nobj = buffer_slice(s);
- if(nobj) {
- PyObject *ret = PyNumber_Power(nobj,op1,op2);
- if(ret == nobj) self->dirty = true;
- Py_DECREF(nobj);
- return ret;
- }
- else
- return NULL;
-}
-
-static PyObject *buffer_negative(PyObject *s)
-{
- pySamplebuffer *self = reinterpret_cast<pySamplebuffer *>(s);
- PyObject *nobj = buffer_slice(s);
- if(nobj) {
- PyObject *ret = PyNumber_Negative(nobj);
- if(ret == nobj) self->dirty = true;
- Py_DECREF(nobj);
- return ret;
- }
- else
- return NULL;
-}
-
-static PyObject *buffer_pos(PyObject *s)
-{
- pySamplebuffer *self = reinterpret_cast<pySamplebuffer *>(s);
- PyObject *nobj = buffer_slice(s);
- if(nobj) {
- PyObject *ret = PyNumber_Positive(nobj);
- Py_DECREF(nobj);
- return ret;
- }
- else
- return NULL;
-}
-
-static PyObject *buffer_absolute(PyObject *s)
-{
- pySamplebuffer *self = reinterpret_cast<pySamplebuffer *>(s);
- PyObject *nobj = buffer_slice(s);
- if(nobj) {
- PyObject *ret = PyNumber_Absolute(nobj);
- if(ret == nobj) self->dirty = true;
- Py_DECREF(nobj);
- return ret;
- }
- else
- return NULL;
-}
-
-static int buffer_coerce(PyObject **pm, PyObject **pw)
-{
- if(pySamplebuffer_Check(*pw)) {
- Py_INCREF(*pm);
- Py_INCREF(*pw);
- return 0;
- }
- else
- return 1;
-}
-
-static PyObject *buffer_inplace_add(PyObject *s,PyObject *op)
-{
- pySamplebuffer *self = reinterpret_cast<pySamplebuffer *>(s);
- PyObject *nobj = buffer_slice(s);
- if(nobj) {
- PyObject *ret = PyNumber_InPlaceAdd(nobj,op);
- if(ret == nobj) self->dirty = true;
- Py_DECREF(nobj);
- return ret;
- }
- else
- return NULL;
-}
-
-static PyObject *buffer_inplace_subtract(PyObject *s,PyObject *op)
-{
- pySamplebuffer *self = reinterpret_cast<pySamplebuffer *>(s);
- PyObject *nobj = buffer_slice(s);
- if(nobj) {
- PyObject *ret = PyNumber_InPlaceSubtract(nobj,op);
- if(ret == nobj) self->dirty = true;
- Py_DECREF(nobj);
- return ret;
- }
- else
- return NULL;
-}
-
-static PyObject *buffer_inplace_multiply(PyObject *s,PyObject *op)
-{
- pySamplebuffer *self = reinterpret_cast<pySamplebuffer *>(s);
- PyObject *nobj = buffer_slice(s);
- if(nobj) {
- PyObject *ret = PyNumber_InPlaceMultiply(nobj,op);
- if(ret == nobj) self->dirty = true;
- Py_DECREF(nobj);
- return ret;
- }
- else
- return NULL;
-}
-
-static PyObject *buffer_inplace_divide(PyObject *s,PyObject *op)
-{
- pySamplebuffer *self = reinterpret_cast<pySamplebuffer *>(s);
- PyObject *nobj = buffer_slice(s);
- if(nobj) {
- PyObject *ret = PyNumber_InPlaceDivide(nobj,op);
- if(ret == nobj) self->dirty = true;
- Py_DECREF(nobj);
- return ret;
- }
- else
- return NULL;
-}
-
-static PyObject *buffer_inplace_remainder(PyObject *s,PyObject *op)
-{
- pySamplebuffer *self = reinterpret_cast<pySamplebuffer *>(s);
- PyObject *nobj = buffer_slice(s);
- if(nobj) {
- PyObject *ret = PyNumber_InPlaceRemainder(nobj,op);
- if(ret == nobj) self->dirty = true;
- Py_DECREF(nobj);
- return ret;
- }
- else
- return NULL;
-}
-
-static PyObject *buffer_inplace_power(PyObject *s,PyObject *op1,PyObject *op2)
-{
- pySamplebuffer *self = reinterpret_cast<pySamplebuffer *>(s);
- PyObject *nobj = buffer_slice(s);
- if(nobj) {
- PyObject *ret = PyNumber_InPlacePower(nobj,op1,op2);
- if(ret == nobj) self->dirty = true;
- Py_DECREF(nobj);
- return ret;
- }
- else
- return NULL;
-}
-
-
-
-static PyNumberMethods buffer_as_number = {
- (binaryfunc)buffer_add, /*nb_add*/
- (binaryfunc)buffer_subtract, /*nb_subtract*/
- (binaryfunc)buffer_multiply, /*nb_multiply*/
- (binaryfunc)buffer_divide, /*nb_divide*/
- (binaryfunc)buffer_remainder, /*nb_remainder*/
- (binaryfunc)buffer_divmod, /*nb_divmod*/
- (ternaryfunc)buffer_power, /*nb_power*/
- (unaryfunc)buffer_negative,
- (unaryfunc)buffer_pos, /*nb_pos*/
- (unaryfunc)buffer_absolute, /* (unaryfunc)buffer_abs, */
- 0, //(inquiry)buffer_nonzero, /*nb_nonzero*/
- 0, /*nb_invert*/
- 0, /*nb_lshift*/
- 0, /*nb_rshift*/
- 0, /*nb_and*/
- 0, /*nb_xor*/
- 0, /*nb_or*/
- (coercion)buffer_coerce, /*nb_coerce*/
- 0, /*nb_int*/
- 0, /*nb_long*/
- 0, /*nb_float*/
- 0, /*nb_oct*/
- 0, /*nb_hex*/
- (binaryfunc)buffer_inplace_add, /* nb_inplace_add */
- (binaryfunc)buffer_inplace_subtract, /* nb_inplace_subtract */
- (binaryfunc)buffer_inplace_multiply, /* nb_inplace_multiply */
- (binaryfunc)buffer_inplace_divide, /* nb_inplace_divide */
- (binaryfunc)buffer_inplace_remainder, /* nb_inplace_remainder */
- (ternaryfunc)buffer_inplace_power, /* nb_inplace_power */
- 0, /* nb_inplace_lshift */
- 0, /* nb_inplace_rshift */
- 0, /* nb_inplace_and */
- 0, /* nb_inplace_xor */
- 0, /* nb_inplace_or */
-// buffer_floor_div, /* nb_floor_divide */
-// buffer_div, /* nb_true_divide */
-// buffer_inplace_floor_div, /* nb_inplace_floor_divide */
-// buffer_inplace_div, /* nb_inplace_true_divide */
-};
-
-PyTypeObject pySamplebuffer_Type = {
- PyObject_HEAD_INIT(NULL)
- 0, /*ob_size*/
- "Buffer", /*tp_name*/
- sizeof(pySamplebuffer), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- buffer_dealloc, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- 0, /*tp_compare*/
- buffer_repr, /*tp_repr*/
- &buffer_as_number, /*tp_as_number*/
- &buffer_as_seq, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- buffer_hash, /*tp_hash */
- 0, /*tp_call*/
- 0, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- &buffer_as_buffer, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT /*| Py_TPFLAGS_BASETYPE*/, /*tp_flags*/
- "Samplebuffer objects", /* tp_doc */
- 0, /* tp_traverse */
- 0, /* tp_clear */
- 0 /*buffer_richcompare*/, /* tp_richcompare */
- 0, /* tp_weaklistoffset */
- buffer_iter, /* tp_iter */
- 0, /* tp_iternext */
- buffer_methods, /* tp_methods */
- 0, /* tp_members */
- buffer_getseters, /* tp_getset */
- 0, /* tp_base */
- 0, /* tp_dict */
- 0, /* tp_descr_get */
- 0, /* tp_descr_set */
- 0, /* tp_dictoffset */
- buffer_init, /* tp_init */
- 0, /* tp_alloc */
- buffer_new, /* tp_new */
-};
-
-// Must have this as a function because the import_array macro in numpy version 1.01 strangely has a return statement included.
-// Furthermore the import error printout from this macro is ugly, but we accept that for more, waiting for later numpy updates to fix all of this.
-static void __import_array__()
-{
-#ifdef PY_NUMARRAY
- import_libnumarray();
-#else
- import_array();
-#endif
-}
-
-void initsamplebuffer()
-{
-#ifdef PY_ARRAYS
- __import_array__();
- if(PyErr_Occurred())
- // catch import error
- PyErr_Clear();
- else {
- // numarray support ok
-#ifdef PY_NUMARRAY
- numtype = sizeof(t_sample) == 4?tFloat32:tFloat64;
-#else
- numtype = sizeof(t_sample) == 4?PyArray_FLOAT:PyArray_DOUBLE;
-#endif
- post("");
- post("Python array support enabled");
- }
-#endif
-
- if(PyType_Ready(&pySamplebuffer_Type) < 0)
- FLEXT_ASSERT(false);
- else
- Py_INCREF(&pySamplebuffer_Type);
-}
diff --git a/externals/grill/py/source/pybuffer.h b/externals/grill/py/source/pybuffer.h
deleted file mode 100644
index fe6bbe63..00000000
--- a/externals/grill/py/source/pybuffer.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
-py/pyext - python script object for PD and Max/MSP
-
-Copyright (c)2002-2008 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-$LastChangedRevision: 26 $
-$LastChangedDate: 2008-01-03 17:20:03 +0100 (Thu, 03 Jan 2008) $
-$LastChangedBy: thomas $
-*/
-
-#ifndef __PYBUFFER_H
-#define __PYBUFFER_H
-
-#include <flext.h>
-
-#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 500)
-#error You need at least flext version 0.5.0
-#endif
-
-#if FLEXT_OS == FLEXT_OS_MAC
-#include <Python/Python.h>
-#else
-#include <Python.h>
-#endif
-
-
-#ifdef _MSC_VER
- #ifdef PY_EXPORTS
- #define PY_EXPORT __declspec(dllexport)
- #else
- #define PY_EXPORT __declspec(dllimport)
- #endif
-#else
- #define PY_EXPORT
-#endif
-
-typedef struct {
- PyObject_HEAD
- /* Type-specific fields go here. */
- const t_symbol *sym;
- flext::buffer *buf;
- flext::buffer::lock_t lock;
- bool dirty;
-} pySamplebuffer;
-
-PY_EXPORT extern PyTypeObject pySamplebuffer_Type;
-
-#define pySamplebuffer_Check(op) PyObject_TypeCheck(op, &pySamplebuffer_Type)
-#define pySamplebuffer_CheckExact(op) ((op)->ob_type == &pySamplebuffer_Type)
-
-
-PY_EXPORT PyObject *pySamplebuffer_FromSymbol(const t_symbol *sym);
-
-inline PyObject *pySamplebuffer_FromString(const char *str)
-{
- return pySamplebuffer_FromSymbol(flext::MakeSymbol(str));
-}
-
-inline PyObject *pySamplebuffer_FromString(PyObject *str)
-{
- return pySamplebuffer_FromString(PyString_AsString(str));
-}
-
-inline const t_symbol *pySamplebuffer_AS_SYMBOL(PyObject *op)
-{
- return ((pySamplebuffer *)op)->sym;
-}
-
-inline const t_symbol *pySamplebuffer_AsSymbol(PyObject *op)
-{
- return pySamplebuffer_Check(op)?pySamplebuffer_AS_SYMBOL(op):NULL;
-}
-
-inline const char *pySamplebuffer_AS_STRING(PyObject *op)
-{
- return flext::GetString(pySamplebuffer_AS_SYMBOL(op));
-}
-
-#endif
diff --git a/externals/grill/py/source/pybundle.cpp b/externals/grill/py/source/pybundle.cpp
deleted file mode 100644
index cb7e927a..00000000
--- a/externals/grill/py/source/pybundle.cpp
+++ /dev/null
@@ -1,234 +0,0 @@
-/*
-py/pyext - python script object for PD and Max/MSP
-
-Copyright (c)2002-2008 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-$LastChangedRevision: 26 $
-$LastChangedDate: 2008-01-03 17:20:03 +0100 (Thu, 03 Jan 2008) $
-$LastChangedBy: thomas $
-*/
-
-#include "pyprefix.h"
-#include "pybundle.h"
-#include "pyext.h"
-
-static PyObject *bundle_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
- pyBundle *self = (pyBundle *)pyBundle_Type.tp_alloc(&pyBundle_Type, 0);
- if(self) self->bundle = flext::MsgNew();
- return (PyObject *)self;
-}
-
-static int bundle_init(PyObject *self, PyObject *args, PyObject *kwds)
-{
- FLEXT_ASSERT(pyBundle_Check(self));
-
- int len = PySequence_Length(args);
- if(len) {
- PyErr_SetString(PyExc_TypeError,"no arguments expected");
- return -1;
- }
-
- return 0;
-}
-
-static void bundle_dealloc(PyObject *obj)
-{
- pyBundle *self = (pyBundle *)obj;
- if(self->bundle) flext::MsgFree(self->bundle);
- obj->ob_type->tp_free(obj);
-}
-
-static PyObject *bundle_send(PyObject *obj)
-{
- pyBundle *self = (pyBundle *)obj;
- if(self->bundle) {
- flext::ToOutMsg(self->bundle);
- self->bundle = NULL;
-
- Py_INCREF(obj);
- return obj;
- }
- else {
- PyErr_SetString(PyExc_RuntimeError,"already sent");
- return NULL;
- }
-}
-
-static PyObject *bundle_repr(PyObject *self)
-{
- FLEXT_ASSERT(pyBundle_Check(self));
- return (PyObject *)PyString_FromFormat("<Bundle %p>",pyBundle_AS_BUNDLE(self));
-}
-
-static PyObject *bundle_str(PyObject *self)
-{
- return bundle_repr(self);
-}
-
-static PyObject *bundle_richcompare(PyObject *a,PyObject *b,int cmp)
-{
- if(pyBundle_Check(a) && pyBundle_Check(b)) {
- const flext::MsgBundle *abnd = pyBundle_AS_BUNDLE(a);
- const flext::MsgBundle *bbnd = pyBundle_AS_BUNDLE(b);
- bool ret;
- switch(cmp) {
- case Py_LT: ret = abnd < bbnd; break;
- case Py_LE: ret = abnd <= bbnd; break;
- case Py_EQ: ret = abnd == bbnd; break;
- case Py_NE: ret = abnd != bbnd; break;
- case Py_GT: ret = abnd > bbnd; break;
- case Py_GE: ret = abnd >= bbnd; break;
- }
- return PyBool_FromLong(ret);
- }
- Py_INCREF(Py_NotImplemented);
- return Py_NotImplemented;
-}
-
-static long bundle_hash(PyObject *self)
-{
- FLEXT_ASSERT(pyBundle_Check(self));
- return (long)pyBundle_AS_BUNDLE(self);
-}
-
-
-static PyObject *bundle_append(PyObject *self,PyObject *args)
-{
- flext::MsgBundle *b = pyBundle_AS_BUNDLE(self);
- if(b) {
- int sz = PyTuple_GET_SIZE(args),offs = 0;
- PyObject *tg,*outl;
- pyext *ext = NULL;
- const t_symbol *recv;
- int o;
-
- if(sz > 2 &&
- (tg = PyTuple_GET_ITEM(args,0)) != NULL && PyInstance_Check(tg) &&
- (outl = PyTuple_GET_ITEM(args,1)) != NULL && PyInt_Check(outl)
- ) {
- // Sending to outlet
- ext = pyext::GetThis(tg);
- o = PyInt_AS_LONG(outl);
-
- if(o < 1 || o > ext->Outlets()) {
- PyErr_SetString(PyExc_ValueError,"Outlet index out of range");
- return NULL;
- }
-
- offs += 2;
- }
- else if(sz > 1 &&
- (tg = PyTuple_GET_ITEM(args,0)) != NULL && (recv = pyObject_AsSymbol(tg)) != NULL
- ) {
- // Sending to receiver
- offs++;
- }
- else {
- // not recognized
- PyErr_SetString(PyExc_SyntaxError,"Unrecognized arguments");
- return NULL;
- }
-
- PyObject *val;
- if(sz-offs == 1) {
- val = PyTuple_GET_ITEM(args,offs); // borrow reference
- Py_INCREF(val);
- }
- else
- val = PyTuple_GetSlice(args,offs,sz); // new ref
-
- flext::AtomListStatic<16> lst;
- const t_symbol *sym = pybase::GetPyArgs(lst,val);
- Py_DECREF(val);
-
- if(sym) {
- if(ext) {
- FLEXT_ASSERT(outl);
- ext->MsgAddAnything(b,o-1,sym,lst.Count(),lst.Atoms());
- }
- else {
- FLEXT_ASSERT(sym);
- if(!flext::MsgForward(b,recv,sym,lst.Count(),lst.Atoms())) {
- PyErr_SetString(PyExc_ValueError,"Receiver not found");
- return NULL;
- }
- }
-
- Py_INCREF(Py_None);
- return Py_None;
- }
- else {
- FLEXT_ASSERT(PyErr_Occurred());
- return NULL;
- }
-
- Py_INCREF(self);
- return self;
- }
- else {
- PyErr_SetString(PyExc_RuntimeError,"Invalid bundle");
- return NULL;
- }
-}
-
-static PyMethodDef bundle_methods[] = {
- {"append", (PyCFunction)bundle_append,METH_VARARGS,"Append message to bundle"},
- {"send", (PyCFunction)bundle_send,METH_NOARGS,"Send bundle"},
- {NULL} /* Sentinel */
-};
-
-
-
-PyTypeObject pyBundle_Type = {
- PyObject_HEAD_INIT(NULL)
- 0, /*ob_size*/
- "Bundle", /*tp_name*/
- sizeof(pyBundle), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- bundle_dealloc, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- 0, /*tp_compare*/
- bundle_repr, /*tp_repr*/
- 0, /*tp_as_number*/
- 0, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- bundle_hash, /*tp_hash */
- 0, /*tp_call*/
- bundle_str, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT /*| Py_TPFLAGS_BASETYPE*/, /*tp_flags*/
- "Bundle objects", /* tp_doc */
- 0, /* tp_traverse */
- 0, /* tp_clear */
- bundle_richcompare, /* tp_richcompare */
- 0, /* tp_weaklistoffset */
- 0, /* tp_iter */
- 0, /* tp_iternext */
- bundle_methods, /* tp_methods */
- 0, /* tp_members */
- 0, /* tp_getset */
- 0, /* tp_base */
- 0, /* tp_dict */
- 0, /* tp_descr_get */
- 0, /* tp_descr_set */
- 0, /* tp_dictoffset */
- bundle_init, /* tp_init */
- 0, /* tp_alloc */
- bundle_new, /* tp_new */
-};
-
-
-void initbundle()
-{
- if(PyType_Ready(&pyBundle_Type) < 0)
- FLEXT_ASSERT(false);
- else
- Py_INCREF(&pyBundle_Type);
-}
diff --git a/externals/grill/py/source/pybundle.h b/externals/grill/py/source/pybundle.h
deleted file mode 100644
index f525f219..00000000
--- a/externals/grill/py/source/pybundle.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
-py/pyext - python script object for PD and Max/MSP
-
-Copyright (c)2002-2008 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-$LastChangedRevision: 26 $
-$LastChangedDate: 2008-01-03 17:20:03 +0100 (Thu, 03 Jan 2008) $
-$LastChangedBy: thomas $
-*/
-
-#ifndef __PYBUNDLE_H
-#define __PYBUNDLE_H
-
-#include <flext.h>
-
-#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 500)
-#error You need at least flext version 0.5.0
-#endif
-
-#if FLEXT_OS == FLEXT_OS_MAC
-#include <Python/Python.h>
-#else
-#include <Python.h>
-#endif
-
-
-#ifdef _MSC_VER
- #ifdef PY_EXPORTS
- #define PY_EXPORT __declspec(dllexport)
- #else
- #define PY_EXPORT __declspec(dllimport)
- #endif
-#else
- #define PY_EXPORT
-#endif
-
-typedef struct {
- PyObject_HEAD
- /* Type-specific fields go here. */
- flext::MsgBundle *bundle;
-} pyBundle;
-
-PY_EXPORT extern PyTypeObject pyBundle_Type;
-
-#define pyBundle_Check(op) PyObject_TypeCheck(op, &pyBundle_Type)
-#define pyBundle_CheckExact(op) ((op)->ob_type == &pyBundle_Type)
-
-
-inline flext::MsgBundle *pyBundle_AS_BUNDLE(PyObject *op)
-{
- return ((pyBundle *)op)->bundle;
-}
-
-inline flext::MsgBundle *pyBundle_AsBundle(PyObject *op)
-{
- return pyBundle_Check(op)?pyBundle_AS_BUNDLE(op):NULL;
-}
-
-
-#endif
diff --git a/externals/grill/py/source/pydsp.cpp b/externals/grill/py/source/pydsp.cpp
deleted file mode 100644
index 38edb6cd..00000000
--- a/externals/grill/py/source/pydsp.cpp
+++ /dev/null
@@ -1,192 +0,0 @@
-/*
-py/pyext - python script object for PD and Max/MSP
-
-Copyright (c)2002-2008 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-$LastChangedRevision: 26 $
-$LastChangedDate: 2008-01-03 17:20:03 +0100 (Thu, 03 Jan 2008) $
-$LastChangedBy: thomas $
-*/
-
-#ifndef PY_NODSP
-
-#include "pyext.h"
-
-class pydsp
- : public pyext
-{
- FLEXT_HEADER(pydsp,pyext)
-public:
- pydsp(int argc,const t_atom *argv);
-
-protected:
- virtual bool CbDsp();
- virtual void CbSignal();
-
- virtual bool DoInit();
- virtual void DoExit();
-
- virtual PyObject *GetSig(int ix,bool in);
-
- void NewBuffers();
- void FreeBuffers();
-
- PyObject *dspfun,*sigfun;
- PyObject **buffers;
-};
-
-FLEXT_LIB_DSP_V("pyext~ pyext.~ pyx~ pyx.~",pydsp)
-
-pydsp::pydsp(int argc,const t_atom *argv)
- : pyext(argc,argv,true)
- , dspfun(NULL),sigfun(NULL)
-{}
-
-bool pydsp::DoInit()
-{
- if(!pyext::DoInit()) return false;
-
- if(pyobj)
- {
- dspfun = PyObject_GetAttrString(pyobj,"_dsp"); // get ref
- if(!dspfun)
- PyErr_Clear();
- else if(!PyMethod_Check(dspfun)) {
- Py_DECREF(dspfun);
- dspfun = NULL;
- }
- }
- return true;
-}
-
-void pydsp::DoExit()
-{
- if(dspfun) { Py_DECREF(dspfun); dspfun = NULL; }
- if(sigfun) { Py_DECREF(sigfun); sigfun = NULL; }
-
- FreeBuffers();
-}
-
-PyObject *arrayfrombuffer(PyObject *buf,int c,int n);
-
-void pydsp::NewBuffers()
-{
- int i,n = Blocksize();
- const int ins = CntInSig(),outs = CntOutSig();
- t_sample *const *insigs = InSig();
- t_sample *const *outsigs = OutSig();
-
- // inlet/outlet count can't change so we don't have to deallocate
- if(!buffers) {
- int cnt = ins+outs;
- buffers = new PyObject *[cnt];
- memset(buffers,0,cnt*sizeof(*buffers));
- }
-
- for(i = 0; i < ins; ++i) {
- Py_XDECREF(buffers[i]);
- PyObject *b = PyBuffer_FromReadWriteMemory(insigs[i],n*sizeof(t_sample));
- buffers[i] = arrayfrombuffer(b,1,n);
- Py_DECREF(b);
- }
- for(i = 0; i < outs; ++i) {
- Py_XDECREF(buffers[ins+i]);
- if(i < ins && outsigs[i] == insigs[i]) {
- // same vectors - share the objects!
- buffers[ins+i] = buffers[i];
- Py_XINCREF(buffers[i]);
- }
- else {
- PyObject *b = PyBuffer_FromReadWriteMemory(outsigs[i],n*sizeof(t_sample));
- buffers[ins+i] = arrayfrombuffer(b,1,n);
- Py_DECREF(b);
- }
- }
-}
-
-void pydsp::FreeBuffers()
-{
- if(buffers) {
- int cnt = CntInSig()+CntOutSig();
- for(int i = 0; i < cnt; ++i) Py_XDECREF(buffers[i]);
- delete[] buffers;
- buffers = NULL;
- }
-}
-
-bool pydsp::CbDsp()
-{
- if(pyobj && (CntInSig() || CntOutSig()))
- {
- ThrState state = PyLockSys();
-
- NewBuffers();
-
- bool dodsp = true;
- if(dspfun) {
- PyObject *ret = PyObject_CallObject(dspfun,NULL);
- if(ret) {
- dodsp = PyObject_IsTrue(ret) != 0;
- Py_DECREF(ret);
- }
- else {
-#ifdef FLEXT_DEBUG
- PyErr_Print();
-#else
- PyErr_Clear();
-#endif
- }
- }
-
- // do that here instead of where dspfun is initialized, so that
- // _signal can be assigned in _dsp
- // optimizations may be done there to assign the right _signal version
- Py_XDECREF(sigfun);
-
- if(dodsp) {
- sigfun = PyObject_GetAttrString(pyobj,"_signal"); // get ref
- if(!sigfun)
- PyErr_Clear();
- else if(!PyMethod_Check(sigfun)) {
- Py_DECREF(sigfun);
- sigfun = NULL;
- }
- }
- else
- sigfun = NULL;
-
- PyUnlock(state);
- return sigfun != NULL;
- }
- else
- // switch on dsp only if there are signal inlets or outlets
- return false;
-}
-
-void pydsp::CbSignal()
-{
- ThrState state = PyLockSys();
- PyObject *ret = PyObject_CallObject(sigfun,NULL);
-
- if(ret)
- Py_DECREF(ret);
- else {
-#ifdef FLEXT_DEBUG
- PyErr_Print();
-#else
- PyErr_Clear();
-#endif
- }
- PyUnlock(state);
-}
-
-PyObject *pydsp::GetSig(int ix,bool in)
-{
- PyObject *r = buffers[in?ix:CntInSig()+ix];
- Py_XINCREF(r);
- return r;
-}
-
-#endif
diff --git a/externals/grill/py/source/pyext.cpp b/externals/grill/py/source/pyext.cpp
deleted file mode 100644
index b2b7baca..00000000
--- a/externals/grill/py/source/pyext.cpp
+++ /dev/null
@@ -1,662 +0,0 @@
-/*
-py/pyext - python script object for PD and Max/MSP
-
-Copyright (c)2002-2008 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-$LastChangedRevision: 26 $
-$LastChangedDate: 2008-01-03 17:20:03 +0100 (Thu, 03 Jan 2008) $
-$LastChangedBy: thomas $
-*/
-
-#include "pyext.h"
-#include <flinternal.h>
-
-
-FLEXT_LIB_V("pyext pyext. pyx pyx.",pyext)
-
-
-static const t_symbol *sym_get;
-
-void pyext::Setup(t_classid c)
-{
- sym_get = flext::MakeSymbol("get");
-
- FLEXT_CADDMETHOD_(c,0,"doc",m_doc);
- FLEXT_CADDMETHOD_(c,0,"dir",m_dir);
-#ifdef FLEXT_THREADS
- FLEXT_CADDATTR_VAR1(c,"detach",detach);
- FLEXT_CADDMETHOD_(c,0,"stop",m_stop);
-#endif
-
- FLEXT_CADDMETHOD_(c,0,"help",m_help);
-
- FLEXT_CADDMETHOD_(c,0,"reload",m_reload_);
- FLEXT_CADDMETHOD_(c,0,"reload.",m_reload);
- FLEXT_CADDMETHOD_(c,0,"doc+",m_doc_);
- FLEXT_CADDMETHOD_(c,0,"dir+",m_dir_);
- FLEXT_CADDATTR_GET(c,"dir+",mg_dir_);
-
- FLEXT_CADDATTR_VAR(c,"args",initargs,ms_initargs);
-
- FLEXT_CADDMETHOD_(c,0,"get",m_get);
- FLEXT_CADDMETHOD_(c,0,"set",m_set);
-
- FLEXT_CADDMETHOD_(c,0,"edit",CbClick);
-
- FLEXT_CADDATTR_VAR1(c,"py",pymsg);
- FLEXT_CADDATTR_VAR1(c,"respond",respond);
-
- // ----------------------------------------------------
-
- // register/initialize pyext base class along with module
- class_dict = PyDict_New();
- PyObject *className = PyString_FromString(PYEXT_CLASS);
- PyMethodDef *def;
-
- // add setattr/getattr to class
- for(def = attr_tbl; def->ml_name; def++) {
- PyObject *func = PyCFunction_New(def, NULL);
- PyDict_SetItemString(class_dict, def->ml_name, func);
- Py_DECREF(func);
- }
-
- class_obj = PyClass_New(NULL, class_dict, className);
- Py_DECREF(className);
-
- // add methods to class
- for (def = meth_tbl; def->ml_name != NULL; def++) {
- PyObject *func = PyCFunction_New(def, NULL);
- PyObject *method = PyMethod_New(func, NULL, class_obj); // increases class_obj ref count by 1
- PyDict_SetItemString(class_dict, def->ml_name, method);
- Py_DECREF(func);
- Py_DECREF(method);
- }
-
-#if PY_VERSION_HEX >= 0x02020000
- // not absolutely necessary, existent in python 2.2 upwards
- // make pyext functions available in class scope
- PyDict_Merge(class_dict,module_dict,0);
-#endif
- // after merge so that it's not in class_dict as well...
- PyDict_SetItemString(module_dict, PYEXT_CLASS,class_obj); // increases class_obj ref count by 1
-
- PyDict_SetItemString(class_dict,"__doc__",PyString_FromString(pyext_doc));
-}
-
-pyext *pyext::GetThis(PyObject *self)
-{
- PyObject *th = PyObject_GetAttrString(self,"_this");
- if(th) {
- pyext *ret = static_cast<pyext *>(PyLong_AsVoidPtr(th));
- Py_DECREF(th);
- return ret;
- }
- else {
- PyErr_Clear();
- return NULL;
- }
-}
-
-void pyext::SetThis()
-{
- // remember the this pointer
- PyObject *th = PyLong_FromVoidPtr(this);
- PyObject_SetAttrString(pyobj,"_this",th); // ref is taken
-}
-
-void pyext::ClearThis()
-{
- int ret = PyObject_DelAttrString(pyobj,"_this");
- FLEXT_ASSERT(ret != -1);
-}
-
-PyObject *pyext::class_obj = NULL;
-PyObject *pyext::class_dict = NULL;
-
-pyext::pyext(int argc,const t_atom *argv,bool sig):
- methname(NULL),
- pyobj(NULL),
- inlets(-1),outlets(-1),
- siginlets(0),sigoutlets(0)
-#ifndef PY_USE_GIL
- ,pythr(NULL)
-#endif
-{
-#ifdef FLEXT_THREADS
- FLEXT_ADDTIMER(stoptmr,tick);
-#endif
-
- if(argc >= 2 && CanbeInt(argv[0]) && CanbeInt(argv[1])) {
- inlets = GetAInt(argv[0]);
- outlets = GetAInt(argv[1]);
- argv += 2,argc -= 2;
- }
-
- if(sig && argc >= 2 && CanbeInt(argv[0]) && CanbeInt(argv[1])) {
- siginlets = GetAInt(argv[0]);
- sigoutlets = GetAInt(argv[1]);
- argv += 2,argc -= 2;
- }
-
- const t_symbol *clname = NULL;
-
- // check if the object name is pyext. , pyx. or similar
- bool dotted = strrchr(thisName(),'.') != NULL;
-
- ThrState state = PyLockSys();
-
- // init script module
- if(argc) {
- AddCurrentPath(this);
-
- const t_symbol *scr = GetASymbol(*argv);
- argv++,argc--;
-
- if(scr) {
- char modnm[64];
- strcpy(modnm,GetString(scr));
-
- if(!dotted) {
- char *pt = strrchr(modnm,'.'); // search for last dot
- if(pt && *pt) {
- clname = MakeSymbol(pt+1);
- *pt = 0;
- }
- }
-
- ImportModule(modnm);
- }
- else
- PyErr_SetString(PyExc_ValueError,"Invalid module name");
-
- // check for alias creation names
- if(dotted) clname = scr;
- }
-
- Register(GetRegistry(REGNAME));
-
- if(argc || clname) {
- if(!clname) {
- clname = GetASymbol(*argv);
- argv++,argc--;
- }
-
- if(clname)
- methname = clname;
- else
- PyErr_SetString(PyExc_ValueError,"Invalid class name");
- }
-
- if(argc) initargs(argc,argv);
-
- Report();
-
- PyUnlock(state);
-}
-
-bool pyext::Init()
-{
- ThrState state = PyLockSys();
-
- if(methname) {
- MakeInstance();
- if(pyobj) InitInOut(inlets,outlets);
- }
- else
- inlets = outlets = 0;
-
- if(inlets < 0) inlets = 0;
- if(outlets < 0) outlets = 0;
-
- AddInSignal(siginlets);
- AddInAnything((siginlets?0:1)+inlets);
- AddOutSignal(sigoutlets);
- AddOutAnything(outlets);
-
- Report();
- PyUnlock(state);
-
- return pyobj && flext_dsp::Init();
-}
-
-bool pyext::Finalize()
-{
- bool ok = true;
- ThrState state = PyLockSys();
-
- PyObject *init = PyObject_GetAttrString(pyobj,"_init"); // get ref
- if(init) {
- if(PyMethod_Check(init)) {
- PyObject *res = PyObject_CallObject(init,NULL);
- if(!res) {
- // exception is set
- ok = false;
- // we want to know why __init__ failed...
- PyErr_Print();
- }
- else
- Py_DECREF(res);
- }
- Py_DECREF(init);
- }
- else
- // __init__ has not been found - don't care
- PyErr_Clear();
-
- PyUnlock(state);
- return ok && flext_dsp::Finalize();
-}
-
-void pyext::Exit()
-{
- pybase::Exit(); // exit threads
-
- ThrState state = PyLockSys();
- DoExit();
-
- Unregister(GetRegistry(REGNAME));
- UnimportModule();
-
- Report();
- PyUnlock(state);
-
- flext_dsp::Exit();
-}
-
-bool pyext::DoInit()
-{
- // call init now, after _this has been set, which is
- // important for eventual callbacks from __init__ to c
- PyObject *pargs = MakePyArgs(NULL,initargs.Count(),initargs.Atoms());
- if(pargs) {
- bool ok = true;
-
- SetThis();
-
- PyObject *init = PyObject_GetAttrString(pyobj,"__init__"); // get ref
- if(init) {
- if(PyMethod_Check(init)) {
- PyObject *res = PyObject_CallObject(init,pargs);
- if(!res) {
- // exception is set
- ok = false;
- // we want to know why __init__ failed...
- PyErr_Print();
- }
- else
- Py_DECREF(res);
- }
- Py_DECREF(init);
- }
- else
- // __init__ has not been found - don't care
- PyErr_Clear();
-
- Py_DECREF(pargs);
- return ok;
- }
- else
- return false;
-}
-
-void pyext::DoExit()
-{
- ClearBinding();
-
- bool gcrun = false;
- if(pyobj) {
- // try to run del to clean up the class instance
- PyObject *objdel = PyObject_GetAttrString(pyobj,"_del");
- if(objdel) {
- PyObject *ret = PyObject_CallObject(objdel,NULL);
- if(ret)
- Py_DECREF(ret);
- else
- PyErr_Print();
- Py_DECREF(objdel);
- }
- else
- // _del has not been found - don't care
- PyErr_Clear();
-
- ClearThis();
-
- gcrun = pyobj->ob_refcnt > 1;
- Py_DECREF(pyobj); // opposite of SetClssMeth
- }
-
- if(gcrun && !collect()) {
- post("%s - Unloading: Object is still referenced",thisName());
- }
-}
-
-bool pyext::InitInOut(int &inl,int &outl)
-{
- if(inl >= 0) {
- // set number of inlets
- int ret = PyObject_SetAttrString(pyobj,"_inlets",PyInt_FromLong(inl));
- FLEXT_ASSERT(!ret);
- }
- if(outl >= 0) {
- // set number of outlets
- int ret = PyObject_SetAttrString(pyobj,"_outlets",PyInt_FromLong(outl));
- FLEXT_ASSERT(!ret);
- }
-
- // __init__ can override the number of inlets and outlets
- if(!DoInit()) // call __init__ constructor
- return false;
-
- if(inl < 0) {
- // get number of inlets
- inl = inlets;
- PyObject *res = PyObject_GetAttrString(pyobj,"_inlets"); // get ref
- if(res) {
- if(PyCallable_Check(res)) {
- PyObject *fres = PyEval_CallObject(res,NULL);
- Py_DECREF(res);
- res = fres;
- }
- if(PyInt_Check(res))
- inl = PyInt_AS_LONG(res);
- Py_DECREF(res);
- }
- else
- PyErr_Clear();
- }
- if(outl < 0) {
- // get number of outlets
- outl = outlets;
- PyObject *res = PyObject_GetAttrString(pyobj,"_outlets"); // get ref
- if(res) {
- if(PyCallable_Check(res)) {
- PyObject *fres = PyEval_CallObject(res,NULL);
- Py_DECREF(res);
- res = fres;
- }
- if(PyInt_Check(res))
- outl = PyInt_AS_LONG(res);
- Py_DECREF(res);
- }
- else
- PyErr_Clear();
- }
-
- return true;
-}
-
-bool pyext::MakeInstance()
-{
- // pyobj should already have been decref'd / cleared before getting here!!
-
- if(module && methname) {
- PyObject *pref = PyObject_GetAttrString(module,const_cast<char *>(GetString(methname)));
- if(!pref)
- PyErr_Print();
- else {
- if(PyClass_Check(pref)) {
- // make instance, but don't call __init__
- pyobj = PyInstance_NewRaw(pref,NULL);
-
- if(!pyobj) PyErr_Print();
- }
- else
- post("%s - Type of \"%s\" is unhandled!",thisName(),GetString(methname));
-
- Py_DECREF(pref);
- }
- return true;
- }
- else
- return false;
-}
-
-void pyext::LoadModule()
-{
-}
-
-void pyext::UnloadModule()
-{
-}
-
-void pyext::Load()
-{
- FLEXT_ASSERT(!pyobj);
-
- bool ok = MakeInstance();
-
- if(ok) {
- int inl = -1,outl = -1;
- ok = InitInOut(inl,outl);
-
- if((inl >= 0 && inl != inlets) || (outl >= 0 && outl != outlets))
- post("%s - Inlet and outlet count can't be changed by reload",thisName());
- }
-
-// return ok;
-}
-
-void pyext::Unload()
-{
- DoExit();
- pyobj = NULL;
-}
-
-void pyext::m_get(const t_symbol *s)
-{
- ThrState state = PyLockSys();
-
- PyObject *pvar = PyObject_GetAttrString(pyobj,const_cast<char *>(GetString(s))); /* fetch bound method */
- if(pvar) {
- flext::AtomListStatic<16> lst;
- const t_symbol *sym = GetPyArgs(lst,pvar,1);
- if(sym) {
- FLEXT_ASSERT(!IsAnything(sym));
- // dump value to attribute outlet
- SetSymbol(lst[0],s);
- ToOutAnything(GetOutAttr(),sym_get,lst.Count(),lst.Atoms());
- }
-
- Py_DECREF(pvar);
- }
-
- Report();
-
- PyUnlock(state);
-}
-
-void pyext::m_set(int argc,const t_atom *argv)
-{
- ThrState state = PyLockSys();
-
- if(argc < 2 || !IsString(argv[0]))
- post("%s - Syntax: set varname arguments...",thisName());
- else if(*GetString(argv[0]) == '_')
- post("%s - set: variables with leading _ are reserved and can't be set",thisName());
- else {
- char *ch = const_cast<char *>(GetString(argv[0]));
- if(PyObject_HasAttrString(pyobj,ch)) {
- PyObject *pval = MakePyArgs(NULL,argc-1,argv+1);
- if(pval) {
- if(PySequence_Size(pval) == 1) {
- // reduce lists of one element to element itself
-
- PyObject *val1 = PySequence_GetItem(pval,0); // new reference
- Py_DECREF(pval);
- pval = val1;
- }
-
- PyObject_SetAttrString(pyobj,ch,pval);
- Py_DECREF(pval);
- }
- }
- }
-
- Report();
-
- PyUnlock(state);
-}
-
-
-bool pyext::CbMethodResort(int n,const t_symbol *s,int argc,const t_atom *argv)
-{
- if(!n)
- return flext_dsp::CbMethodResort(n,s,argc,argv);
-
- return pyobj && work(n,s,argc,argv);
-}
-
-
-void pyext::m_help()
-{
- post("");
- post("%s %s - python class object, (C)2002-2008 Thomas Grill",thisName(),PY__VERSION);
-#ifdef FLEXT_DEBUG
- post("DEBUG VERSION, compiled on " __DATE__ " " __TIME__);
-#endif
-
- post("Arguments: %s {inlets outlets} [script name] [class name] {args...}",thisName());
-
- post("Inlet 1: messages to control the pyext object");
- post(" 2...: python inlets");
- post("Outlets: python outlets");
- post("Methods:");
- post("\thelp: shows this help");
- post("\treload {args...}: reload python script");
- post("\treload. : reload with former arguments");
- post("\tdoc: display module doc string");
- post("\tdoc+: display class doc string");
- post("\tdir: dump module dictionary");
- post("\tdir+: dump class dictionary");
-#ifdef FLEXT_THREADS
- post("\tdetach 0/1: detach threads");
- post("\tstop {wait time (ms)}: stop threads");
-#endif
- post("");
-}
-
-void pyext::callpy(PyObject *fun,PyObject *args)
-{
- PyObject *ret = PyObject_CallObject(fun,args);
- if(ret) {
- // function worked fine
- if(!PyObject_Not(ret)) post("pyext - returned value is ignored");
- Py_DECREF(ret);
- }
-}
-
-
-bool pyext::call(const char *meth,int inlet,const t_symbol *s,int argc,const t_atom *argv)
-{
- bool ret = false;
-
- PyObject *pmeth = PyObject_GetAttrString(pyobj,const_cast<char *>(meth)); /* fetch bound method */
- if(pmeth == NULL) {
- PyErr_Clear(); // no method found
- }
- else {
- PyObject *pargs = MakePyArgs(s,argc,argv,inlet?inlet:-1); //,true);
- if(!pargs) {
- PyErr_Print();
- Py_DECREF(pmeth);
- }
- else {
- gencall(pmeth,pargs);
- ret = true;
- }
- }
- return ret;
-}
-
-bool pyext::work(int n,const t_symbol *s,int argc,const t_atom *argv)
-{
- bool ret = false;
-
- ThrState state = PyLock();
-
- // should be enough...
- char str[256];
-
- // offset inlet index by signal inlets
- // \note first one is shared with messages!
- if(siginlets) n += siginlets-1;
-
- // try tag/inlet
- if(!ret) {
- sprintf(str,"%s_%i",GetString(s),n);
- ret = call(str,0,NULL,argc,argv);
- }
-
- if(!ret && argc == 1) {
- if(s == sym_float) {
- // try truncated float
- t_atom at; SetInt(at,GetAInt(argv[0]));
- sprintf(str,"int_%i",n);
- ret = call(str,0,NULL,1,&at);
- }
- else if(s == sym_int) {
- // try floating int
- t_atom at; SetFloat(at,GetAFloat(argv[0]));
- sprintf(str,"float_%i",n);
- ret = call(str,0,NULL,1,&at);
- }
- }
-
- // try anything/inlet
- if(!ret) {
- sprintf(str,"_anything_%i",n);
- ret = call(str,0,s,argc,argv);
- }
-
- // try tag at any inlet
- if(!ret) {
- sprintf(str,"%s_",GetString(s));
- ret = call(str,n,NULL,argc,argv);
- }
-
- if(!ret && argc == 1) {
- if(s == sym_float) {
- // try truncated float at any inlet
- t_atom at; SetInt(at,GetAInt(argv[0]));
- ret = call("int_",0,NULL,1,&at);
- }
- else if(s == sym_int) {
- // try floating int at any inlet
- t_atom at; SetFloat(at,GetAFloat(argv[0]));
- ret = call("float_",0,NULL,1,&at);
- }
- }
-
- if(!ret) {
- // try anything at any inlet
- const char *str1 = "_anything_";
- if(s == sym_bang && !argc) {
- t_atom argv;
- SetSymbol(argv,sym__);
- ret = call(str1,n,s,1,&argv);
- }
- else
- ret = call(str1,n,s,argc,argv);
- }
-
- if(!ret)
- // no matching python method found
- post("%s - no matching method found for '%s' into inlet %i",thisName(),GetString(s),n);
-
- PyUnlock(state);
-
- Respond(ret);
- return ret;
-}
-
-PyObject *pyext::GetSig(int ix,bool in) { return NULL; }
-
-void pyext::CbClick() { pybase::OpenEditor(); }
-bool pyext::CbDsp() { return false; }
-
-void pyext::DumpOut(const t_symbol *sym,int argc,const t_atom *argv)
-{
- ToOutAnything(GetOutAttr(),sym?sym:thisTag(),argc,argv);
-}
diff --git a/externals/grill/py/source/pyext.h b/externals/grill/py/source/pyext.h
deleted file mode 100644
index acfef40d..00000000
--- a/externals/grill/py/source/pyext.h
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
-py/pyext - python external object for PD and MaxMSP
-
-Copyright (c)2002-2008 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-$LastChangedRevision: 26 $
-$LastChangedDate: 2008-01-03 17:20:03 +0100 (Thu, 03 Jan 2008) $
-$LastChangedBy: thomas $
-*/
-
-#ifndef __PYEXT_H
-#define __PYEXT_H
-
-#include "pybase.h"
-
-class pyext
- : public pybase
- , public flext_dsp
-{
- FLEXT_HEADER_S(pyext,flext_dsp,Setup)
-
-public:
- pyext(int argc,const t_atom *argv,bool sig = false);
-
- static PyObject *pyext__str__(PyObject *,PyObject *args);
-
- static PyObject *pyext_outlet(PyObject *,PyObject *args);
-#if FLEXT_SYS == FLEXT_SYS_PD
- static PyObject *pyext_tocanvas(PyObject *,PyObject *args);
-#endif
-
- static PyObject *pyext_setattr(PyObject *,PyObject *args);
- static PyObject *pyext_getattr(PyObject *,PyObject *args);
-
- static PyObject *pyext_detach(PyObject *,PyObject *args);
- static PyObject *pyext_stop(PyObject *,PyObject *args);
- static PyObject *pyext_isthreaded(PyObject *,PyObject *);
-
- static PyObject *pyext_inbuf(PyObject *,PyObject *args);
- static PyObject *pyext_invec(PyObject *,PyObject *args);
- static PyObject *pyext_outbuf(PyObject *,PyObject *args);
- static PyObject *pyext_outvec(PyObject *,PyObject *args);
-
- int Inlets() const { return inlets; }
- int Outlets() const { return outlets; }
-
- static pyext *GetThis(PyObject *self);
-
-protected:
-
- virtual bool Init();
- virtual bool Finalize();
- virtual void Exit();
-
- virtual bool CbMethodResort(int n,const t_symbol *s,int argc,const t_atom *argv);
- virtual void CbClick();
- virtual bool CbDsp();
-
- virtual void DumpOut(const t_symbol *sym,int argc,const t_atom *argv);
-
- bool work(int n,const t_symbol *s,int argc,const t_atom *argv);
-
- void m_help();
-
- void m_reload() { Reload(); }
- void m_reload_(int argc,const t_atom *argv) { initargs(argc,argv); Reload(); }
- void ms_initargs(const AtomList &a) { m_reload_(a.Count(),a.Atoms()); }
- void m_dir_() { m__dir(pyobj); }
- void mg_dir_(AtomList &lst) { GetDir(pyobj,lst); }
- void m_doc_() { m__doc(((PyInstanceObject *)pyobj)->in_class->cl_dict); }
-
- void m_get(const t_symbol *s);
- void m_set(int argc,const t_atom *argv);
-
- const t_symbol *methname;
- PyObject *pyobj;
- int inlets,outlets;
- int siginlets,sigoutlets;
-
- flext::AtomList initargs;
-
- virtual void LoadModule();
- virtual void UnloadModule();
-
- virtual void Load();
- virtual void Unload();
-
- virtual bool DoInit();
- virtual void DoExit();
-
- virtual PyObject *GetSig(int ix,bool in);
-
-private:
- static void Setup(t_classid);
-
- void SetThis();
- void ClearThis();
-
- void ClearBinding();
- bool MakeInstance();
- bool InitInOut(int &inlets,int &outlets);
-
- static PyObject *class_obj,*class_dict;
- static PyMethodDef attr_tbl[],meth_tbl[];
- static const char *pyext_doc;
-
- // -------- bind stuff ------------------
- static PyObject *pyext_bind(PyObject *,PyObject *args);
- static PyObject *pyext_unbind(PyObject *,PyObject *args);
-
- // ---------------------------
-
- bool call(const char *meth,int inlet,const t_symbol *s,int argc,const t_atom *argv);
-
- virtual void callpy(PyObject *fun,PyObject *args);
- static bool stcallpy(PyObject *fun,PyObject *args);
-
-#ifndef PY_USE_GIL
- ThrState pythr;
-#endif
-
-private:
- static bool boundmeth(flext_base *,t_symbol *sym,int argc,t_atom *argv,void *data);
-
- FLEXT_CALLBACK(m_help)
-
- FLEXT_CALLBACK(m_reload)
- FLEXT_CALLBACK_V(m_reload_)
- FLEXT_CALLBACK(m_dir_)
- FLEXT_CALLGET_V(mg_dir_)
- FLEXT_CALLBACK(m_doc_)
-
- FLEXT_ATTRGET_V(initargs)
- FLEXT_CALLSET_V(ms_initargs)
-
- FLEXT_CALLBACK_S(m_get)
- FLEXT_CALLBACK_V(m_set)
-
- // callbacks
- FLEXT_ATTRVAR_I(detach)
- FLEXT_ATTRVAR_B(pymsg)
- FLEXT_ATTRVAR_B(respond)
-
- FLEXT_CALLBACK_V(m_stop)
- FLEXT_CALLBACK(m_dir)
- FLEXT_CALLGET_V(mg_dir)
- FLEXT_CALLBACK(m_doc)
-
- FLEXT_CALLBACK(CbClick)
-
-#ifdef FLEXT_THREADS
- FLEXT_CALLBACK_T(tick)
-#endif
-};
-
-#endif
diff --git a/externals/grill/py/source/pymeth.cpp b/externals/grill/py/source/pymeth.cpp
deleted file mode 100644
index e696e89b..00000000
--- a/externals/grill/py/source/pymeth.cpp
+++ /dev/null
@@ -1,430 +0,0 @@
-/*
-py/pyext - python script object for PD and Max/MSP
-
-Copyright (c)2002-2008 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-$LastChangedRevision: 26 $
-$LastChangedDate: 2008-01-03 17:20:03 +0100 (Thu, 03 Jan 2008) $
-$LastChangedBy: thomas $
-*/
-
-#include "pybase.h"
-#include <map>
-
-struct xlt { const t_symbol *from,*to; };
-
-static const xlt xtdefs[] = {
- { flext::MakeSymbol("+"),flext::MakeSymbol("__add__") },
- { flext::MakeSymbol("+="),flext::MakeSymbol("__iadd__") },
- { flext::MakeSymbol("!+"),flext::MakeSymbol("__radd__") },
- { flext::MakeSymbol("-"),flext::MakeSymbol("__sub__") },
- { flext::MakeSymbol("-="),flext::MakeSymbol("__isub__") },
- { flext::MakeSymbol("!-"),flext::MakeSymbol("__rsub__") },
- { flext::MakeSymbol("*"),flext::MakeSymbol("__mul__") },
- { flext::MakeSymbol("*="),flext::MakeSymbol("__imul__") },
- { flext::MakeSymbol("!*"),flext::MakeSymbol("__rmul__") },
- { flext::MakeSymbol("/"),flext::MakeSymbol("__div__") },
- { flext::MakeSymbol("/="),flext::MakeSymbol("__idiv__") },
- { flext::MakeSymbol("!/"),flext::MakeSymbol("__rdiv__") },
- { flext::MakeSymbol("//"),flext::MakeSymbol("__floordiv__") },
- { flext::MakeSymbol("//="),flext::MakeSymbol("__ifloordiv__") },
- { flext::MakeSymbol("!//"),flext::MakeSymbol("__rfloordiv__") },
- { flext::MakeSymbol("%"),flext::MakeSymbol("__mod__") },
- { flext::MakeSymbol("%="),flext::MakeSymbol("__imod__") },
- { flext::MakeSymbol("!%"),flext::MakeSymbol("__rmod__") },
- { flext::MakeSymbol("**"),flext::MakeSymbol("__pow__") },
- { flext::MakeSymbol("**="),flext::MakeSymbol("__ipow__") },
- { flext::MakeSymbol("!**"),flext::MakeSymbol("__rpow__") },
- { flext::MakeSymbol("&"),flext::MakeSymbol("__and__") },
- { flext::MakeSymbol("&="),flext::MakeSymbol("__iand__") },
- { flext::MakeSymbol("!&"),flext::MakeSymbol("__rand__") },
- { flext::MakeSymbol("|"),flext::MakeSymbol("__or__") },
- { flext::MakeSymbol("|="),flext::MakeSymbol("__ior__") },
- { flext::MakeSymbol("!|"),flext::MakeSymbol("__ror__") },
- { flext::MakeSymbol("^"),flext::MakeSymbol("__xor__") },
- { flext::MakeSymbol("^="),flext::MakeSymbol("__ixor__") },
- { flext::MakeSymbol("!^"),flext::MakeSymbol("__rxor__") },
- { flext::MakeSymbol("<<"),flext::MakeSymbol("__lshift__") },
- { flext::MakeSymbol("<<="),flext::MakeSymbol("__ilshift__") },
- { flext::MakeSymbol("!<<"),flext::MakeSymbol("__rlshift__") },
- { flext::MakeSymbol(">>"),flext::MakeSymbol("__rshift__") },
- { flext::MakeSymbol(">>="),flext::MakeSymbol("__irshift__") },
- { flext::MakeSymbol("!>>"),flext::MakeSymbol("__rrshift__") },
- { flext::MakeSymbol("=="),flext::MakeSymbol("__eq__") },
- { flext::MakeSymbol("!="),flext::MakeSymbol("__ne__") },
- { flext::MakeSymbol("<"),flext::MakeSymbol("__lt__") },
- { flext::MakeSymbol(">"),flext::MakeSymbol("__gt__") },
- { flext::MakeSymbol("<="),flext::MakeSymbol("__le__") },
- { flext::MakeSymbol(">="),flext::MakeSymbol("__ge__") },
- { flext::MakeSymbol("!"),flext::MakeSymbol("__nonzero__") },
- { flext::MakeSymbol("~"),flext::MakeSymbol("__invert__") },
- { flext::MakeSymbol("[]"),flext::MakeSymbol("__getitem__") },
- { flext::MakeSymbol("[]="),flext::MakeSymbol("__setitem__") },
- { flext::MakeSymbol("[:]"),flext::MakeSymbol("__getslice__") },
- { flext::MakeSymbol("[:]="),flext::MakeSymbol("__setslice__") },
-
- { flext::MakeSymbol(".abs"),flext::MakeSymbol("__abs__") },
- { flext::MakeSymbol(".neg"),flext::MakeSymbol("__neg__") },
- { flext::MakeSymbol(".pos"),flext::MakeSymbol("__pos__") },
- { flext::MakeSymbol(".divmod"),flext::MakeSymbol("__divmod__") },
-
- { flext::MakeSymbol(".int"),flext::MakeSymbol("__int__") },
- { flext::MakeSymbol(".long"),flext::MakeSymbol("__long__") },
- { flext::MakeSymbol(".float"),flext::MakeSymbol("__float__") },
- { flext::MakeSymbol(".complex"),flext::MakeSymbol("__complex__") },
- { flext::MakeSymbol(".str"),flext::MakeSymbol("__str__") },
- { flext::MakeSymbol(".coerce"),flext::MakeSymbol("__coerce__") },
-
- { flext::MakeSymbol(".doc"),flext::MakeSymbol("__doc__") },
- { flext::MakeSymbol(".repr"),flext::MakeSymbol("__repr__") },
-
- { flext::MakeSymbol(".len"),flext::MakeSymbol("__len__") },
- { flext::MakeSymbol(".in"),flext::MakeSymbol("__contains") },
-
- { NULL,NULL } // sentinel
-};
-
-typedef std::map<const t_symbol *,const t_symbol *> XTable;
-static XTable xtable;
-
-
-class pymeth
- : public pybase
- , public flext_base
-{
- FLEXT_HEADER_S(pymeth,flext_base,Setup)
-
-public:
- pymeth(int argc,const t_atom *argv);
- ~pymeth();
-
-protected:
- virtual void Exit();
-
- virtual bool CbMethodResort(int n,const t_symbol *s,int argc,const t_atom *argv);
-
- void m_help();
-
- void m_reload() { Reload(); }
- void m_reload_(int argc,const t_atom *argv) { args(argc,argv); Reload(); }
- void m_set(int argc,const t_atom *argv);
- void m_dir_() { m__dir(function); }
- void m_doc_() { m__doc(function); }
-
- const t_symbol *funname;
- PyObject *function;
-
- virtual void LoadModule();
- virtual void UnloadModule();
-
- virtual void Load();
- virtual void Unload();
-
- void SetFunction(const t_symbol *func);
- void ResetFunction();
-
- virtual void DumpOut(const t_symbol *sym,int argc,const t_atom *argv);
-
- PyObject **objects;
-
-private:
-
- virtual void callpy(PyObject *fun,PyObject *args);
-
- static void Setup(t_classid c);
-
- FLEXT_CALLBACK(m_help)
- FLEXT_CALLBACK(m_reload)
- FLEXT_CALLBACK_V(m_reload_)
- FLEXT_CALLBACK_V(m_set)
- FLEXT_CALLBACK(m_dir_)
- FLEXT_CALLBACK(m_doc_)
-
- // callbacks
- FLEXT_ATTRVAR_I(detach)
- FLEXT_ATTRVAR_B(pymsg)
- FLEXT_ATTRVAR_B(respond)
-
- FLEXT_CALLBACK_V(m_stop)
- FLEXT_CALLBACK(m_dir)
- FLEXT_CALLGET_V(mg_dir)
- FLEXT_CALLBACK(m_doc)
-
-#ifdef FLEXT_THREADS
- FLEXT_CALLBACK_T(tick)
-#endif
-};
-
-FLEXT_LIB_V("pym",pymeth)
-
-
-void pymeth::Setup(t_classid c)
-{
- FLEXT_CADDMETHOD_(c,0,"doc",m_doc);
- FLEXT_CADDMETHOD_(c,0,"dir",m_dir);
-#ifdef FLEXT_THREADS
- FLEXT_CADDATTR_VAR1(c,"detach",detach);
- FLEXT_CADDMETHOD_(c,0,"stop",m_stop);
-#endif
-
- FLEXT_CADDMETHOD_(c,0,"help",m_help);
- FLEXT_CADDMETHOD_(c,0,"reload",m_reload_);
- FLEXT_CADDMETHOD_(c,0,"reload.",m_reload);
- FLEXT_CADDMETHOD_(c,0,"doc+",m_doc_);
- FLEXT_CADDMETHOD_(c,0,"dir+",m_dir_);
-
- FLEXT_CADDMETHOD_(c,0,"set",m_set);
-
- FLEXT_CADDATTR_VAR1(c,"py",pymsg);
- FLEXT_CADDATTR_VAR1(c,"respond",respond);
-
- // init translation map
- for(const xlt *xi = xtdefs; xi->from; ++xi) xtable[xi->from] = xi->to;
-}
-
-pymeth::pymeth(int argc,const t_atom *argv)
- : funname(NULL)
- , function(NULL)
- , objects(NULL)
-{
-#ifdef FLEXT_THREADS
- FLEXT_ADDTIMER(stoptmr,tick);
-#endif
-
- ThrState state = PyLockSys();
-
- int inlets;
- if(argc && CanbeInt(*argv)) {
- inlets = GetAInt(*argv);
- if(inlets < 1) inlets = 1;
- argv++,argc--;
- }
- else inlets = 1;
-
- objects = new PyObject *[inlets];
- for(int i = 0; i < inlets; ++i) { objects[i] = Py_None; Py_INCREF(Py_None); }
-
- if(inlets <= 0) InitProblem();
-
- AddInAnything(1+(inlets < 0?1:inlets));
- AddOutAnything();
-
- Register(GetRegistry(REGNAME));
-
- if(argc) {
- const t_symbol *funnm = GetASymbol(*argv);
- argv++,argc--;
-
- if(funnm)
- SetFunction(funnm);
- else
- PyErr_SetString(PyExc_ValueError,"Invalid function name");
- }
-
- if(argc) args(argc,argv);
-
- Report();
-
- PyUnlock(state);
-}
-
-pymeth::~pymeth()
-{
- if(objects) {
- for(int i = 0; i < CntIn()-1; ++i) Py_DECREF(objects[i]);
- delete[] objects;
- }
-
- ThrState state = PyLockSys();
- Unregister(GetRegistry(REGNAME));
- Report();
- PyUnlock(state);
-}
-
-void pymeth::Exit()
-{
- pybase::Exit();
- flext_base::Exit();
-}
-
-void pymeth::m_set(int argc,const t_atom *argv)
-{
- ThrState state = PyLockSys();
-
- // function name has precedence
- if(argc >= 2) {
- const char *sn = GetAString(*argv);
- ++argv,--argc;
-
- if(sn) {
- if(!module || !strcmp(sn,PyModule_GetName(module))) {
- ImportModule(sn);
- Register(GetRegistry(REGNAME));
- }
- }
- else
- PyErr_SetString(PyExc_ValueError,"Invalid module name");
- }
-
- if(argc) {
- const t_symbol *fn = GetASymbol(*argv);
- if(fn)
- SetFunction(fn);
- else
- PyErr_SetString(PyExc_ValueError,"Invalid function name");
- }
-
- Report();
-
- PyUnlock(state);
-}
-
-void pymeth::m_help()
-{
- post("");
- post("%s %s - python method object, (C)2002-2008 Thomas Grill",thisName(),PY__VERSION);
-#ifdef FLEXT_DEBUG
- post("DEBUG VERSION, compiled on " __DATE__ " " __TIME__);
-#endif
-
- post("Arguments: %s [method name] {args...}",thisName());
-
- post("Inlet 1:messages to control the py object");
- post(" 2:call python function with message as argument(s)");
- post("Outlet: 1:return values from python function");
- post("Methods:");
- post("\thelp: shows this help");
- post("\tbang: call script without arguments");
- post("\tset [script name] [function name]: set (script and) function name");
- post("\treload {args...}: reload python script");
- post("\treload. : reload with former arguments");
- post("\tdoc: display module doc string");
- post("\tdoc+: display function doc string");
- post("\tdir: dump module dictionary");
- post("\tdir+: dump function dictionary");
-#ifdef FLEXT_THREADS
- post("\tdetach 0/1/2: detach threads");
- post("\tstop {wait time (ms)}: stop threads");
-#endif
- post("");
-}
-
-void pymeth::ResetFunction()
-{
- Py_XDECREF(function);
- function = NULL;
-
- if(funname && objects[0] != Py_None) {
- function = PyObject_GetAttrString(objects[0],(char *)GetString(funname)); // new reference
- if(!function)
- PyErr_SetString(PyExc_AttributeError,"Method not found");
- }
-
- // exception could be set here
-}
-
-void pymeth::SetFunction(const t_symbol *func)
-{
- // look for method name in translation table
- XTable::iterator it = xtable.find(func);
- funname = it == xtable.end()?func:it->second;
-
- ResetFunction();
-}
-
-
-void pymeth::LoadModule()
-{
- SetFunction(funname);
-}
-
-void pymeth::UnloadModule()
-{
-}
-
-void pymeth::Load()
-{
- ResetFunction();
-}
-
-void pymeth::Unload()
-{
- SetFunction(NULL);
-}
-
-void pymeth::callpy(PyObject *fun,PyObject *args)
-{
- PyObject *ret = PyObject_CallObject(fun,args);
- if(ret) {
- OutObject(this,0,ret); // exception might be raised here
- Py_DECREF(ret);
- }
-}
-
-bool pymeth::CbMethodResort(int n,const t_symbol *s,int argc,const t_atom *argv)
-{
- if(n == 0 && s != sym_bang)
- return flext_base::CbMethodResort(n,s,argc,argv);
-
- ThrState state = PyLockSys();
-
- bool ret = false;
-
- if(n >= 1) {
- // store args
- PyObject *&obj = objects[n-1];
- Py_DECREF(obj);
- obj = MakePyArg(s,argc,argv); // steal reference
-
- if(n > 1) ret = true; // just store, don't trigger
- }
-
- if(!ret) {
- if(function) {
- PyObject *self = PyMethod_Self(function);
- PyErr_Clear();
- if(!self || self->ob_type != objects[0]->ob_type)
- // type has changed, search for new method
- ResetFunction();
- else if(self != objects[0]) {
- // type hasn't changed, but object has
- PyObject *f = function;
- function = PyMethod_New(PyMethod_GET_FUNCTION(f),objects[0],PyMethod_GET_CLASS(f));
- Py_DECREF(f);
- }
- }
- else
- ResetFunction();
-
- if(function) {
- Py_INCREF(function);
-
- int inlets = CntIn()-1;
- PyObject *pargs = PyTuple_New(inlets-1);
- for(int i = 1; i < inlets; ++i) {
- Py_INCREF(objects[i]);
- PyTuple_SET_ITEM(pargs,i-1,objects[i]);
- }
-
- gencall(function,pargs); // references are stolen
- ret = true;
- }
- else
- PyErr_SetString(PyExc_RuntimeError,"No function set");
-
- Report();
- }
-
- PyUnlock(state);
-
- Respond(ret);
-
- return ret;
-}
-
-void pymeth::DumpOut(const t_symbol *sym,int argc,const t_atom *argv)
-{
- ToOutAnything(GetOutAttr(),sym?sym:thisTag(),argc,argv);
-}
diff --git a/externals/grill/py/source/pyprefix.h b/externals/grill/py/source/pyprefix.h
deleted file mode 100644
index 0614b3e0..00000000
--- a/externals/grill/py/source/pyprefix.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
-py/pyext - python script object for PD and MaxMSP
-
-Copyright (c)2002-2008 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-$LastChangedRevision: 26 $
-$LastChangedDate: 2008-01-04 12:58:11 +0100 (Fri, 04 Jan 2008) $
-$LastChangedBy: thomas $
-*/
-
-#ifndef __PYPREFIX_H
-#define __PYPREFIX_H
-
-#define FLEXT_ATTRIBUTES 1
-#include <flext.h>
-
-// hack: must include math.h before Python.h (at least on OSX)
-// otherwise some functions don't get defined
-#include <math.h>
-
-#if FLEXT_OS == FLEXT_OS_MAC
-#include <Python/Python.h>
-#else
-#include <Python.h>
-#endif
-
-#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 501)
-#error You need at least flext version 0.5.1
-#endif
-
-#if FLEXT_OS == FLEXT_LINUX || FLEXT_OS == FLEXT_IRIX
-#include <unistd.h>
-#endif
-
-#if FLEXT_SYS == FLEXT_SYS_PD && (!defined (PD_MINOR_VERSION) || PD_MINOR_VERSION < 37)
-#error PD version >= 0.37 required, please upgrade!
-#endif
-
-#include <flcontainers.h>
-#include <string>
-
-#if FLEXT_SYS == FLEXT_SYS_PD && defined(PY_USE_INOFFICIAL)
-extern "C" {
-#include <s_stuff.h>
-}
-#endif
-
-#if PY_VERSION_HEX < 0x02050000
-typedef int Py_ssize_t;
-#endif
-
-#endif
diff --git a/externals/grill/py/source/pysymbol.cpp b/externals/grill/py/source/pysymbol.cpp
deleted file mode 100644
index b812e134..00000000
--- a/externals/grill/py/source/pysymbol.cpp
+++ /dev/null
@@ -1,266 +0,0 @@
-/*
-py/pyext - python script object for PD and Max/MSP
-
-Copyright (c)2002-2008 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-$LastChangedRevision: 26 $
-$LastChangedDate: 2008-01-03 18:15:53 +0100 (Thu, 03 Jan 2008) $
-$LastChangedBy: thomas $
-*/
-
-#include "pyprefix.h"
-#include "pysymbol.h"
-
-inline pySymbol *symbol_newsym(const t_symbol *sym)
-{
- pySymbol *self = (pySymbol *)pySymbol_Type.tp_alloc(&pySymbol_Type, 0);
- if(self) self->sym = sym;
- return self;
-}
-
-static PyObject *symbol_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
- return (PyObject *)symbol_newsym(flext::sym__);
-}
-
-static int symbol_init(PyObject *self, PyObject *args, PyObject *kwds)
-{
- FLEXT_ASSERT(pySymbol_Check(self));
-
- PyObject *arg = PySequence_GetItem(args,0); // new reference
- if(!arg) return -1;
-
- int ret = 0;
-
- if(pySymbol_Check(arg))
- ((pySymbol *)self)->sym = pySymbol_AS_SYMBOL(arg);
- else if(PyString_Check(arg))
- ((pySymbol *)self)->sym = flext::MakeSymbol(PyString_AS_STRING(arg));
- else {
- PyErr_SetString(PyExc_TypeError,"string or symbol argument expected");
- ret = -1;
- }
- Py_DECREF(arg);
-
- return ret;
-}
-
-static PyObject *symbol_str(PyObject *self)
-{
- FLEXT_ASSERT(pySymbol_Check(self));
- return (PyObject *)PyString_FromString(pySymbol_AS_STRING(self));
-}
-
-static PyObject *symbol_repr(PyObject *self)
-{
- FLEXT_ASSERT(pySymbol_Check(self));
- return (PyObject *)PyString_FromFormat("<Symbol %s>",pySymbol_AS_STRING(self));
-}
-
-static PyObject *symbol_richcompare(PyObject *a,PyObject *b,int cmp)
-{
- if(pySymbol_Check(a) && pySymbol_Check(b)) {
- const t_symbol *asym = pySymbol_AS_SYMBOL(a);
- const t_symbol *bsym = pySymbol_AS_SYMBOL(b);
-
- int res = asym == bsym?0:strcmp(flext::GetString(asym),flext::GetString(bsym));
-
- bool ret;
- switch(cmp) {
- case Py_LT: ret = res < 0; break;
- case Py_LE: ret = res <= 0; break;
- case Py_EQ: ret = res == 0; break;
- case Py_NE: ret = res != 0; break;
- case Py_GE: ret = res >= 0; break;
- case Py_GT: ret = res > 0; break;
- default:
- FLEXT_ASSERT(false);
- }
- return PyBool_FromLong(ret);
- }
- Py_INCREF(Py_NotImplemented);
- return Py_NotImplemented;
-}
-
-static long symbol_hash(PyObject *self)
-{
- FLEXT_ASSERT(pySymbol_Check(self));
- return (long)pySymbol_AS_SYMBOL(self);
-}
-
-
-static Py_ssize_t symbol_length(PyObject *s)
-{
- pySymbol *self = reinterpret_cast<pySymbol *>(s);
- return strlen(flext::GetString(self->sym));
-}
-
-static PyObject *symbol_item(PyObject *s,Py_ssize_t i)
-{
- pySymbol *self = reinterpret_cast<pySymbol *>(s);
- const char *str = flext::GetString(self->sym);
- int len = strlen(str);
- if(i < 0) i += len;
-
- if(i >= 0 && i < len)
- return PyString_FromStringAndSize(str+i,1);
- else {
- Py_INCREF(Py_None);
- return Py_None;
- }
-}
-
-static PyObject *symbol_slice(PyObject *s,Py_ssize_t ilow = 0,Py_ssize_t ihigh = 1<<(sizeof(int)*8-2))
-{
- pySymbol *self = reinterpret_cast<pySymbol *>(s);
- const char *str = flext::GetString(self->sym);
- int len = strlen(str);
- if(ilow < 0) {
- ilow += len;
- if(ilow < 0) ilow = 0;
- }
- if(ihigh < 0) ihigh += len;
- if(ihigh >= len) ihigh = len-1;
-
- return PyString_FromStringAndSize(str+ilow,ilow <= ihigh?ihigh-ilow+1:0);
-}
-
-static PyObject *symbol_concat(PyObject *s,PyObject *op)
-{
- pySymbol *self = reinterpret_cast<pySymbol *>(s);
- PyObject *nobj = symbol_slice(s); // take all
- if(nobj) {
- PyObject *ret = PySequence_Concat(nobj,op);
- Py_DECREF(nobj);
- return ret;
- }
- else
- return NULL;
-}
-
-static PyObject *symbol_repeat(PyObject *s,Py_ssize_t rep)
-{
- pySymbol *self = reinterpret_cast<pySymbol *>(s);
- PyObject *nobj = symbol_slice(s); // take all
- if(nobj) {
- PyObject *ret = PySequence_Repeat(nobj,rep);
- Py_DECREF(nobj);
- return ret;
- }
- else
- return NULL;
-}
-
-static PySequenceMethods symbol_as_seq = {
- symbol_length, /* inquiry sq_length; __len__ */
- symbol_concat, /* __add__ */
- symbol_repeat, /* __mul__ */
- symbol_item, /* intargfunc sq_item; __getitem__ */
- symbol_slice, /* intintargfunc sq_slice; __getslice__ */
- NULL, /* intobjargproc sq_ass_item; __setitem__ */
- NULL, /* intintobjargproc sq_ass_slice; __setslice__ */
-};
-
-static PyObject *symbol_iter(PyObject *s)
-{
- pySymbol *self = reinterpret_cast<pySymbol *>(s);
- PyObject *nobj = symbol_slice(s);
- if(nobj) {
- PyObject *it = PyObject_GetIter(nobj);
- Py_DECREF(nobj);
- return it;
- }
- else
- return NULL;
-}
-
-
-
-PyTypeObject pySymbol_Type = {
- PyObject_HEAD_INIT(NULL)
- 0, /*ob_size*/
- "Symbol", /*tp_name*/
- sizeof(pySymbol), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- 0, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- 0, /*tp_compare*/
- symbol_repr, /*tp_repr*/
- 0, /*tp_as_number*/
- &symbol_as_seq, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- symbol_hash, /*tp_hash */
- 0, /*tp_call*/
- symbol_str, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT /*| Py_TPFLAGS_BASETYPE*/, /*tp_flags*/
- "Symbol objects", /* tp_doc */
- 0, /* tp_traverse */
- 0, /* tp_clear */
- symbol_richcompare, /* tp_richcompare */
- 0, /* tp_weaklistoffset */
- symbol_iter, /* tp_iter */
- 0, /* tp_iternext */
- 0, /* tp_methods */
- 0, /* tp_members */
- 0, /* tp_getset */
- 0, /* tp_base */
- 0, /* tp_dict */
- 0, /* tp_descr_get */
- 0, /* tp_descr_set */
- 0, /* tp_dictoffset */
- symbol_init, /* tp_init */
- 0, /* tp_alloc */
- symbol_new, /* tp_new */
-};
-
-pySymbol *pySymbol__;
-pySymbol *pySymbol_bang;
-pySymbol *pySymbol_list;
-pySymbol *pySymbol_symbol;
-pySymbol *pySymbol_float;
-pySymbol *pySymbol_int;
-
-
-void initsymbol()
-{
- if(PyType_Ready(&pySymbol_Type) < 0)
- return;
-
- Py_INCREF(&pySymbol_Type);
-
- // initialize predefined objects
- pySymbol__ = symbol_newsym(flext::sym__);
- pySymbol_bang = symbol_newsym(flext::sym_bang);
- pySymbol_list = symbol_newsym(flext::sym_list);
- pySymbol_symbol = symbol_newsym(flext::sym_symbol);
- pySymbol_float = symbol_newsym(flext::sym_float);
- pySymbol_int = symbol_newsym(flext::sym_int);
-}
-
-
-PyObject *pySymbol_FromSymbol(const t_symbol *sym)
-{
- pySymbol *op;
- if(sym == flext::sym__)
- Py_INCREF(op = pySymbol__);
- else if(sym == flext::sym_bang)
- Py_INCREF(op = pySymbol_bang);
- else if(sym == flext::sym_list)
- Py_INCREF(op = pySymbol_list);
- else if(sym == flext::sym_symbol)
- Py_INCREF(op = pySymbol_symbol);
- else if(sym == flext::sym_float)
- Py_INCREF(op = pySymbol_float);
- else if(sym == flext::sym_int)
- Py_INCREF(op = pySymbol_int);
- else
- op = symbol_newsym(sym);
- return (PyObject *)op;
-}
diff --git a/externals/grill/py/source/pysymbol.h b/externals/grill/py/source/pysymbol.h
deleted file mode 100644
index 6ab0aac9..00000000
--- a/externals/grill/py/source/pysymbol.h
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
-py/pyext - python script object for PD and Max/MSP
-
-Copyright (c)2002-2008 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-$LastChangedRevision: 26 $
-$LastChangedDate: 2008-01-03 17:20:03 +0100 (Thu, 03 Jan 2008) $
-$LastChangedBy: thomas $
-*/
-
-#ifndef __PYSYMBOL_H
-#define __PYSYMBOL_H
-
-#include <flext.h>
-
-#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 500)
-#error You need at least flext version 0.5.0
-#endif
-
-#if FLEXT_OS == FLEXT_OS_MAC
-#include <Python/Python.h>
-#else
-#include <Python.h>
-#endif
-
-
-#ifdef _MSC_VER
- #ifdef PY_EXPORTS
- #define PY_EXPORT __declspec(dllexport)
- #else
- #define PY_EXPORT __declspec(dllimport)
- #endif
-#else
- #define PY_EXPORT
-#endif
-
-typedef struct {
- PyObject_HEAD
- /* Type-specific fields go here. */
- const t_symbol *sym;
-} pySymbol;
-
-PY_EXPORT extern PyTypeObject pySymbol_Type;
-
-PY_EXPORT extern pySymbol *pySymbol__;
-PY_EXPORT extern pySymbol *pySymbol_bang;
-PY_EXPORT extern pySymbol *pySymbol_list;
-PY_EXPORT extern pySymbol *pySymbol_symbol;
-PY_EXPORT extern pySymbol *pySymbol_float;
-PY_EXPORT extern pySymbol *pySymbol_int;
-
-
-#define pySymbol_Check(op) PyObject_TypeCheck(op, &pySymbol_Type)
-#define pySymbol_CheckExact(op) ((op)->ob_type == &pySymbol_Type)
-
-
-PY_EXPORT PyObject *pySymbol_FromSymbol(const t_symbol *sym);
-
-inline PyObject *pySymbol_FromString(const char *str)
-{
- return pySymbol_FromSymbol(flext::MakeSymbol(str));
-}
-
-inline PyObject *pySymbol_FromString(PyObject *str)
-{
- return pySymbol_FromString(PyString_AsString(str));
-}
-
-inline const t_symbol *pySymbol_AS_SYMBOL(PyObject *op)
-{
- return ((pySymbol *)op)->sym;
-}
-
-inline const t_symbol *pySymbol_AsSymbol(PyObject *op)
-{
- return pySymbol_Check(op)?pySymbol_AS_SYMBOL(op):NULL;
-}
-
-inline const char *pySymbol_AS_STRING(PyObject *op)
-{
- return flext::GetString(pySymbol_AS_SYMBOL(op));
-}
-
-inline const t_symbol *pyObject_AsSymbol(PyObject *op)
-{
- if(PyString_Check(op))
- return flext::MakeSymbol(PyString_AS_STRING(op));
- else
- return pySymbol_AsSymbol(op);
-}
-
-#endif
diff --git a/externals/grill/py/source/register.cpp b/externals/grill/py/source/register.cpp
deleted file mode 100644
index 0f8684b6..00000000
--- a/externals/grill/py/source/register.cpp
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
-py/pyext - python external object for PD and MaxMSP
-
-Copyright (c)2002-2008 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-$LastChangedRevision: 26 $
-$LastChangedDate: 2008-01-03 17:20:03 +0100 (Thu, 03 Jan 2008) $
-$LastChangedBy: thomas $
-*/
-
-#include "pybase.h"
-
-#if 1
-
-PyObject *pybase::GetRegistry(const char *regnm)
-{
- if(module) {
- FLEXT_ASSERT(dict); // module must have a valid dict
-
- // add this to module registry
- PyObject *reg = PyDict_GetItemString(dict,(char *)regnm); // borrowed!!!
- if(reg)
- FLEXT_ASSERT(PyDict_Check(reg));
- else {
- // make a new empty registry
- reg = PyDict_New();
- PyDict_SetItemString(dict,(char *)regnm,reg);
- }
- return reg;
- }
- else
- return NULL;
-}
-
-void pybase::SetRegistry(const char *regnm,PyObject *reg)
-{
- if(module) {
- FLEXT_ASSERT(dict); // module must have a valid dict
- FLEXT_ASSERT(reg && PyDict_Check(reg));
- PyDict_SetItemString(dict,(char *)regnm,reg);
- }
-}
-
-void pybase::Register(PyObject *reg)
-{
- if(!module) return;
- FLEXT_ASSERT(reg && PyDict_Check(reg));
-
- // add this to module registry
- Py_INCREF(Py_None);
- PyObject *key = PyLong_FromUnsignedLong((size_t)this);
- PyDict_SetItem(reg,key,Py_None);
-}
-
-void pybase::Unregister(PyObject *reg)
-{
- if(!module) return;
- FLEXT_ASSERT(reg && PyDict_Check(reg));
-
- // remove this from module registry
- PyObject *key = PyLong_FromUnsignedLong((size_t)this);
- PyObject *item = PyDict_GetItem(reg,key);
- if(!item)
- post("py/pyext - Internal error: object not found in registry");
- else
- PyDict_DelItem(reg,key);
-}
-
-/*
-void pybase::RegLoad(PyObject *reg)
-{
-
-}
-
-void pybase::RegUnload(PyObject *reg)
-{
-}
-*/
-
-#else
-
-void pybase::Register(const char *regnm)
-{
- if(module) {
- // add this to module registry
-
- PyObject *reg = PyDict_GetItemString(dict,(char *)regnm); // borrowed!!!
- PyObject *add = Py_BuildValue("[i]",(long)this);
- if(!reg || !PyList_Check(reg)) {
- if(PyDict_SetItemString(dict,(char *)regnm,add)) {
- post("py/pyext - Could not set registry");
- }
- }
- else {
- PySequence_InPlaceConcat(reg,add);
- }
- }
-}
-
-void pybase::Unregister(const char *regnm)
-{
- if(module) {
- // remove this from module registry
-
- PyObject *reg = PyDict_GetItemString(dict,(char *)regnm); // borrowed!!!
- PyObject *add = Py_BuildValue("i",(int)this);
- if(!reg || !PySequence_Check(reg))
- post("py/pyext - Internal error: Registry not found!?");
- else {
- int ix = PySequence_Index(reg,add);
- if(ix < 0) {
- post("py/pyext - Internal error: object not found in registry?!");
- }
- else {
- PySequence_DelItem(reg,ix);
- }
- }
- Py_DECREF(add);
- }
-}
-
-void pybase::Reregister(const char *regnm)
-{
- if(module) {
- // remove this from module registry
-
- PyObject *reg = PyDict_GetItemString(dict,(char *)regnm); // borrowed!!!
-
- if(!reg || !PySequence_Check(reg))
- post("py/pyext - Internal error: Registry not found!?");
- else {
- int cnt = PySequence_Size(reg);
- for(int i = 0; i < cnt; ++i) {
- PyObject *it = PySequence_GetItem(reg,i); // new reference
- if(!it || !PyInt_Check(it)) {
- post("py/pyext - Internal error: Corrupt registry?!");
- }
- else {
- pybase *th = (pybase *)PyInt_AsLong(it);
- th->module = module;
- th->dict = dict;
- th->Reload();
- }
-
- Py_XDECREF(it);
- }
- }
- }
-}
-
-#endif
diff --git a/externals/grill/vasp/changes.txt b/externals/grill/vasp/changes.txt
deleted file mode 100644
index 5248913c..00000000
--- a/externals/grill/vasp/changes.txt
+++ /dev/null
@@ -1,148 +0,0 @@
-Version history:
-
-0.1.4:
-- FIX: resurrect help message-functionality and add some missing help texts
-- FIX: break condition for some loop constructs (thanks to Patrick King)
-- FIX: help file names / object names have been broken by flext changes
-
-0.1.3:
-- CHANGE: exchanged #defines for templates in vector calculation loops
-- FIX: bug for binary operations of complex vasps
-- ADD: implemented (factor-4) loop unrolling for vector calculation loops
-- CHANGE: completely restructured vector optimization and introduced multi-dimensional multi-layered functionality
-- ADD: vasp.size variants: attribute "zero" (default: true) - whether new samples shall be zeroed
-- ADD: vasp.sum? to get sum of sample values
-- ADD: all objects: attribute "defer" to queue outgoing vasps - to avoid stack faults for message loops
-- CHANGE: enable attributes "detach" and "prior" also for non-threaded builds to ensure patch compatibility
-- FIX: vasp.size - flext bug for @keep=1
-- FIX: vasp.imm - bug with memory reservation length
-- ADD: vasp.imm - attribute "zero" (default: true) - whether array should be cleared
-- FIX: Max/MSP - freeing immediate buffers with overdrive is bogus -> using queued flext timer
-- FIX: Bug in clearing vasp references
-- CHANGE: changed behavior of vasp.spit on uneven vector counts
- [vasp a b c( -> [vasp.spit 2] now outputs a(outlet 2), b(outlet 1), c(outlet 2), bang(outlet 3)
-- REMOVE: eliminated [vasp.cconj] as an object as it can easily be replaced by an abstraction
-- ADD: vasp.search (vasp.o=, vasp.f=) objects... @incl attribute (default false) to include current sample into search
-- ADD: [vasp.channels?] reports number of channels in the first vasp vector (buffer/array)
-- CHANGE: vasp.min?, vasp.max?, vasp.amin?, vasp.amax?, vasp.rmin?, vasp.rmax? no longer return the reference vasp / return a list of vector maxima/minima
-- CHANGE: inherited several classes from the flext class, so that new and delete use the RT-system functions
-- FIX: fixed memory leaks associated to VBuffer retrieval
-- FIX: fixed bug on vasp.search for vectors with 0 channels
-
-0.1.2:
-- FIX: bug in vasp.frames* ... wrong argument
-- FIX: another bug in resize of immediate buffers
-- CHANGE: immediates will be initialized to zero, also upon resize to a larger size (by default, later make this optional)
-- ADD: attributes for all basic parameters: ref,to,arg, update,detach,prior (loglvl,argchk,unit later)
-- ADD: vasp.channel,vasp.vector - attribute "index"
-- ADD: vasp.frames,vasp.frames+,vasp.offset,vasp.offset+,vasp.size,vasp.size+,vasp.imm - attribute "frames"
-- ADD: vasp.frames*,vasp.frames/,vasp.size*,vasp.size/ - attribute "factor"
-- ADD: vasp.part - attribute "parts"
-- ADD: vasp.peaks? - attribute "peaks"
-- ADD: vasp.shift,vasp.xshift - attribute "fill"
-- ADD: vasp.tilt,vasp.xtilt - attributes "fill","inter"
-- ADD: vasp.offset=,vasp.frames= - attributes "dir","slope"
-- CHANGE: update m_method_ virtual functions of same objects
-- FIX: immediate vasp garbage collection is now done in separate thread
-- ADD: vasp.size... objects: attribute "keep" determines whether buffer content should be preserved (default = 1)
-- CHANGE: buffer reference checks upon all operations enforced (by new CVasp (checked vasp) class)
-- FIX: immediate vasps can not have frames > size
-- FIX: immediate garbage collection was not triggered in threaded build
-- FIX: changed forgotten standard ASSERT to FLEXT_ASSERT (thanks to Frank Barknecht)
-
-0.1.1:
-- FIX: bug in resize of immediate buffers
-- CHANGE: check (at actual operation!) whether vector exceeds buffer size (GetRVecs, GetCVecs -> corrlen)
-
-0.1.0:
-- NEW: vasp.a<, vasp.a>, vasp.a<=, vasp.a>= for absolute comparisons
-- CHANGE: clear stored vasp of an object if a "set" message with an invalid vasp is received
-- CHANGE: cleaned up the process loops (with thread yield) and fixed a corresponding bug in vasp.peaks/valleys
-- CHANGE: warn - but don't stop - on large FFT prime factors
-- FIX: vasp.radd and vasp.rpow had wrong argument initialization
-- FIX: mixfft is not thread-safe... introduced thread mutex for it
-- FIX: vasp.shift: shift argument was modulo frame count... why?
-
-0.0.8:
-- CHANGE: vasp.radio got right outlet for non-radio messages
-- ADD: thread yield for all simple vasp objects
-- CHANGE: vasp.? and vasp.??: made explicit list outlets
-- NEW: vasp.window, vasp.*window, vasp.!window, vasp.*!window, vasp.xwindow, vasp.*xwindow
-- REMOVE: vasp.bevel, vasp.!bevel... obsolete due to new vasp.window objects
-- REMOVE: vasp.noradio (vasp.!radio)... can easily be an abstraction of vasp.radio
-- ADD: minimum length parameter for immediate vasps
-- NEW: vasp.channel? (vasp.c?), vasp.channel (vasp.c) for set/query of buffer channel
-- CHANGE: env - reversed time/value pairs to value/time pairs
-- FIX: vasp.! with length arg outputs its reference on bang
-- FIX: on set message check for invalid vasps
-- FIX: reintroduce test for invalid buffer names (why was it commented out?)
-- FIX: fixe several bugs in vasp.offset= and vasp.frames=
-- CHANGE: allow size 0 (is default) for immediate vasps
-
-0.0.7:
-- CHANGE: vasp.m is now called vasp.multi by default
-- CHANGE: vasp.sync and vasp.multi now have a default argument = 2
-- FIX: vasp.phasor - period length now 1 instead of 2 PI
-- FIX: bug in multi mode (more src, one arg vector)
-- ADD: path specification for help symbols
-- CHANGE: rewrote vasp.imm implementation (still very inefficient!!)
-- ADD: prior message defines differential priority for detached operations
-- ADD: full DFT implementation (radix-2/radix-n) - also support of "to" message
-- ADD: full implementation of vasp.(x)tilt with several interpolation methods
-- CHANGE: vasp.split and vasp.join now have default argument = 2
-- ADD: vasp.offset= (vasp.o=) and vasp.frames= (vasp.f=): search for sample values (eg. zero crossings)
-- ADD: checks and log messages for out-of-range buffer offset and length
-
-0.0.6:
-- reorganized file structure
-- ADD: main names of vasp.n and vasp.n? are now vasp.vector and vasp.vectors?, respectively
-- ADD: main names of vasp.? and vasp.?? are now vasp.list and vasp.nonzero, respectively
-- NEW: vasp.size, vasp.size+, vasp.size? (vasp.s,vasp.s+,vasp.s?) for buffer size manipulation
-- NEW: vasp.peaks? for extremum extraction
-- ADD: shortcuts for vasp.frames,vasp.frames+,vasp.frames? -> vasp.f,vasp.f+,vasp.f?
-- CHANGE: changed vasp.offs,vasp.offs+,vasp.offs? to vasp.offset,vasp.offset+,vasp.offset?
-- ADD: shortcuts for vasp.offset,vasp.offset+,vasp.offset? -> vasp.o,vasp.o+,vasp.o?
-- ADD: envelopes (env ...) as arguments to all operations where vasps are used
-- FIX: default arguments for all binary/anytype operations
-- ADD: vasp.frames* (vasp.f*), vasp.frames/ (vasp.f/), vasp.size* (vasp.s*), vasp.size/ (vasp.s/)
-- ADD: detached operation: operations run as threads, according to detach flag/message
-- CHANGE: vasp.sync has as many outputs as inputs and outputs all input vasps
-- ADD: vasp.! : like vasp but stores the content temporarily (not just the reference)
-- ADD: vasp.copy (vasp.->) and vasp.ccopy (vasp.c->) for instant vasp copying
-- ADD: vasp.radio and vasp.noradio (vasp.!radio) ... filters for radio messages
-- ADD: vasp.fix - bashes NANs to zero, normalizes denormal numbers
-- ADD: double type consisting of 2 additive floats (e.g. "double 1. 1.e-13") for all numeric arguments
-- ADD: vasp.(x)shift - "fill" method/flag defines how to fill shifted areas (0..zero (default),1..none,2..edge value)
-
-0.0.5:
-- FIX: lacking sqrt in [vasp.rmin?],[vasp.rmax?]
-- FIX: (offs >= frames) bug in [vasp.offs?]
-- ADD: lacking setup of [vasp.!-] and [vasp.c!-] objects
-- FIX: buggy [vasp.int] code
-- FIX: recognition of integer arguments
-
-0.0.4:
-- CHANGE: vasp.min/max functions so that a vasp length 0 results in 0
-- REMOVED: [vasp.inv], [vasp.cinv].... already replaced by [vasp.!/ 1]
-- FIX: outlet bug in [vasp.?]
-- ADD: right inlet to [vasp]... just like in [float] etc.
-
-0.0.3:
-- restructured the code for future use of break-point lists (aka envelopes) as arguments
-- changed some object's names
-- new objects: vasp.min?, vasp.max? and the likes
-- fixed Max problem with connecting vasp.min,vasp.max right outlet to number boxes
-- fixed right inlet problem for generator and filter objects
-
-0.0.2:
-- vasp.cmin,vasp.cmax - renamed to vasp.rmin,vasp.rmax
-- reversed vasp channel and offset
-- fixed bug with arguments to complex binary operations
-- vasp.chk: included channel check
-- fixed pointer bug in vasp.?
-- fixed pointer increment bug in vasp.fhp
-- changed VecBlock implementation
-
-0.0.1:
-- defined the vasp
-- quick and dirty setup of most functions (non-interruptible)
diff --git a/externals/grill/vasp/gpl.txt b/externals/grill/vasp/gpl.txt
deleted file mode 100644
index 5ea29a7d..00000000
--- a/externals/grill/vasp/gpl.txt
+++ /dev/null
@@ -1,346 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) 19yy <name of author>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) 19yy name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Library General
-Public License instead of this License.
-
diff --git a/externals/grill/vasp/license.txt b/externals/grill/vasp/license.txt
deleted file mode 100644
index 9f60de24..00000000
--- a/externals/grill/vasp/license.txt
+++ /dev/null
@@ -1,64 +0,0 @@
-VASP modular - vector assembling signal processor
-Object library for Max/MSP and PD
-Copyright (C) 2002-2005 Thomas Grill
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-There is one exception though, concerning the usage of the
-mixfft code by Jens Joergen Nielsen. See the file mixfft.txt
-for the respective licensing details.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-In the official VASP distribution, the GNU General Public License is
-in the file gpl.txt
-
-
-Excluded from this license is the source code file of MixFFT.
-See the mixfft.txt file of the VASP package for the respective license text.
-
----------------------------------------------------------
-
- OTHER COPYRIGHT NOTICES
-
----------------------------------------------------------
-
-The package is based on ideas originally conceived and
-programmed in FORTRAN by Guenther Rabl.
-
-VASP modular uses some code - see the license texts below.
-
---- flext ----------------------------------------------
-flext - C++ layer for Max/MSP and pd (pure data) externals
-Copyright (C) 2001-2005 Thomas Grill
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-In the official flext distribution, the GNU General Public License is
-in the file gpl.txt
-
---- mixfft ----------------------------------------------
-See the file mixfft.txt included with the VASP distribution.
-
diff --git a/externals/grill/vasp/max-ex/convolve b/externals/grill/vasp/max-ex/convolve
deleted file mode 100755
index 2df42983..00000000
--- a/externals/grill/vasp/max-ex/convolve
+++ /dev/null
Binary files differ
diff --git a/externals/grill/vasp/max-ex/freeze b/externals/grill/vasp/max-ex/freeze
deleted file mode 100755
index be52f100..00000000
--- a/externals/grill/vasp/max-ex/freeze
+++ /dev/null
Binary files differ
diff --git a/externals/grill/vasp/max-help/vasp.abs.help b/externals/grill/vasp/max-help/vasp.abs.help
deleted file mode 100755
index 1292ea00..00000000
--- a/externals/grill/vasp/max-help/vasp.abs.help
+++ /dev/null
@@ -1,56 +0,0 @@
-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
deleted file mode 100755
index 0da7d475..00000000
--- a/externals/grill/vasp/max-help/vasp.add.help
+++ /dev/null
@@ -1,68 +0,0 @@
-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
deleted file mode 100755
index 81e404e5..00000000
--- a/externals/grill/vasp/max-help/vasp.amaxq.help
+++ /dev/null
@@ -1,104 +0,0 @@
-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
deleted file mode 100755
index 07289028..00000000
--- a/externals/grill/vasp/max-help/vasp.aminq.help
+++ /dev/null
@@ -1,92 +0,0 @@
-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
deleted file mode 100755
index 87a58e65..00000000
--- a/externals/grill/vasp/max-help/vasp.beveldn.help
+++ /dev/null
@@ -1,92 +0,0 @@
-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
deleted file mode 100755
index 61e5ab2e..00000000
--- a/externals/grill/vasp/max-help/vasp.bevelup.help
+++ /dev/null
@@ -1,92 +0,0 @@
-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
deleted file mode 100755
index 820a1d4f..00000000
--- a/externals/grill/vasp/max-help/vasp.cdiv.help
+++ /dev/null
@@ -1,12 +0,0 @@
-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
deleted file mode 100755
index d72d0030..00000000
--- a/externals/grill/vasp/max-help/vasp.cfft.help
+++ /dev/null
@@ -1,414 +0,0 @@
-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
deleted file mode 100755
index 37412227..00000000
--- a/externals/grill/vasp/max-help/vasp.chk.help
+++ /dev/null
@@ -1,20 +0,0 @@
-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
deleted file mode 100755
index 0912ba43..00000000
--- a/externals/grill/vasp/max-help/vasp.cifft.help
+++ /dev/null
@@ -1,407 +0,0 @@
-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
deleted file mode 100755
index 25d92f2e..00000000
--- a/externals/grill/vasp/max-help/vasp.cmul.help
+++ /dev/null
@@ -1,12 +0,0 @@
-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
deleted file mode 100755
index 8cdf423a..00000000
--- a/externals/grill/vasp/max-help/vasp.cnoise.help
+++ /dev/null
@@ -1,116 +0,0 @@
-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
deleted file mode 100755
index 23d44f30..00000000
--- a/externals/grill/vasp/max-help/vasp.cnorm.help
+++ /dev/null
@@ -1,177 +0,0 @@
-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
deleted file mode 100755
index 6432d8f1..00000000
--- a/externals/grill/vasp/max-help/vasp.cosc.help
+++ /dev/null
@@ -1,139 +0,0 @@
-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
deleted file mode 100755
index 7f4e999d..00000000
--- a/externals/grill/vasp/max-help/vasp.cplus.help
+++ /dev/null
@@ -1,12 +0,0 @@
-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
deleted file mode 100755
index d008f65c..00000000
--- a/externals/grill/vasp/max-help/vasp.cpowi.help
+++ /dev/null
@@ -1,166 +0,0 @@
-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
deleted file mode 100755
index a0fbf9ba..00000000
--- a/externals/grill/vasp/max-help/vasp.crsub.help
+++ /dev/null
@@ -1,12 +0,0 @@
-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
deleted file mode 100755
index d898e914..00000000
--- a/externals/grill/vasp/max-help/vasp.cset.help
+++ /dev/null
@@ -1,11 +0,0 @@
-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
deleted file mode 100755
index 6724d738..00000000
--- a/externals/grill/vasp/max-help/vasp.csqr.help
+++ /dev/null
@@ -1,164 +0,0 @@
-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
deleted file mode 100755
index 2ee0998f..00000000
--- a/externals/grill/vasp/max-help/vasp.csub.help
+++ /dev/null
@@ -1,12 +0,0 @@
-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
deleted file mode 100755
index c6b68ea1..00000000
--- a/externals/grill/vasp/max-help/vasp.dif.help
+++ /dev/null
@@ -1,7 +0,0 @@
-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
deleted file mode 100755
index 60ec8c13..00000000
--- a/externals/grill/vasp/max-help/vasp.div.help
+++ /dev/null
@@ -1,52 +0,0 @@
-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
deleted file mode 100755
index 0c2a0178..00000000
--- a/externals/grill/vasp/max-help/vasp.equ.help
+++ /dev/null
@@ -1,145 +0,0 @@
-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
deleted file mode 100755
index fa00c09d..00000000
--- a/externals/grill/vasp/max-help/vasp.exp.help
+++ /dev/null
@@ -1,96 +0,0 @@
-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
deleted file mode 100755
index 2f76a6cc..00000000
--- a/externals/grill/vasp/max-help/vasp.fhp.help
+++ /dev/null
@@ -1,138 +0,0 @@
-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
deleted file mode 100755
index 89a88590..00000000
--- a/externals/grill/vasp/max-help/vasp.flp.help
+++ /dev/null
@@ -1,138 +0,0 @@
-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
deleted file mode 100755
index c0820a2a..00000000
--- a/externals/grill/vasp/max-help/vasp.frames.help
+++ /dev/null
@@ -1,134 +0,0 @@
-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
deleted file mode 100755
index ac6bf358..00000000
--- a/externals/grill/vasp/max-help/vasp.framesd.help
+++ /dev/null
@@ -1,134 +0,0 @@
-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
deleted file mode 100755
index a546e86d..00000000
--- a/externals/grill/vasp/max-help/vasp.framesq.help
+++ /dev/null
@@ -1,25 +0,0 @@
-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
deleted file mode 100755
index 0ab025a2..00000000
--- a/externals/grill/vasp/max-help/vasp.gate.help
+++ /dev/null
@@ -1,166 +0,0 @@
-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
deleted file mode 100755
index e1942f69..00000000
--- a/externals/grill/vasp/max-help/vasp.gather.help
+++ /dev/null
@@ -1,65 +0,0 @@
-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
deleted file mode 100755
index 0a8912b6..00000000
--- a/externals/grill/vasp/max-help/vasp.geq.help
+++ /dev/null
@@ -1,128 +0,0 @@
-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
deleted file mode 100755
index d3614b83..00000000
--- a/externals/grill/vasp/max-help/vasp.gtr.help
+++ /dev/null
@@ -1,128 +0,0 @@
-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
deleted file mode 100755
index a03f562b..00000000
--- a/externals/grill/vasp/max-help/vasp.help
+++ /dev/null
@@ -1,710 +0,0 @@
-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
deleted file mode 100755
index 255494e2..00000000
--- a/externals/grill/vasp/max-help/vasp.int.help
+++ /dev/null
@@ -1,93 +0,0 @@
-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
deleted file mode 100755
index ba53ca5c..00000000
--- a/externals/grill/vasp/max-help/vasp.join.help
+++ /dev/null
@@ -1,31 +0,0 @@
-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
deleted file mode 100755
index ab0aee34..00000000
--- a/externals/grill/vasp/max-help/vasp.leq.help
+++ /dev/null
@@ -1,128 +0,0 @@
-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
deleted file mode 100755
index 77081652..00000000
--- a/externals/grill/vasp/max-help/vasp.list.help
+++ /dev/null
@@ -1,85 +0,0 @@
-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
deleted file mode 100755
index a9d784e7..00000000
--- a/externals/grill/vasp/max-help/vasp.log.help
+++ /dev/null
@@ -1,8 +0,0 @@
-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
deleted file mode 100755
index a0d95c38..00000000
--- a/externals/grill/vasp/max-help/vasp.lwr.help
+++ /dev/null
@@ -1,128 +0,0 @@
-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
deleted file mode 100755
index 4bb318de..00000000
--- a/externals/grill/vasp/max-help/vasp.max.help
+++ /dev/null
@@ -1,125 +0,0 @@
-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
deleted file mode 100755
index bd33265f..00000000
--- a/externals/grill/vasp/max-help/vasp.maxq.help
+++ /dev/null
@@ -1,86 +0,0 @@
-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
deleted file mode 100755
index c44f378a..00000000
--- a/externals/grill/vasp/max-help/vasp.mbeveldn.help
+++ /dev/null
@@ -1,100 +0,0 @@
-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
deleted file mode 100755
index 5d36531e..00000000
--- a/externals/grill/vasp/max-help/vasp.mbevelup.help
+++ /dev/null
@@ -1,100 +0,0 @@
-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
deleted file mode 100755
index b5b65b66..00000000
--- a/externals/grill/vasp/max-help/vasp.mcosc.help
+++ /dev/null
@@ -1,144 +0,0 @@
-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
deleted file mode 100755
index bfeef086..00000000
--- a/externals/grill/vasp/max-help/vasp.min.help
+++ /dev/null
@@ -1,125 +0,0 @@
-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
deleted file mode 100755
index f111101f..00000000
--- a/externals/grill/vasp/max-help/vasp.minmax.help
+++ /dev/null
@@ -1,149 +0,0 @@
-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
deleted file mode 100755
index 3b3eb2e6..00000000
--- a/externals/grill/vasp/max-help/vasp.minq.help
+++ /dev/null
@@ -1,86 +0,0 @@
-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
deleted file mode 100755
index 2e09c2c4..00000000
--- a/externals/grill/vasp/max-help/vasp.mirr.help
+++ /dev/null
@@ -1,88 +0,0 @@
-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
deleted file mode 100755
index 45fdd08e..00000000
--- a/externals/grill/vasp/max-help/vasp.mod.help
+++ /dev/null
@@ -1,62 +0,0 @@
-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
deleted file mode 100755
index 0a21a23f..00000000
--- a/externals/grill/vasp/max-help/vasp.mphasor.help
+++ /dev/null
@@ -1,127 +0,0 @@
-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
deleted file mode 100755
index c3eabaa8..00000000
--- a/externals/grill/vasp/max-help/vasp.mul.help
+++ /dev/null
@@ -1,227 +0,0 @@
-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
deleted file mode 100755
index 64ee9b09..00000000
--- a/externals/grill/vasp/max-help/vasp.multi.help
+++ /dev/null
@@ -1,23 +0,0 @@
-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
deleted file mode 100755
index 6a533cdd..00000000
--- a/externals/grill/vasp/max-help/vasp.neq.help
+++ /dev/null
@@ -1,145 +0,0 @@
-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
deleted file mode 100755
index 8200fdbc..00000000
--- a/externals/grill/vasp/max-help/vasp.noise.help
+++ /dev/null
@@ -1,100 +0,0 @@
-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
deleted file mode 100755
index 652ce582..00000000
--- a/externals/grill/vasp/max-help/vasp.nonzero.help
+++ /dev/null
@@ -1,162 +0,0 @@
-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
deleted file mode 100755
index 2153dbce..00000000
--- a/externals/grill/vasp/max-help/vasp.offset.help
+++ /dev/null
@@ -1,32 +0,0 @@
-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
deleted file mode 100755
index 59b71516..00000000
--- a/externals/grill/vasp/max-help/vasp.offsetd.help
+++ /dev/null
@@ -1,31 +0,0 @@
-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
deleted file mode 100755
index 8a01e618..00000000
--- a/externals/grill/vasp/max-help/vasp.offsetq.help
+++ /dev/null
@@ -1,17 +0,0 @@
-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
deleted file mode 100755
index 45a976bf..00000000
--- a/externals/grill/vasp/max-help/vasp.opt.help
+++ /dev/null
@@ -1,104 +0,0 @@
-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
deleted file mode 100755
index 33e26427..00000000
--- a/externals/grill/vasp/max-help/vasp.osc.help
+++ /dev/null
@@ -1,123 +0,0 @@
-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
deleted file mode 100755
index 686ebd02..00000000
--- a/externals/grill/vasp/max-help/vasp.part.help
+++ /dev/null
@@ -1,30 +0,0 @@
-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
deleted file mode 100755
index 6e2068d3..00000000
--- a/externals/grill/vasp/max-help/vasp.peaks.help
+++ /dev/null
@@ -1,176 +0,0 @@
-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
deleted file mode 100755
index 3f246eee..00000000
--- a/externals/grill/vasp/max-help/vasp.phasor.help
+++ /dev/null
@@ -1,123 +0,0 @@
-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
deleted file mode 100755
index c2dbdf2c..00000000
--- a/externals/grill/vasp/max-help/vasp.polar.help
+++ /dev/null
@@ -1,291 +0,0 @@
-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
deleted file mode 100755
index 496b0468..00000000
--- a/externals/grill/vasp/max-help/vasp.pow.help
+++ /dev/null
@@ -1,98 +0,0 @@
-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
deleted file mode 100755
index ddc11a81..00000000
--- a/externals/grill/vasp/max-help/vasp.pwrap.help
+++ /dev/null
@@ -1,6 +0,0 @@
-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
deleted file mode 100755
index af2abb0f..00000000
--- a/externals/grill/vasp/max-help/vasp.radd.help
+++ /dev/null
@@ -1,168 +0,0 @@
-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
deleted file mode 100755
index f03d5187..00000000
--- a/externals/grill/vasp/max-help/vasp.rect.help
+++ /dev/null
@@ -1,301 +0,0 @@
-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
deleted file mode 100755
index 4508d4da..00000000
--- a/externals/grill/vasp/max-help/vasp.rfft.help
+++ /dev/null
@@ -1,137 +0,0 @@
-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
deleted file mode 100755
index ce5a6a4e..00000000
--- a/externals/grill/vasp/max-help/vasp.rgate.help
+++ /dev/null
@@ -1,170 +0,0 @@
-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
deleted file mode 100755
index 019a9aad..00000000
--- a/externals/grill/vasp/max-help/vasp.rifft.help
+++ /dev/null
@@ -1,137 +0,0 @@
-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
deleted file mode 100755
index 029cff9b..00000000
--- a/externals/grill/vasp/max-help/vasp.rmax.help
+++ /dev/null
@@ -1,165 +0,0 @@
-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
deleted file mode 100755
index 0e49d689..00000000
--- a/externals/grill/vasp/max-help/vasp.rmaxq.help
+++ /dev/null
@@ -1,179 +0,0 @@
-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
deleted file mode 100755
index 9544d81c..00000000
--- a/externals/grill/vasp/max-help/vasp.rmin.help
+++ /dev/null
@@ -1,167 +0,0 @@
-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
deleted file mode 100755
index d3c472e0..00000000
--- a/externals/grill/vasp/max-help/vasp.rminq.help
+++ /dev/null
@@ -1,149 +0,0 @@
-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
deleted file mode 100755
index 176df949..00000000
--- a/externals/grill/vasp/max-help/vasp.ropt.help
+++ /dev/null
@@ -1,168 +0,0 @@
-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
deleted file mode 100755
index e78b227c..00000000
--- a/externals/grill/vasp/max-help/vasp.rot.help
+++ /dev/null
@@ -1,91 +0,0 @@
-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
deleted file mode 100755
index 4a4860d5..00000000
--- a/externals/grill/vasp/max-help/vasp.rpeaks.help
+++ /dev/null
@@ -1,174 +0,0 @@
-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
deleted file mode 100755
index 408a28ce..00000000
--- a/externals/grill/vasp/max-help/vasp.rpow.help
+++ /dev/null
@@ -1,171 +0,0 @@
-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
deleted file mode 100755
index cdc8edab..00000000
--- a/externals/grill/vasp/max-help/vasp.rsub.help
+++ /dev/null
@@ -1,52 +0,0 @@
-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
deleted file mode 100755
index 0c805c6f..00000000
--- a/externals/grill/vasp/max-help/vasp.rvalleys.help
+++ /dev/null
@@ -1,177 +0,0 @@
-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
deleted file mode 100755
index 7d3a4a3e..00000000
--- a/externals/grill/vasp/max-help/vasp.set.help
+++ /dev/null
@@ -1,326 +0,0 @@
-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
deleted file mode 100755
index 80acf8b4..00000000
--- a/externals/grill/vasp/max-help/vasp.shift.help
+++ /dev/null
@@ -1,92 +0,0 @@
-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
deleted file mode 100755
index 236417cf..00000000
--- a/externals/grill/vasp/max-help/vasp.sign.help
+++ /dev/null
@@ -1,94 +0,0 @@
-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
deleted file mode 100755
index 17903423..00000000
--- a/externals/grill/vasp/max-help/vasp.spit.help
+++ /dev/null
@@ -1,42 +0,0 @@
-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
deleted file mode 100755
index 088f8aba..00000000
--- a/externals/grill/vasp/max-help/vasp.split.help
+++ /dev/null
@@ -1,31 +0,0 @@
-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
deleted file mode 100755
index ecb11e25..00000000
--- a/externals/grill/vasp/max-help/vasp.sqr.help
+++ /dev/null
@@ -1,91 +0,0 @@
-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
deleted file mode 100755
index 7df082a9..00000000
--- a/externals/grill/vasp/max-help/vasp.sqrt.help
+++ /dev/null
@@ -1,91 +0,0 @@
-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
deleted file mode 100755
index 0dac0545..00000000
--- a/externals/grill/vasp/max-help/vasp.ssqr.help
+++ /dev/null
@@ -1,219 +0,0 @@
-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
deleted file mode 100755
index e2a84cab..00000000
--- a/externals/grill/vasp/max-help/vasp.ssqrt.help
+++ /dev/null
@@ -1,219 +0,0 @@
-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
deleted file mode 100755
index fbf4b8ae..00000000
--- a/externals/grill/vasp/max-help/vasp.sub.help
+++ /dev/null
@@ -1,67 +0,0 @@
-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
deleted file mode 100755
index 8ae0c72a..00000000
--- a/externals/grill/vasp/max-help/vasp.sync.help
+++ /dev/null
@@ -1,164 +0,0 @@
-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
deleted file mode 100755
index 277dded2..00000000
--- a/externals/grill/vasp/max-help/vasp.tilt.help
+++ /dev/null
@@ -1,89 +0,0 @@
-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
deleted file mode 100755
index 481c7347..00000000
--- a/externals/grill/vasp/max-help/vasp.update.help
+++ /dev/null
@@ -1,41 +0,0 @@
-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
deleted file mode 100755
index 9752bbc1..00000000
--- a/externals/grill/vasp/max-help/vasp.valleys.help
+++ /dev/null
@@ -1,174 +0,0 @@
-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
deleted file mode 100755
index 0af86d39..00000000
--- a/externals/grill/vasp/max-help/vasp.vector.help
+++ /dev/null
@@ -1,175 +0,0 @@
-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
deleted file mode 100755
index 9d8774b1..00000000
--- a/externals/grill/vasp/max-help/vasp.vectors.help
+++ /dev/null
@@ -1,12 +0,0 @@
-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
deleted file mode 100755
index 34d30a42..00000000
--- a/externals/grill/vasp/max-help/vasp.xmirr.help
+++ /dev/null
@@ -1,169 +0,0 @@
-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
deleted file mode 100755
index e3f887e9..00000000
--- a/externals/grill/vasp/max-help/vasp.xrot.help
+++ /dev/null
@@ -1,91 +0,0 @@
-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
deleted file mode 100755
index 68cbfa5d..00000000
--- a/externals/grill/vasp/max-help/vasp.xshift.help
+++ /dev/null
@@ -1,91 +0,0 @@
-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/max/rndup2 b/externals/grill/vasp/max/rndup2
deleted file mode 100755
index 694fbbf5..00000000
--- a/externals/grill/vasp/max/rndup2
+++ /dev/null
Binary files differ
diff --git a/externals/grill/vasp/max/vasp.cconj b/externals/grill/vasp/max/vasp.cconj
deleted file mode 100755
index be241dbb..00000000
--- a/externals/grill/vasp/max/vasp.cconj
+++ /dev/null
Binary files differ
diff --git a/externals/grill/vasp/max/vasp.cconv b/externals/grill/vasp/max/vasp.cconv
deleted file mode 100755
index 7fcfa76f..00000000
--- a/externals/grill/vasp/max/vasp.cconv
+++ /dev/null
Binary files differ
diff --git a/externals/grill/vasp/max/vasp.conv b/externals/grill/vasp/max/vasp.conv
deleted file mode 100755
index 5a2ed9be..00000000
--- a/externals/grill/vasp/max/vasp.conv
+++ /dev/null
Binary files differ
diff --git a/externals/grill/vasp/max/vasp.defer b/externals/grill/vasp/max/vasp.defer
deleted file mode 100755
index 30975436..00000000
--- a/externals/grill/vasp/max/vasp.defer
+++ /dev/null
Binary files differ
diff --git a/externals/grill/vasp/max/vasp.freeze b/externals/grill/vasp/max/vasp.freeze
deleted file mode 100755
index 761cc032..00000000
--- a/externals/grill/vasp/max/vasp.freeze
+++ /dev/null
Binary files differ
diff --git a/externals/grill/vasp/max/vasp.hilbert b/externals/grill/vasp/max/vasp.hilbert
deleted file mode 100755
index 5d5201ef..00000000
--- a/externals/grill/vasp/max/vasp.hilbert
+++ /dev/null
Binary files differ
diff --git a/externals/grill/vasp/max/vasp.im b/externals/grill/vasp/max/vasp.im
deleted file mode 100755
index a670a68e..00000000
--- a/externals/grill/vasp/max/vasp.im
+++ /dev/null
Binary files differ
diff --git a/externals/grill/vasp/max/vasp.lower b/externals/grill/vasp/max/vasp.lower
deleted file mode 100755
index 3e741c85..00000000
--- a/externals/grill/vasp/max/vasp.lower
+++ /dev/null
Binary files differ
diff --git a/externals/grill/vasp/max/vasp.meanq b/externals/grill/vasp/max/vasp.meanq
deleted file mode 100755
index 1c7fc6ff..00000000
--- a/externals/grill/vasp/max/vasp.meanq
+++ /dev/null
Binary files differ
diff --git a/externals/grill/vasp/max/vasp.nodc b/externals/grill/vasp/max/vasp.nodc
deleted file mode 100755
index 369c6ae9..00000000
--- a/externals/grill/vasp/max/vasp.nodc
+++ /dev/null
Binary files differ
diff --git a/externals/grill/vasp/max/vasp.opt b/externals/grill/vasp/max/vasp.opt
deleted file mode 100755
index 5f504b44..00000000
--- a/externals/grill/vasp/max/vasp.opt
+++ /dev/null
Binary files differ
diff --git a/externals/grill/vasp/max/vasp.parts b/externals/grill/vasp/max/vasp.parts
deleted file mode 100755
index c94d435c..00000000
--- a/externals/grill/vasp/max/vasp.parts
+++ /dev/null
Binary files differ
diff --git a/externals/grill/vasp/max/vasp.pwrap b/externals/grill/vasp/max/vasp.pwrap
deleted file mode 100755
index 2677f07f..00000000
--- a/externals/grill/vasp/max/vasp.pwrap
+++ /dev/null
Binary files differ
diff --git a/externals/grill/vasp/max/vasp.re b/externals/grill/vasp/max/vasp.re
deleted file mode 100755
index cd30f3ec..00000000
--- a/externals/grill/vasp/max/vasp.re
+++ /dev/null
Binary files differ
diff --git a/externals/grill/vasp/max/vasp.ropt b/externals/grill/vasp/max/vasp.ropt
deleted file mode 100755
index 09275d73..00000000
--- a/externals/grill/vasp/max/vasp.ropt
+++ /dev/null
Binary files differ
diff --git a/externals/grill/vasp/max/vasp.spin b/externals/grill/vasp/max/vasp.spin
deleted file mode 100755
index 8faf7de6..00000000
--- a/externals/grill/vasp/max/vasp.spin
+++ /dev/null
Binary files differ
diff --git a/externals/grill/vasp/max/vasp.upper b/externals/grill/vasp/max/vasp.upper
deleted file mode 100755
index 7adf2fb8..00000000
--- a/externals/grill/vasp/max/vasp.upper
+++ /dev/null
Binary files differ
diff --git a/externals/grill/vasp/mixfft.txt b/externals/grill/vasp/mixfft.txt
deleted file mode 100644
index 03262e52..00000000
--- a/externals/grill/vasp/mixfft.txt
+++ /dev/null
@@ -1,85 +0,0 @@
-
- Arbitrary Length FFT
- ------------------------------------------------------------------------
- NOTE : This is copyrighted material, NOT public domain. See below.
- ------------------------------------------------------------------------
- Contents:
- This packet contains the C source for a mixed-radix FFT routine.
- It performs a fast discrete Fourier transform (FFT) of a complex
- sequence, x, of an arbitrary length, n. The output, y, is also a
- complex sequence of length n.
-
- y[k] = sum(x[m]*exp(-i*2*pi*k*m/n), m=0..(n-1)), k=0,...,(n-1)
-
- The largest prime factor of n must be less than or equal to the
- constant, maxPrimeFactor defined in mixfft.c. The input/output
- variables are each stored in two arrays comprising the real part
- and the imaginary part respectively.
-
- The routine is accompanied by a demo program, fftbench.c, that
- demonstrates the numerical capabilities. It measures the execution
- time as well. If you wish to test the capabilities of another FFT
- routine, the fftbench.c is easy to modify.
- ------------------------------------------------------------------------
- Filelist:
- mixfft.c 21.120 001030 The C source for the mixed-radix FFT.
- fftbench.c 8.724 001030 The C source for FFT benchmark program.
- fftbench.exe 62.976 001030 The PC executable.
- readme.txt This file.
- ------------------------------------------------------------------------
- Platforms:
-
- PC:
- The included fftbench.exe was generated using the Microsoft Visual
- C++ compiler with the following compile options:
- /nologo /Gs /G2 /W4 /AH /Ox /D "NDEBUG" /D "_DOS" /FR
- It was tested on a 50MHz 486DX. Please refer to fftbench.c for some
- benchmarks. (jjn, March 1996)
-
- Other:
- Your experience with other platforms are warmly welcomed. Please
- e-mail me.
- ------------------------------------------------------------------------
- Conditions:
- The source code in this packet is copyrighted material.
-
- Non-commercial use of the source code is free.
-
- A $100 fee must be paid if used commercially. Please contact me at
- jjn@get2net.dk and register your copy. The $100 fee includes
- up to one hour of assistance related to your use of the code. A
- trial period of 14 days is allowed.
-
- If the code is used for professional (paid) research and development
- for non-profit organisations like universities a reduced fee of $20
- must be paid.
-
- The commercial license allows you to include the compiled code in a
- product or to use the code on a regular basis. You are however NOT
- allowed to sell the source code.
-
- Distribution of the complete unaltered package, including this
- file, is free. This includes commercial CD's.
- ------------------------------------------------------------------------
- Author:
- Jens Joergen Nielsen For non-commercial use only.
- Bakkehusene 54 A $100 fee must be paid if used
- 2970 Hoersholm commercially. Please contact.
- DENMARK
-
- mailto:jjn@get2net.dk All rights reserved. October 2000.
-
- Check my homepage for updates and FAQ's http://home.get2net.dk/jjn
- ------------------------------------------------------------------------
- Release notes:
- V.0.1 950301 Initial MIXFFT release.
- V.0.3 960317 Input/output variables have separate arrays for
- real and imag part. The speed of prime factors
- larger than 7 is more than doubled.
- V.0.4 980103 e-mail address changed.
- V.0.5 001030 Memory allocation in FFTBench changed, now calloc
- is used. Error reporting when primefactor is
- larger than maxPrimeFactor has been corrected.
-
-
- ------------------------------------------------------------------------
diff --git a/externals/grill/vasp/package.txt b/externals/grill/vasp/package.txt
deleted file mode 100644
index 6a8dfa65..00000000
--- a/externals/grill/vasp/package.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-NAME=vasp
-
-BUILDTYPE=multi
-
-PRECOMPILE=main.h
-
-SRCDIR=source
-
-SRCS= \
-arg.cpp mixfft.cpp obj_part.cpp obj_split.cpp opparam.cpp ops_cplx.cpp ops_gen.cpp ops_trnsc.cpp util.cpp \
-buflib.cpp obj_chns.cpp obj_peaks.cpp obj_sync.cpp ops_arith.cpp ops_dft.cpp ops_qminmax.cpp ops_wnd.cpp vasp.cpp \
-classes.cpp obj_frames.cpp obj_q.cpp obj_vasp.cpp ops_assign.cpp ops_feature.cpp ops_rearr.cpp opvecs.cpp vbuffer.cpp \
-env.cpp obj_imm.cpp obj_radio.cpp obj_vecs.cpp ops_carith.cpp ops_flt.cpp ops_resmp.cpp rdx2fft.cpp vecblk.cpp \
-main.cpp obj_offs.cpp obj_size.cpp opbase.cpp ops_cmp.cpp ops_gate.cpp ops_search.cpp rvfft.cpp
-
-HDRS= \
-arg.h env.h opdefs.h oppermute.h ops_assign.h ops_cplx.h ops_flt.h ops_resmp.h ops_wnd.h vbuffer.h \
-buflib.h main.h opfuns.h oploop.h ops.h ops_carith.h ops_dft.h ops_gen.h ops_search.h util.h vecblk.h \
-classes.h opbase.h opparam.h ops_arith.h ops_cmp.h ops_feature.h ops_rearr.h ops_trnsc.h vasp.h
-
diff --git a/externals/grill/vasp/pd-ex/convolve.pd b/externals/grill/vasp/pd-ex/convolve.pd
deleted file mode 100644
index 8fe41faf..00000000
--- a/externals/grill/vasp/pd-ex/convolve.pd
+++ /dev/null
@@ -1,194 +0,0 @@
-#N canvas 84 222 646 423 12;
-#X obj 60 241 bng 50 250 50 0 start_bang empty start 0 -6 128 8 -24198
--1 -1;
-#X text 15 77 load/save/play etc.;
-#X obj 364 125 nbx 8 16 0 1e+008 0 0 len_src empty empty 0 -8 128 12
--225271 -1 -1 0 256;
-#X text 367 142 (defines the size of the result);
-#X obj 362 179 nbx 8 16 0 1e+008 0 0 len_arg empty empty 0 -8 128 12
--225271 -1 -1 0 256;
-#X obj 24 122 wedit buf_src;
-#X obj 23 176 wedit buf_arg;
-#X obj 33 350 wedit buf_res;
-#X text 122 255 start convolution;
-#X obj 177 356 bng 15 250 50 0 empty empty empty 0 -6 0 8 -258699 -1
--1;
-#X obj 201 357 nbx 8 16 0 1e+008 0 0 len_arg empty empty 0 -8 128 12
--261689 -1 -1 1.04858e+006 256;
-#X obj 11 10 cnv 15 600 50 empty empty convolve 10 22 0 24 -260818
--1 0;
-#X text 202 41 http://www.parasitaere-kapazitaeten.net;
-#X text 203 10 fft-based convolution \, (C)2003 Thomas Grill;
-#X text 203 25 needs vasp and wedit;
-#X text 32 329 result buffer;
-#X text 140 121 source buffer;
-#X text 137 175 argument buffer;
-#N canvas 225 110 484 406 do 0;
-#X obj 27 255 vasp.u;
-#N canvas 406 75 413 555 convolve 0;
-#X obj 217 202 vasp.!;
-#X obj 116 163 vasp.f?;
-#X obj 216 173 vasp;
-#X obj 28 69 vasp;
-#N canvas 0 0 458 308 sf 0;
-#X obj 39 178 outlet;
-#X obj 38 43 inlet;
-#X obj 41 79 vasp.s;
-#X obj 120 43 inlet;
-#X obj 39 118 vasp.f;
-#X connect 1 0 2 0;
-#X connect 2 0 4 0;
-#X connect 3 0 2 1;
-#X connect 3 0 4 1;
-#X connect 4 0 0 0;
-#X restore 215 273 pd sf;
-#X obj 53 452 vasp.opt;
-#X obj 54 207 vasp;
-#X obj 29 39 inlet;
-#X obj 132 51 inlet;
-#X obj 221 50 inlet;
-#X obj 313 50 inlet;
-#X obj 43 520 outlet;
-#X text 26 15 bang;
-#X text 126 21 src1;
-#X text 218 20 src2;
-#X text 313 22 dst;
-#X text 214 220 copy to temp;
-#X text 100 519 dst;
-#N canvas 0 0 454 304 sf 0;
-#X obj 39 178 outlet;
-#X obj 38 43 inlet;
-#X obj 41 79 vasp.s;
-#X obj 120 43 inlet;
-#X obj 39 118 vasp.f;
-#X connect 1 0 2 0;
-#X connect 2 0 4 0;
-#X connect 3 0 2 1;
-#X connect 3 0 4 1;
-#X connect 4 0 0 0;
-#X restore 55 235 pd sf;
-#X obj 29 298 vasp.->;
-#X obj 27 482 vasp.radio;
-#X obj 29 94 t a b a;
-#X obj 54 393 vasp.cconv;
-#X obj 56 259 vasp.= 0;
-#N canvas 0 0 452 302 im0 0;
-#X obj 32 51 inlet;
-#X obj 31 250 outlet;
-#X obj 32 83 t a b a;
-#X obj 102 121 vasp.f?;
-#X obj 60 153 vasp.!;
-#X obj 32 210 vasp.join;
-#X text 31 10 make empty imaginary part;
-#X text 115 153 temporary buffer of same size;
-#X text 115 171 (initialized to 0);
-#X connect 0 0 2 0;
-#X connect 2 0 5 0;
-#X connect 2 1 4 0;
-#X connect 2 2 3 0;
-#X connect 3 0 4 1;
-#X connect 4 0 5 1;
-#X connect 5 0 1 0;
-#X restore 54 363 pd im0;
-#N canvas 0 0 452 302 im0 0;
-#X obj 32 51 inlet;
-#X obj 31 250 outlet;
-#X obj 32 83 t a b a;
-#X obj 102 121 vasp.f?;
-#X obj 60 153 vasp.!;
-#X obj 32 210 vasp.join;
-#X text 31 10 make empty imaginary part;
-#X text 115 153 temporary buffer of same size;
-#X text 115 171 (initialized to 0);
-#X connect 0 0 2 0;
-#X connect 2 0 5 0;
-#X connect 2 1 4 0;
-#X connect 2 2 3 0;
-#X connect 3 0 4 1;
-#X connect 4 0 5 1;
-#X connect 5 0 1 0;
-#X restore 129 363 pd im0;
-#X obj 53 424 vasp.re;
-#X obj 116 192 rndup2;
-#X obj 54 329 vasp.f;
-#X text 186 365 make imaginary parts;
-#X text 116 423 need only real part;
-#X text 124 451 "normalize";
-#X text 116 482 filter eventual radio msgs;
-#X connect 0 0 4 0;
-#X connect 1 0 27 0;
-#X connect 2 0 0 0;
-#X connect 3 0 21 0;
-#X connect 4 0 25 0;
-#X connect 5 0 20 0;
-#X connect 6 0 18 0;
-#X connect 7 0 3 0;
-#X connect 8 0 3 1;
-#X connect 9 0 2 1;
-#X connect 10 0 6 1;
-#X connect 18 0 23 0;
-#X connect 19 1 28 0;
-#X connect 20 1 11 0;
-#X connect 21 0 19 0;
-#X connect 21 1 2 0;
-#X connect 21 1 6 0;
-#X connect 21 2 1 0;
-#X connect 22 0 26 0;
-#X connect 23 0 19 1;
-#X connect 24 0 22 0;
-#X connect 25 0 22 1;
-#X connect 26 0 5 0;
-#X connect 27 0 18 1;
-#X connect 27 0 4 1;
-#X connect 27 0 28 1;
-#X connect 28 0 24 0;
-#X restore 26 226 pd convolve;
-#X obj 26 52 t b b;
-#X msg 154 93 vasp buf_arg;
-#X msg 267 92 vasp buf_res;
-#X obj 306 220 table buf_src 10;
-#X obj 307 242 table buf_arg 10;
-#X obj 307 264 table buf_res 10;
-#X obj 26 23 r start_bang;
-#X obj 143 21 r len_src;
-#X obj 229 24 r len_arg;
-#X obj 25 318 outlet;
-#X obj 27 291 vasp.f?;
-#X text 83 255 update buffer;
-#X obj 147 159 vasp.f;
-#X obj 43 157 vasp.f;
-#X msg 45 93 vasp buf_src;
-#X obj 141 51 r off_src;
-#X obj 227 54 r off_arg;
-#X obj 43 125 vasp.o;
-#X obj 147 127 vasp.o;
-#X text 123 225 convolve;
-#X connect 0 0 12 0;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X connect 2 1 3 0;
-#X connect 2 1 4 0;
-#X connect 2 1 16 0;
-#X connect 3 0 20 0;
-#X connect 4 0 1 3;
-#X connect 8 0 2 0;
-#X connect 9 0 15 1;
-#X connect 10 0 14 1;
-#X connect 12 0 11 0;
-#X connect 14 0 1 2;
-#X connect 15 0 1 1;
-#X connect 16 0 19 0;
-#X connect 17 0 19 1;
-#X connect 18 0 20 1;
-#X connect 19 0 15 0;
-#X connect 20 0 14 0;
-#X restore 177 324 pd do;
-#X obj 267 125 nbx 8 16 0 1e+008 0 0 off_src empty empty 0 -8 128 12
--225271 -1 -1 0 256;
-#X obj 265 179 nbx 8 16 0 1e+008 0 0 off_arg empty empty 0 -8 128 12
--225271 -1 -1 0 256;
-#X text 383 103 length;
-#X text 288 100 offset;
-#X text 286 78 range in samples;
-#X connect 18 0 9 0;
-#X connect 18 0 10 0;
diff --git a/externals/grill/vasp/pd-ex/enhance.pd b/externals/grill/vasp/pd-ex/enhance.pd
deleted file mode 100644
index 05e8ef8a..00000000
--- a/externals/grill/vasp/pd-ex/enhance.pd
+++ /dev/null
@@ -1,478 +0,0 @@
-#N canvas 215 47 982 666 12;
-#X obj 85 323 nbx 6 18 -100 0 0 1 empty empty spectral_gate(dB) 0 -8
-0 12 -225271 -1 -1 -18 256;
-#X obj 85 366 nbx 7 18 -10000 10000 0 1 empty empty transpose(cents)
-0 -8 0 12 -225271 -1 -1 0 256;
-#X obj 463 303 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X obj 744 304 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#N canvas 0 22 476 326 save 0;
-#X obj 30 198 soundfiler;
-#X obj 30 134 symbol;
-#X obj 29 106 savepanel;
-#X obj 32 8 inlet;
-#X obj 27 232 outlet;
-#X obj 30 42 route new again;
-#X obj 29 73 t b;
-#X obj 84 73 t b;
-#X msg 27 169 write -bytes 3 -wave \$1 dst;
-#X connect 0 0 4 0;
-#X connect 1 0 8 0;
-#X connect 2 0 1 0;
-#X connect 3 0 5 0;
-#X connect 5 0 6 0;
-#X connect 5 1 7 0;
-#X connect 6 0 2 0;
-#X connect 7 0 1 0;
-#X connect 8 0 0 0;
-#X restore 744 275 pd save;
-#N canvas 205 58 359 496 open 0;
-#X obj 19 96 openpanel;
-#X obj 21 6 inlet;
-#X obj 15 390 outlet;
-#X obj 20 123 symbol;
-#X obj 17 345 vasp.u;
-#X obj 17 233 t b;
-#X obj 22 33 route new again;
-#X obj 19 66 t b;
-#X obj 74 66 t b;
-#X msg 16 281 vasp src;
-#X obj 74 230 s \$0-srclen;
-#X obj 15 313 vasp.opt;
-#X obj 18 192 sndfiler;
-#X msg 19 152 read -resize \$1 src;
-#X connect 0 0 3 0;
-#X connect 1 0 6 0;
-#X connect 3 0 13 0;
-#X connect 4 0 2 0;
-#X connect 5 0 9 0;
-#X connect 6 0 7 0;
-#X connect 6 1 8 0;
-#X connect 7 0 0 0;
-#X connect 8 0 3 0;
-#X connect 9 0 11 0;
-#X connect 11 0 4 0;
-#X connect 12 0 5 0;
-#X connect 12 0 10 0;
-#X connect 13 0 12 0;
-#X restore 463 275 pd open;
-#X msg 396 247 stop;
-#N canvas 0 22 450 300 graph10 0;
-#X array src 5.99654e+06 float 0;
-#X coords 0 1 5.99654e+06 -1 600 150 1;
-#X restore 322 20 graph;
-#X msg 462 247 new;
-#X msg 497 247 again;
-#X msg 743 247 new;
-#X msg 776 247 again;
-#X msg 347 247 play;
-#X obj 8 9 cnv 15 300 48 empty empty enhance 5 14 0 20 -233017 -66577
-0;
-#X obj 18 108 bng 25 250 50 0 empty empty do! 0 -6 0 12 -24198 -1 -1
-;
-#X obj 107 115 nbx 12 18 0 1e+08 0 1 empty empty length(frames) 0 -8
-0 12 -225271 -1 -1 1e+06 256;
-#X obj 347 222 cnv 15 100 20 empty empty play_src 5 8 0 10 -261681
--66577 0;
-#X obj 462 222 cnv 15 100 20 empty empty read_src 5 8 0 10 -261681
--66577 0;
-#X obj 742 222 cnv 15 100 20 empty empty write_dst 5 8 0 10 -261681
--66577 0;
-#N canvas 0 22 450 300 graph10 0;
-#X array dst 1e+06 float 0;
-#X coords 0 1 999999 -1 600 150 1;
-#X restore 324 392 graph;
-#X msg 678 248 stop;
-#X msg 629 248 play;
-#X obj 629 223 cnv 15 100 20 empty empty play_dst 5 8 0 10 -261681
--66577 0;
-#N canvas 0 22 519 371 playsrc 0;
-#X obj 17 274 dac~;
-#X obj 19 21 inlet;
-#X obj 17 49 route play;
-#X obj 18 197 tabplay~ src;
-#X obj 338 23 r \$0-srclen;
-#X obj 166 22 r \$0-offs;
-#X obj 249 22 r \$0-len;
-#X obj 338 48 t b f;
-#X obj 166 94 *;
-#X obj 248 93 *;
-#X obj 75 132 pack 0 0;
-#X obj 19 81 t b;
-#X obj 77 105 loadbang;
-#X obj 113 274 outlet;
-#X obj 19 159 any;
-#X obj 18 237 *~;
-#X obj 451 21 inlet;
-#X obj 451 50 pack 0 30;
-#X obj 451 78 line~;
-#X connect 1 0 2 0;
-#X connect 2 0 11 0;
-#X connect 2 1 3 0;
-#X connect 3 0 15 0;
-#X connect 3 1 13 0;
-#X connect 4 0 7 0;
-#X connect 5 0 8 0;
-#X connect 6 0 9 0;
-#X connect 7 0 8 0;
-#X connect 7 0 9 0;
-#X connect 7 1 8 1;
-#X connect 7 1 9 1;
-#X connect 8 0 10 0;
-#X connect 9 0 10 1;
-#X connect 10 0 14 1;
-#X connect 11 0 14 0;
-#X connect 12 0 10 0;
-#X connect 14 0 3 0;
-#X connect 15 0 0 0;
-#X connect 15 0 0 1;
-#X connect 16 0 17 0;
-#X connect 17 0 18 0;
-#X connect 18 0 15 1;
-#X restore 347 275 pd playsrc;
-#N canvas 0 22 499 351 playdst 0;
-#X obj 23 199 dac~;
-#X obj 19 21 inlet;
-#X obj 22 51 route play;
-#X obj 21 83 tabplay~ dst;
-#X obj 113 200 outlet;
-#X obj 27 147 *~;
-#X obj 171 27 inlet;
-#X obj 171 56 pack 0 30;
-#X obj 171 84 line~;
-#X connect 1 0 2 0;
-#X connect 2 0 3 0;
-#X connect 2 1 3 0;
-#X connect 3 0 5 0;
-#X connect 3 1 4 0;
-#X connect 5 0 0 0;
-#X connect 5 0 0 1;
-#X connect 6 0 7 0;
-#X connect 7 0 8 0;
-#X connect 8 0 5 1;
-#X restore 629 276 pd playdst;
-#N canvas 249 202 587 530 copy 0;
-#X obj 27 26 inlet;
-#X obj 27 51 t b b;
-#X obj 316 19 inlet;
-#X obj 25 361 outlet;
-#X obj 26 81 vasp src;
-#X obj 26 229 vasp.f;
-#X obj 26 201 vasp.o;
-#X obj 128 31 r \$0-offs;
-#X obj 211 31 r \$0-len;
-#X obj 316 87 f 1e+06;
-#X obj 366 21 loadbang;
-#X obj 84 169 *;
-#X obj 117 169 *;
-#X obj 82 139 vasp.f?;
-#X obj 27 109 t a a;
-#X obj 27 259 vasp.sync;
-#X obj 26 328 vasp.f -1;
-#X text 167 288 copy src to dst;
-#X text 108 328 take all dst;
-#X text 307 213 resize dst buffer;
-#X obj 26 287 vasp.-> @detach 1;
-#X text 340 139 set to zero;
-#X obj 184 140 vasp.= 0 @ref dst @detach 1;
-#X obj 183 194 vasp.s @detach 1;
-#X connect 0 0 1 0;
-#X connect 1 0 4 0;
-#X connect 1 1 22 0;
-#X connect 2 0 9 0;
-#X connect 4 0 14 0;
-#X connect 5 0 15 0;
-#X connect 6 0 5 0;
-#X connect 7 0 11 1;
-#X connect 8 0 12 1;
-#X connect 9 0 23 1;
-#X connect 10 0 9 0;
-#X connect 11 0 6 1;
-#X connect 12 0 5 1;
-#X connect 13 0 11 0;
-#X connect 13 0 12 0;
-#X connect 14 0 6 0;
-#X connect 14 1 13 0;
-#X connect 15 0 20 0;
-#X connect 15 1 20 1;
-#X connect 16 0 3 0;
-#X connect 20 1 16 0;
-#X connect 22 0 23 0;
-#X connect 23 0 15 1;
-#X restore 18 159 pd copy;
-#X text 82 155 copy and resize;
-#X obj 323 170 hsl 600 15 0 1 0 1 \$0-r2 empty empty -2 -6 0 8 -262131
--1 -1 51900 0;
-#X obj 323 5 hsl 600 15 0 1 0 1 \$0-r1 empty empty -2 -6 0 8 -262131
--1 -1 34600 0;
-#N canvas 148 330 313 273 sel 0;
-#X obj 30 25 r \$0-r1;
-#X obj 110 25 r \$0-r2;
-#X obj 30 100 min;
-#X obj 113 100 max;
-#X obj 30 53 t f f;
-#X obj 110 50 t b b f;
-#X obj 113 130 -;
-#X obj 27 190 s \$0-offs;
-#X obj 113 190 s \$0-len;
-#X obj 114 161 * -1;
-#X connect 0 0 4 0;
-#X connect 1 0 5 0;
-#X connect 2 0 6 0;
-#X connect 2 0 7 0;
-#X connect 3 0 6 1;
-#X connect 4 0 2 0;
-#X connect 4 1 3 0;
-#X connect 5 0 2 0;
-#X connect 5 1 3 0;
-#X connect 5 2 3 1;
-#X connect 5 2 2 1;
-#X connect 6 0 9 0;
-#X connect 9 0 8 0;
-#X restore 872 223 pd sel;
-#X obj 85 410 nbx 7 18 0.01 10 1 1 empty empty power 0 -8 0 12 -225271
--1 -1 1.37078 256;
-#X obj 346 302 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X obj 628 302 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X text 165 324 -100... no gate;
-#N canvas 0 22 482 332 normalize 0;
-#X obj 127 29 loadbang;
-#X msg 127 54 detach 1;
-#X text 120 75 no attributes yet;
-#X obj 39 115 vasp.opt;
-#X obj 38 149 vasp.u;
-#X obj 39 32 inlet;
-#X obj 38 184 outlet;
-#X connect 0 0 1 0;
-#X connect 1 0 3 0;
-#X connect 3 0 4 0;
-#X connect 4 0 6 0;
-#X connect 5 0 3 0;
-#X restore 18 575 pd normalize;
-#X obj 608 245 vsl 15 70 0.01 10 1 1 empty empty empty 0 -8 0 8 -262144
--1 -1 4400 1;
-#X obj 324 247 vsl 15 70 0.01 10 1 1 empty empty empty 0 -8 0 8 -262144
--1 -1 5600 1;
-#X text 11 37 (C)2007 Thomas Grill;
-#N canvas 293 22 655 744 enhance 0;
-#X obj 27 137 vasp.split 2;
-#X obj 31 415 vasp.join 2;
-#X obj 27 74 vasp.cfft @detach 1;
-#X obj 33 471 vasp.c!fft @detach 1;
-#X obj 25 13 inlet;
-#X obj 91 230 * 0.01;
-#X obj 302 17 inlet;
-#X obj 26 107 vasp.polar @detach 1;
-#X obj 33 442 vasp.rect @detach 1;
-#X obj 29 321 vasp.gate @detach 1;
-#X obj 30 386 vasp.sync;
-#X obj 91 208 vasp.max? @detach 1;
-#X obj 381 17 inlet;
-#X obj 437 692 outlet;
-#N canvas 238 212 484 334 non0 0;
-#X obj 58 254 outlet;
-#X obj 60 158 / 1;
-#X obj 26 11 inlet;
-#X obj 26 39 t a a;
-#X obj 234 77 vasp.f?;
-#X obj 46 98 vasp.!= 0 @detach 1;
-#X obj 27 124 vasp.sum?;
-#X obj 60 195 rmstodb;
-#X obj 60 225 - 100;
-#X obj 47 71 vasp.!;
-#X connect 1 0 7 0;
-#X connect 2 0 3 0;
-#X connect 3 0 6 0;
-#X connect 3 1 4 0;
-#X connect 4 0 1 1;
-#X connect 5 0 6 0;
-#X connect 6 1 1 0;
-#X connect 7 0 8 0;
-#X connect 8 0 0 0;
-#X connect 9 0 5 0;
-#X restore 436 660 pd non0;
-#X obj 34 511 vasp.n 0;
-#X obj 302 45 + 100;
-#X obj 300 76 dbtorms;
-#N canvas 445 282 498 348 cplx 0;
-#X obj 19 229 vasp.join;
-#X obj 19 73 t a b a;
-#X obj 149 137 vasp.f?;
-#X obj 19 14 inlet;
-#X obj 19 258 outlet;
-#X text 216 135 get length of source;
-#X text 225 181 make immediate;
-#X text 225 196 initialized to 0;
-#X text 101 230 make complex vasp;
-#X obj 87 176 vasp.! @detach 1;
-#X obj 19 203 vasp.sync;
-#X connect 0 0 4 0;
-#X connect 1 0 10 0;
-#X connect 1 1 9 0;
-#X connect 1 2 2 0;
-#X connect 2 0 9 1;
-#X connect 3 0 1 0;
-#X connect 9 0 10 1;
-#X connect 10 0 0 0;
-#X connect 10 1 0 1;
-#X restore 27 43 pd cplx;
-#X text 281 166 resample;
-#X text 146 230 find spectral peak;
-#X text 203 320 gate spectrum below threshold;
-#X text 107 387 wait for threads to finish;
-#X text 193 75 FFT;
-#X text 195 100 -> polar;
-#X text 192 439 -> cartesian;
-#X text 202 467 inverse FFT;
-#X text 440 637 get spectral density;
-#X obj 28 168 vasp.xtilt 1 @detach 1 @inter 2;
-#X obj 30 347 vasp.pow @detach 1;
-#X obj 441 21 inlet;
-#X text 194 347 treat spectrum exponentially;
-#X obj 28 238 t a a;
-#X obj 28 288 vasp;
-#X obj 89 257 t b f;
-#X obj 381 51 / -1200;
-#X obj 381 77 t b f;
-#X obj 382 129 pow;
-#X msg 382 103 2;
-#X obj 73 542 t a a;
-#X obj 74 640 vasp.* @detach 1;
-#X obj 108 573 vasp.flp;
-#X obj 33 678 outlet;
-#X connect 0 0 28 0;
-#X connect 0 1 10 1;
-#X connect 1 0 8 0;
-#X connect 2 0 7 0;
-#X connect 3 0 15 0;
-#X connect 4 0 18 0;
-#X connect 5 0 34 0;
-#X connect 6 0 16 0;
-#X connect 7 0 0 0;
-#X connect 8 0 3 0;
-#X connect 9 0 29 0;
-#X connect 10 0 1 0;
-#X connect 10 1 1 1;
-#X connect 11 0 5 0;
-#X connect 12 0 35 0;
-#X connect 14 0 13 0;
-#X connect 15 0 42 0;
-#X connect 16 0 17 0;
-#X connect 17 0 5 1;
-#X connect 18 0 2 0;
-#X connect 28 0 32 0;
-#X connect 29 0 10 0;
-#X connect 29 0 14 0;
-#X connect 30 0 29 1;
-#X connect 32 0 11 0;
-#X connect 32 1 33 1;
-#X connect 33 0 9 0;
-#X connect 34 0 33 0;
-#X connect 34 1 9 1;
-#X connect 35 0 36 0;
-#X connect 36 0 38 0;
-#X connect 36 1 37 1;
-#X connect 37 0 28 1;
-#X connect 38 0 37 0;
-#X connect 39 0 40 0;
-#X connect 39 1 41 0;
-#X connect 40 0 42 0;
-#X restore 17 440 pd enhance;
-#N canvas 0 22 501 392 expand 0;
-#X obj 41 33 inlet;
-#X obj 41 313 outlet;
-#X obj 42 64 t a a;
-#X obj 76 93 vasp.!;
-#X obj 41 280 vasp.* @detach 1;
-#X obj 41 247 vasp.sync;
-#X obj 77 167 vasp.flp @detach 1;
-#X obj 218 35 inlet;
-#X obj 76 202 vasp.pow @detach 1;
-#X obj 376 37 inlet;
-#X text 229 165 make a smooth volume curve;
-#X obj 77 136 vasp.abs @detach 1;
-#X connect 0 0 2 0;
-#X connect 2 0 5 0;
-#X connect 2 1 3 0;
-#X connect 3 0 11 0;
-#X connect 4 0 1 0;
-#X connect 5 0 4 0;
-#X connect 5 1 4 1;
-#X connect 6 0 8 0;
-#X connect 7 0 6 1;
-#X connect 8 0 5 1;
-#X connect 9 0 8 1;
-#X connect 11 0 6 0;
-#X restore 18 275 pd expand;
-#X obj 82 204 nbx 7 18 1 1e+06 1 1 empty empty low_pass_(samples) 0
--8 0 12 -225271 -1 -1 220.673 256;
-#X obj 82 240 nbx 7 18 -3 5 0 1 empty empty power 0 -8 0 12 -225271
--1 -1 0 256;
-#N canvas 0 22 517 408 expand 0;
-#X obj 41 33 inlet;
-#X obj 41 313 outlet;
-#X obj 42 64 t a a;
-#X obj 76 93 vasp.!;
-#X obj 41 280 vasp.* @detach 1;
-#X obj 41 247 vasp.sync;
-#X obj 77 167 vasp.flp @detach 1;
-#X obj 218 35 inlet;
-#X obj 76 202 vasp.pow @detach 1;
-#X obj 376 37 inlet;
-#X text 229 165 make a smooth volume curve;
-#X obj 77 136 vasp.abs @detach 1;
-#X connect 0 0 2 0;
-#X connect 2 0 5 0;
-#X connect 2 1 3 0;
-#X connect 3 0 11 0;
-#X connect 4 0 1 0;
-#X connect 5 0 4 0;
-#X connect 5 1 4 1;
-#X connect 6 0 8 0;
-#X connect 7 0 6 1;
-#X connect 8 0 5 1;
-#X connect 9 0 8 1;
-#X connect 11 0 6 0;
-#X restore 18 546 pd expand;
-#X obj 84 482 nbx 7 18 1 1e+06 1 1 empty empty low_pass_(samples) 0
--8 0 12 -225271 -1 -1 5633.54 256;
-#X obj 84 518 nbx 7 18 -3 10 0 1 empty empty power 0 -8 0 12 -225271
--1 -1 3 256;
-#X obj 17 614 bng 25 250 50 0 empty empty ready 0 -6 0 12 -24198 -1
--1;
-#X text 172 240 0... no change;
-#X text 172 519 0... no change;
-#X text 174 410 1... no change;
-#X connect 0 0 38 1;
-#X connect 1 0 38 2;
-#X connect 4 0 3 0;
-#X connect 5 0 2 0;
-#X connect 6 0 23 0;
-#X connect 8 0 5 0;
-#X connect 9 0 5 0;
-#X connect 10 0 4 0;
-#X connect 11 0 4 0;
-#X connect 12 0 23 0;
-#X connect 14 0 25 0;
-#X connect 15 0 25 1;
-#X connect 20 0 24 0;
-#X connect 21 0 24 0;
-#X connect 23 0 31 0;
-#X connect 24 0 32 0;
-#X connect 25 0 39 0;
-#X connect 30 0 38 3;
-#X connect 31 0 12 0;
-#X connect 32 0 21 0;
-#X connect 34 0 45 0;
-#X connect 35 0 24 1;
-#X connect 36 0 23 1;
-#X connect 38 0 42 0;
-#X connect 39 0 38 0;
-#X connect 40 0 39 1;
-#X connect 41 0 39 2;
-#X connect 42 0 34 0;
-#X connect 43 0 42 1;
-#X connect 44 0 42 2;
diff --git a/externals/grill/vasp/pd-ex/freeze.pd b/externals/grill/vasp/pd-ex/freeze.pd
deleted file mode 100644
index bc9aaa41..00000000
--- a/externals/grill/vasp/pd-ex/freeze.pd
+++ /dev/null
@@ -1,414 +0,0 @@
-#N canvas 268 127 978 522 12;
-#N canvas 293 22 643 732 freeze 0;
-#X obj 27 137 vasp.split 2;
-#X obj 30 463 vasp.join 2;
-#X obj 27 74 vasp.cfft @detach 1;
-#X obj 32 519 vasp.c!fft @detach 1;
-#X obj 25 13 inlet;
-#X obj 91 230 * 0.01;
-#X obj 302 17 inlet;
-#X obj 26 107 vasp.polar @detach 1;
-#X obj 32 490 vasp.rect @detach 1;
-#X obj 29 321 vasp.gate @detach 1;
-#X obj 95 374 vasp.noise @detach 1;
-#X obj 29 434 vasp.sync;
-#X obj 91 208 vasp.max? @detach 1;
-#X obj 381 17 inlet;
-#X obj 167 619 outlet;
-#N canvas 238 212 484 334 non0 0;
-#X obj 58 254 outlet;
-#X obj 60 158 / 1;
-#X obj 26 11 inlet;
-#X obj 26 39 t a a;
-#X obj 234 77 vasp.f?;
-#X obj 46 98 vasp.!= 0 @detach 1;
-#X obj 27 124 vasp.sum?;
-#X obj 60 195 rmstodb;
-#X obj 60 225 - 100;
-#X obj 47 71 vasp.!;
-#X connect 1 0 7 0;
-#X connect 2 0 3 0;
-#X connect 3 0 6 0;
-#X connect 3 1 4 0;
-#X connect 4 0 1 1;
-#X connect 5 0 6 0;
-#X connect 6 1 1 0;
-#X connect 7 0 8 0;
-#X connect 8 0 0 0;
-#X connect 9 0 5 0;
-#X restore 164 553 pd non0;
-#X obj 32 564 vasp.n 0;
-#X obj 302 45 + 100;
-#X obj 300 76 dbtorms;
-#N canvas 445 282 498 348 cplx 0;
-#X obj 19 229 vasp.join;
-#X obj 19 73 t a b a;
-#X obj 149 137 vasp.f?;
-#X obj 19 14 inlet;
-#X obj 19 258 outlet;
-#X text 216 135 get length of source;
-#X text 225 181 make immediate;
-#X text 225 196 initialized to 0;
-#X text 101 230 make complex vasp;
-#X obj 87 176 vasp.! @detach 1;
-#X obj 19 203 vasp.sync;
-#X connect 0 0 4 0;
-#X connect 1 0 10 0;
-#X connect 1 1 9 0;
-#X connect 1 2 2 0;
-#X connect 2 0 9 1;
-#X connect 3 0 1 0;
-#X connect 9 0 10 1;
-#X connect 10 0 0 0;
-#X connect 10 1 0 1;
-#X restore 27 43 pd cplx;
-#X text 281 166 resample;
-#X text 146 230 find spectral peak;
-#X text 203 320 gate spectrum below threshold;
-#X text 106 435 wait for threads to finish;
-#X text 193 75 FFT;
-#X text 195 100 -> polar;
-#X text 191 487 -> cartesian;
-#X text 201 515 inverse FFT;
-#X text 266 371 randomize complex arguments;
-#X text 228 551 get spectral density;
-#X obj 28 168 vasp.xtilt 1 @detach 1 @inter 2;
-#X obj 30 347 vasp.pow @detach 1;
-#X obj 441 21 inlet;
-#X text 194 347 treat spectrum exponentially;
-#X obj 28 238 t a a;
-#X obj 28 288 vasp;
-#X obj 89 257 t b f;
-#X obj 95 399 vasp.* 3.14159 @detach 1;
-#X obj 381 51 / -1200;
-#X obj 381 77 t b f;
-#X obj 382 129 pow;
-#X msg 382 103 2;
-#X obj 33 617 vasp.u;
-#X connect 0 0 30 0;
-#X connect 0 1 10 0;
-#X connect 1 0 8 0;
-#X connect 2 0 7 0;
-#X connect 3 0 16 0;
-#X connect 4 0 19 0;
-#X connect 5 0 36 0;
-#X connect 6 0 17 0;
-#X connect 7 0 0 0;
-#X connect 8 0 3 0;
-#X connect 9 0 31 0;
-#X connect 10 0 37 0;
-#X connect 11 0 1 0;
-#X connect 11 1 1 1;
-#X connect 12 0 5 0;
-#X connect 13 0 38 0;
-#X connect 15 0 14 0;
-#X connect 16 0 42 0;
-#X connect 17 0 18 0;
-#X connect 18 0 5 1;
-#X connect 19 0 2 0;
-#X connect 30 0 34 0;
-#X connect 31 0 11 0;
-#X connect 31 0 15 0;
-#X connect 32 0 31 1;
-#X connect 34 0 12 0;
-#X connect 34 1 35 1;
-#X connect 35 0 9 0;
-#X connect 36 0 35 0;
-#X connect 36 1 9 1;
-#X connect 37 0 11 1;
-#X connect 38 0 39 0;
-#X connect 39 0 41 0;
-#X connect 39 1 40 1;
-#X connect 40 0 30 1;
-#X connect 41 0 40 0;
-#X restore 18 331 pd freeze;
-#X obj 73 210 nbx 6 18 -100 0 0 1 empty empty spectral_gate(dB) 0 -8
-0 12 -225271 -1 -1 -95 256;
-#X obj 73 253 nbx 7 18 -10000 10000 0 1 empty empty transpose(cents)
-0 -8 0 12 -225271 -1 -1 0 256;
-#X obj 448 278 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X obj 729 279 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#N canvas 0 22 476 326 save 0;
-#X obj 30 198 soundfiler;
-#X obj 30 134 symbol;
-#X obj 29 106 savepanel;
-#X obj 32 8 inlet;
-#X obj 27 232 outlet;
-#X obj 30 42 route new again;
-#X obj 29 73 t b;
-#X obj 84 73 t b;
-#X msg 27 169 write -bytes 3 -wave \$1 dst;
-#X connect 0 0 4 0;
-#X connect 1 0 8 0;
-#X connect 2 0 1 0;
-#X connect 3 0 5 0;
-#X connect 5 0 6 0;
-#X connect 5 1 7 0;
-#X connect 6 0 2 0;
-#X connect 7 0 1 0;
-#X connect 8 0 0 0;
-#X restore 729 250 pd save;
-#N canvas 205 58 359 496 open 0;
-#X obj 19 96 openpanel;
-#X obj 21 6 inlet;
-#X obj 15 390 outlet;
-#X obj 20 123 symbol;
-#X obj 17 345 vasp.u;
-#X obj 17 233 t b;
-#X obj 22 33 route new again;
-#X obj 19 66 t b;
-#X obj 74 66 t b;
-#X msg 16 281 vasp src;
-#X obj 74 230 s \$0-srclen;
-#X obj 15 313 vasp.opt;
-#X obj 18 192 sndfiler;
-#X msg 19 152 read -resize \$1 src;
-#X connect 0 0 3 0;
-#X connect 1 0 6 0;
-#X connect 3 0 13 0;
-#X connect 4 0 2 0;
-#X connect 5 0 9 0;
-#X connect 6 0 7 0;
-#X connect 6 1 8 0;
-#X connect 7 0 0 0;
-#X connect 8 0 3 0;
-#X connect 9 0 11 0;
-#X connect 11 0 4 0;
-#X connect 12 0 5 0;
-#X connect 12 0 10 0;
-#X connect 13 0 12 0;
-#X restore 448 250 pd open;
-#X msg 381 222 stop;
-#N canvas 0 22 450 300 graph10 0;
-#X array src 2.2491e+07 float 0;
-#X coords 0 1 2.2491e+07 -1 600 150 1;
-#X restore 322 20 graph;
-#X msg 447 222 new;
-#X msg 482 222 again;
-#X msg 728 222 new;
-#X msg 761 222 again;
-#X msg 332 222 play;
-#X obj 8 9 cnv 15 300 48 empty empty freeze 5 14 0 20 -233017 -66577
-0;
-#X text 128 13 make static sound;
-#X obj 18 108 bng 25 250 50 0 empty empty do! 0 -6 0 12 -24198 -1 -1
-;
-#X obj 107 115 nbx 12 18 0 1e+08 0 1 empty empty length(frames) 0 -8
-0 12 -225271 -1 -1 1e+06 256;
-#X obj 19 375 nbx 9 14 -1e+37 1e+37 0 0 empty empty spectral_density(dB)
-0 -6 0 10 -262131 -1 -1 -33.6745 256;
-#X obj 332 197 cnv 15 100 20 empty empty play_src 5 8 0 10 -261681
--66577 0;
-#X obj 447 197 cnv 15 100 20 empty empty read_src 5 8 0 10 -261681
--66577 0;
-#X obj 727 197 cnv 15 100 20 empty empty write_dst 5 8 0 10 -261681
--66577 0;
-#N canvas 0 22 450 300 graph10 0;
-#X array dst 1e+06 float 0;
-#X coords 0 1 999999 -1 600 150 1;
-#X restore 325 304 graph;
-#X msg 663 223 stop;
-#X msg 614 223 play;
-#X obj 614 198 cnv 15 100 20 empty empty play_dst 5 8 0 10 -261681
--66577 0;
-#N canvas 0 22 519 371 playsrc 0;
-#X obj 17 274 dac~;
-#X obj 19 21 inlet;
-#X obj 17 49 route play;
-#X obj 18 197 tabplay~ src;
-#X obj 338 23 r \$0-srclen;
-#X obj 166 22 r \$0-offs;
-#X obj 249 22 r \$0-len;
-#X obj 338 48 t b f;
-#X obj 166 94 *;
-#X obj 248 93 *;
-#X obj 75 132 pack 0 0;
-#X obj 19 81 t b;
-#X obj 77 105 loadbang;
-#X obj 113 274 outlet;
-#X obj 19 159 any;
-#X obj 18 237 *~;
-#X obj 451 21 inlet;
-#X obj 451 50 pack 0 30;
-#X obj 451 78 line~;
-#X connect 1 0 2 0;
-#X connect 2 0 11 0;
-#X connect 2 1 3 0;
-#X connect 3 0 15 0;
-#X connect 3 1 13 0;
-#X connect 4 0 7 0;
-#X connect 5 0 8 0;
-#X connect 6 0 9 0;
-#X connect 7 0 8 0;
-#X connect 7 0 9 0;
-#X connect 7 1 8 1;
-#X connect 7 1 9 1;
-#X connect 8 0 10 0;
-#X connect 9 0 10 1;
-#X connect 10 0 14 1;
-#X connect 11 0 14 0;
-#X connect 12 0 10 0;
-#X connect 14 0 3 0;
-#X connect 15 0 0 0;
-#X connect 15 0 0 1;
-#X connect 16 0 17 0;
-#X connect 17 0 18 0;
-#X connect 18 0 15 1;
-#X restore 332 250 pd playsrc;
-#N canvas 0 22 499 351 playdst 0;
-#X obj 23 199 dac~;
-#X obj 19 21 inlet;
-#X obj 22 51 route play;
-#X obj 21 83 tabplay~ dst;
-#X obj 113 200 outlet;
-#X obj 27 147 *~;
-#X obj 171 27 inlet;
-#X obj 171 56 pack 0 30;
-#X obj 171 84 line~;
-#X connect 1 0 2 0;
-#X connect 2 0 3 0;
-#X connect 2 1 3 0;
-#X connect 3 0 5 0;
-#X connect 3 1 4 0;
-#X connect 5 0 0 0;
-#X connect 5 0 0 1;
-#X connect 6 0 7 0;
-#X connect 7 0 8 0;
-#X connect 8 0 5 1;
-#X restore 614 251 pd playdst;
-#N canvas 249 202 571 514 copy 0;
-#X obj 27 26 inlet;
-#X obj 27 51 t b b;
-#X obj 316 19 inlet;
-#X obj 25 361 outlet;
-#X obj 26 81 vasp src;
-#X obj 26 229 vasp.f;
-#X obj 26 201 vasp.o;
-#X obj 128 31 r \$0-offs;
-#X obj 211 31 r \$0-len;
-#X obj 316 87 f 1e+06;
-#X obj 366 21 loadbang;
-#X obj 84 169 *;
-#X obj 117 169 *;
-#X obj 82 139 vasp.f?;
-#X obj 27 109 t a a;
-#X obj 27 259 vasp.sync;
-#X obj 26 328 vasp.f -1;
-#X text 167 288 copy src to dst;
-#X text 108 328 take all dst;
-#X text 311 193 resize dst buffer;
-#X text 341 221 set to zero;
-#X obj 185 222 vasp.= 0 @detach 1;
-#X obj 26 287 vasp.-> @detach 1;
-#X obj 187 174 vasp.s @ref dst @detach 1;
-#X connect 0 0 1 0;
-#X connect 1 0 4 0;
-#X connect 1 1 23 0;
-#X connect 2 0 9 0;
-#X connect 4 0 14 0;
-#X connect 5 0 15 0;
-#X connect 6 0 5 0;
-#X connect 7 0 11 1;
-#X connect 8 0 12 1;
-#X connect 9 0 23 1;
-#X connect 10 0 9 0;
-#X connect 11 0 6 1;
-#X connect 12 0 5 1;
-#X connect 13 0 11 0;
-#X connect 13 0 12 0;
-#X connect 14 0 6 0;
-#X connect 14 1 13 0;
-#X connect 15 0 22 0;
-#X connect 15 1 22 1;
-#X connect 16 0 3 0;
-#X connect 21 0 15 1;
-#X connect 22 1 16 0;
-#X connect 23 0 21 0;
-#X restore 18 159 pd copy;
-#X text 85 160 copy and resize;
-#X obj 323 170 hsl 600 15 0 1 0 1 \$0-r2 empty empty -2 -6 0 8 -262131
--1 -1 12800 0;
-#X obj 323 5 hsl 600 15 0 1 0 1 \$0-r1 empty empty -2 -6 0 8 -262131
--1 -1 0 0;
-#N canvas 148 330 313 273 sel 0;
-#X obj 30 25 r \$0-r1;
-#X obj 110 25 r \$0-r2;
-#X obj 30 100 min;
-#X obj 113 100 max;
-#X obj 30 53 t f f;
-#X obj 110 50 t b b f;
-#X obj 113 130 -;
-#X obj 27 190 s \$0-offs;
-#X obj 113 190 s \$0-len;
-#X obj 114 161 * -1;
-#X connect 0 0 4 0;
-#X connect 1 0 5 0;
-#X connect 2 0 6 0;
-#X connect 2 0 7 0;
-#X connect 3 0 6 1;
-#X connect 4 0 2 0;
-#X connect 4 1 3 0;
-#X connect 5 0 2 0;
-#X connect 5 1 3 0;
-#X connect 5 2 3 1;
-#X connect 5 2 2 1;
-#X connect 6 0 9 0;
-#X connect 9 0 8 0;
-#X restore 871 198 pd sel;
-#X obj 73 297 nbx 7 18 0.01 10 1 1 empty empty power 0 -8 0 12 -225271
--1 -1 0.873788 256;
-#X obj 331 277 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X obj 613 277 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X text 11 37 (C)2002-2007 Thomas Grill;
-#X text 153 210 -100... no gate;
-#X text 162 296 1... no power;
-#X obj 18 426 bng 25 250 50 0 empty empty normalize 0 -6 0 12 -24198
--1 -1;
-#N canvas 0 22 458 308 normalize 0;
-#X obj 127 29 loadbang;
-#X msg 127 54 detach 1;
-#X text 120 75 no attributes yet;
-#X obj 39 115 vasp.opt;
-#X obj 38 149 vasp.u;
-#X obj 39 32 inlet;
-#X obj 40 82 vasp dst;
-#X obj 40 56 t b;
-#X connect 0 0 1 0;
-#X connect 1 0 3 0;
-#X connect 3 0 4 0;
-#X connect 5 0 7 0;
-#X connect 6 0 3 0;
-#X connect 7 0 6 0;
-#X restore 18 454 pd normalize;
-#X obj 593 220 vsl 15 70 0.01 10 1 1 empty empty empty 0 -8 0 8 -262144
--1 -1 4900 1;
-#X obj 309 222 vsl 15 70 0.01 10 1 1 empty empty empty 0 -8 0 8 -262144
--1 -1 4900 1;
-#X connect 0 0 18 0;
-#X connect 1 0 0 1;
-#X connect 2 0 0 2;
-#X connect 5 0 4 0;
-#X connect 6 0 3 0;
-#X connect 7 0 26 0;
-#X connect 9 0 6 0;
-#X connect 10 0 6 0;
-#X connect 11 0 5 0;
-#X connect 12 0 5 0;
-#X connect 13 0 26 0;
-#X connect 16 0 28 0;
-#X connect 17 0 28 1;
-#X connect 23 0 27 0;
-#X connect 24 0 27 0;
-#X connect 26 0 34 0;
-#X connect 27 0 35 0;
-#X connect 28 0 0 0;
-#X connect 33 0 0 3;
-#X connect 34 0 13 0;
-#X connect 35 0 24 0;
-#X connect 39 0 40 0;
-#X connect 41 0 27 1;
-#X connect 42 0 26 1;
diff --git a/externals/grill/vasp/pd-ex/frqmax.pd b/externals/grill/vasp/pd-ex/frqmax.pd
deleted file mode 100644
index f34fb297..00000000
--- a/externals/grill/vasp/pd-ex/frqmax.pd
+++ /dev/null
@@ -1,336 +0,0 @@
-#N canvas 530 176 764 598 12;
-#N canvas 0 22 450 300 graph1 0;
-#X array array1 2.205e+06 float 0;
-#X coords 0 1 2.205e+06 -1 300 140 1;
-#X restore 403 192 graph;
-#X msg 23 156 vasp array1;
-#X text 127 156 buffer to analyze;
-#X obj 23 417 vasp.??;
-#X obj 24 84 nbx 5 18 -100 0 0 1 \$0-thresh empty empty 0 -6 0 14 -225271
--1 -1 -5 256;
-#X text 84 415 print list omitting zero values;
-#X obj 22 536 print F;
-#X obj 195 535 print V;
-#N canvas 383 238 314 291 mag 0;
-#X obj 37 34 inlet;
-#X obj 39 214 outlet;
-#N canvas 403 262 454 304 rfft 0;
-#X obj 38 100 vasp.rfft;
-#X obj 28 138 vasp.lower;
-#X obj 114 138 vasp.upper;
-#X obj 42 228 vasp.polar;
-#X obj 43 170 vasp.sync;
-#X obj 42 197 vasp.join;
-#X obj 42 262 vasp.re;
-#X text 112 262 get magnitude only;
-#X text 119 102 real FFT;
-#X text 132 156 separate real and imag part;
-#X text 133 229 make polar representation;
-#X obj 39 20 inlet;
-#X obj 38 62 vasp.!;
-#X text 97 64 make temporary buffer;
-#X obj 41 305 outlet;
-#X connect 0 0 1 0;
-#X connect 0 0 2 0;
-#X connect 1 0 4 0;
-#X connect 2 0 4 1;
-#X connect 3 0 6 0;
-#X connect 4 0 5 0;
-#X connect 4 1 5 1;
-#X connect 5 0 3 0;
-#X connect 6 0 14 0;
-#X connect 11 0 12 0;
-#X connect 12 0 0 0;
-#X restore 100 151 pd rfft;
-#N canvas 0 22 454 344 cfft 0;
-#X obj 39 187 vasp.polar;
-#X obj 39 221 vasp.re;
-#X text 109 221 get magnitude only;
-#X text 130 188 make polar representation;
-#X obj 38 42 vasp.!;
-#X obj 38 154 vasp.cfft;
-#X obj 40 253 vasp.lower;
-#X obj 37 100 vasp.sync;
-#X text 169 56 make temporary buffers;
-#X obj 101 44 vasp.!;
-#X obj 102 71 vasp.= 0;
-#X text 119 154 complex FFT;
-#X obj 37 128 vasp.join;
-#X obj 35 11 inlet;
-#X obj 37 291 outlet;
-#X connect 0 0 1 0;
-#X connect 1 0 6 0;
-#X connect 4 0 7 0;
-#X connect 5 0 0 0;
-#X connect 6 0 14 0;
-#X connect 7 0 12 0;
-#X connect 7 1 12 1;
-#X connect 9 0 10 0;
-#X connect 10 0 7 1;
-#X connect 12 0 5 0;
-#X connect 13 0 4 0;
-#X connect 13 0 9 0;
-#X restore 38 88 pd cfft;
-#X text 105 89 complex method;
-#X text 165 147 real method;
-#X text 166 167 (off by one bin?);
-#X connect 0 0 3 0;
-#X connect 3 0 1 0;
-#X restore 24 185 pd mag;
-#X text 77 186 get spectral magnitude;
-#X obj 11 10 cnv 15 700 50 empty empty fftmax 10 22 0 24 -260818 -1
-0;
-#N canvas 0 22 478 370 load 0;
-#X obj 30 100 openpanel;
-#X obj 31 254 pack s s s s;
-#X obj 28 130 t b b s b;
-#X obj 30 22 inlet;
-#X obj 31 313 soundfiler;
-#X obj 29 74 t b s;
-#X text 80 21 input message with target buffer;
-#X obj 107 213 symbol array1;
-#X obj 31 284 route list;
-#X obj 51 189 symbol -resize;
-#X obj 28 159 symbol read;
-#X connect 0 0 2 0;
-#X connect 1 0 8 0;
-#X connect 2 0 10 0;
-#X connect 2 1 9 0;
-#X connect 2 2 1 2;
-#X connect 2 3 7 0;
-#X connect 3 0 5 0;
-#X connect 5 0 0 0;
-#X connect 5 1 7 1;
-#X connect 7 0 1 3;
-#X connect 8 0 4 0;
-#X connect 9 0 1 1;
-#X connect 10 0 1 0;
-#X restore 410 144 pd load;
-#X msg 410 114 array1;
-#X text 442 85 load file into buffer;
-#X obj 410 83 bng 25 250 50 0 empty empty empty 0 -6 0 8 -225271 -1
--1;
-#X obj 125 259 vasp.max?;
-#X text 103 383 discriminate lower values;
-#X obj 125 350 *;
-#X obj 156 299 + 100;
-#X obj 156 322 dbtorms;
-#X obj 23 382 vasp.gate;
-#X obj 23 215 t a a;
-#N canvas 0 22 359 314 ny 0;
-#X obj 33 128 samplerate~;
-#X obj 33 69 vasp.f?;
-#X obj 32 39 inlet;
-#X obj 32 171 /;
-#X obj 32 97 t b f;
-#X obj 32 244 outlet;
-#X obj 33 208 / 2;
-#X connect 0 0 3 0;
-#X connect 1 0 4 0;
-#X connect 2 0 1 0;
-#X connect 3 0 6 0;
-#X connect 4 0 0 0;
-#X connect 4 1 3 1;
-#X connect 6 0 5 0;
-#X restore 65 258 pd ny;
-#X text 89 536 frequencies;
-#X text 102 84 threshold in dB (eg. -6);
-#N canvas 0 22 466 316 testsig 0;
-#X msg 30 107 vasp array1;
-#X obj 29 256 vasp.u;
-#X obj 93 168 samplerate~;
-#X obj 29 227 vasp.osc 441;
-#X obj 92 193 / 100;
-#X obj 94 138 t b f;
-#X text 31 10 set frequency \, then bang to synthesize;
-#X obj 31 71 route bang;
-#X obj 31 41 inlet;
-#X connect 0 0 3 0;
-#X connect 2 0 4 0;
-#X connect 3 0 1 0;
-#X connect 4 0 3 1;
-#X connect 5 0 2 0;
-#X connect 5 1 4 1;
-#X connect 7 0 0 0;
-#X connect 7 1 5 0;
-#X connect 8 0 7 0;
-#X restore 498 468 pd testsig;
-#X text 496 392 create a test signal;
-#X obj 23 121 bng 25 250 50 0 empty empty empty 0 -6 0 8 -258699 -1
--1;
-#X text 51 119 bang to start analysis;
-#X obj 220 258 r \$0-thresh;
-#X text 183 14 get loudest frequencies \, (C)2003-2007 Thomas Grill
-;
-#X text 184 34 http://grrrr.org;
-#X obj 545 438 nbx 5 18 0 100000 0 0 empty empty frequency 0 -6 0 14
--225271 -1 -1 0 256;
-#X obj 498 432 bng 25 250 50 0 empty empty make! 0 -6 0 8 -261689 -1
--1;
-#N canvas 0 22 454 304 db 0;
-#X obj 45 34 inlet;
-#X obj 44 192 outlet;
-#X obj 45 96 log;
-#X obj 45 121 / 2.302;
-#X text 114 122 ln 10;
-#X obj 45 156 * 20;
-#X connect 0 0 2 0;
-#X connect 2 0 3 0;
-#X connect 3 0 5 0;
-#X connect 5 0 1 0;
-#X restore 289 497 pd db;
-#X obj 116 495 *;
-#N canvas 0 22 458 308 list-map 0;
-#N canvas 0 22 454 304 serial 0;
-#X obj 65 38 inlet;
-#X obj 53 227 outlet;
-#X obj 38 180 list split 1;
-#X obj 38 97 until;
-#X obj 38 135 list append;
-#X obj 64 64 t b l;
-#X obj 182 130 bang;
-#X connect 0 0 5 0;
-#X connect 2 0 1 0;
-#X connect 2 1 4 1;
-#X connect 2 2 6 0;
-#X connect 3 0 4 0;
-#X connect 4 0 2 0;
-#X connect 5 0 3 0;
-#X connect 5 1 4 1;
-#X connect 6 0 3 1;
-#X restore 76 106 pd serial;
-#N canvas 676 218 470 320 synth 0;
-#X obj 55 34 inlet;
-#X obj 107 266 outlet;
-#X obj 200 37 inlet reset;
-#X obj 55 61 route bang;
-#X obj 134 99 t b a;
-#X obj 197 64 t b b b;
-#X obj 105 239 spigot;
-#X msg 250 171 0;
-#X msg 68 161 1;
-#X obj 50 102 t b b b;
-#X obj 185 169 list;
-#X obj 126 166 any;
-#X connect 0 0 3 0;
-#X connect 2 0 5 0;
-#X connect 3 0 9 0;
-#X connect 3 1 4 0;
-#X connect 4 0 11 0;
-#X connect 4 1 10 1;
-#X connect 5 0 10 0;
-#X connect 5 1 10 1;
-#X connect 5 2 7 0;
-#X connect 6 0 1 0;
-#X connect 7 0 6 1;
-#X connect 8 0 6 1;
-#X connect 9 0 7 0;
-#X connect 9 1 11 0;
-#X connect 9 2 8 0;
-#X connect 10 0 11 1;
-#X connect 11 0 10 0;
-#X connect 11 0 6 0;
-#X restore 59 196 pd synth;
-#X obj 61 66 t b l b;
-#X obj 61 31 inlet list-in;
-#X obj 56 239 outlet list-out;
-#X obj 261 242 outlet map-in;
-#X obj 281 29 inlet map-out;
-#X connect 0 0 5 0;
-#X connect 1 0 4 0;
-#X connect 2 0 1 0;
-#X connect 2 1 0 0;
-#X connect 2 2 1 1;
-#X connect 3 0 2 0;
-#X connect 6 0 1 0;
-#X restore 23 495 pd list-map;
-#N canvas 0 22 462 312 list-map 0;
-#N canvas 0 22 454 304 serial 0;
-#X obj 65 38 inlet;
-#X obj 53 227 outlet;
-#X obj 38 180 list split 1;
-#X obj 38 97 until;
-#X obj 38 135 list append;
-#X obj 64 64 t b l;
-#X obj 182 130 bang;
-#X connect 0 0 5 0;
-#X connect 2 0 1 0;
-#X connect 2 1 4 1;
-#X connect 2 2 6 0;
-#X connect 3 0 4 0;
-#X connect 4 0 2 0;
-#X connect 5 0 3 0;
-#X connect 5 1 4 1;
-#X connect 6 0 3 1;
-#X restore 76 106 pd serial;
-#N canvas 676 218 474 324 synth 0;
-#X obj 55 34 inlet;
-#X obj 107 266 outlet;
-#X obj 200 37 inlet reset;
-#X obj 55 61 route bang;
-#X obj 197 64 t b b b;
-#X obj 105 239 spigot;
-#X msg 250 171 0;
-#X msg 68 161 1;
-#X obj 50 102 t b b b;
-#X obj 185 169 list;
-#X obj 126 166 any;
-#X obj 134 99 t b l;
-#X connect 0 0 3 0;
-#X connect 2 0 4 0;
-#X connect 3 0 8 0;
-#X connect 3 1 11 0;
-#X connect 4 0 9 0;
-#X connect 4 1 9 1;
-#X connect 4 2 6 0;
-#X connect 5 0 1 0;
-#X connect 6 0 5 1;
-#X connect 7 0 5 1;
-#X connect 8 0 6 0;
-#X connect 8 1 10 0;
-#X connect 8 2 7 0;
-#X connect 9 0 10 1;
-#X connect 10 0 9 0;
-#X connect 10 0 5 0;
-#X connect 11 0 10 0;
-#X connect 11 1 9 1;
-#X restore 59 196 pd synth;
-#X obj 61 66 t b l b;
-#X obj 61 31 inlet list-in;
-#X obj 56 239 outlet list-out;
-#X obj 261 242 outlet map-in;
-#X obj 281 29 inlet map-out;
-#X connect 0 0 5 0;
-#X connect 1 0 4 0;
-#X connect 2 0 1 0;
-#X connect 2 1 0 0;
-#X connect 2 2 1 1;
-#X connect 3 0 2 0;
-#X connect 6 0 1 0;
-#X restore 195 497 pd list-map;
-#X text 257 536 dB;
-#X connect 1 0 8 0;
-#X connect 3 0 36 0;
-#X connect 3 1 37 0;
-#X connect 8 0 21 0;
-#X connect 12 0 11 0;
-#X connect 14 0 12 0;
-#X connect 15 0 17 0;
-#X connect 17 0 20 1;
-#X connect 18 0 19 0;
-#X connect 19 0 17 1;
-#X connect 20 0 3 0;
-#X connect 21 0 20 0;
-#X connect 21 1 15 0;
-#X connect 21 1 22 0;
-#X connect 22 0 35 1;
-#X connect 27 0 1 0;
-#X connect 29 0 18 0;
-#X connect 32 0 25 0;
-#X connect 33 0 25 0;
-#X connect 34 0 37 1;
-#X connect 35 0 36 1;
-#X connect 36 0 6 0;
-#X connect 36 1 35 0;
-#X connect 37 0 7 0;
-#X connect 37 1 34 0;
diff --git a/externals/grill/vasp/pd-ex/loudness.pd b/externals/grill/vasp/pd-ex/loudness.pd
deleted file mode 100644
index b4fe5710..00000000
--- a/externals/grill/vasp/pd-ex/loudness.pd
+++ /dev/null
@@ -1,207 +0,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-ex/wedit.pd b/externals/grill/vasp/pd-ex/wedit.pd
deleted file mode 100644
index ce3ab56b..00000000
--- a/externals/grill/vasp/pd-ex/wedit.pd
+++ /dev/null
@@ -1,1727 +0,0 @@
-#N canvas 52 39 754 360 10;
-#X obj 73 100 hsl 401 100 0 400 0 0 \$0-slider1snd \$0-slider1rcv empty
--2 -6 1728 8 -262144 -1 -1 0 0;
-#X obj 37 90 cnv 15 600 220 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#N canvas 389 97 591 525 inside 0;
-#N canvas 184 311 671 358 todo 0;
-#X floatatom 60 136 5 0 0 0 - - -;
-#X msg 60 173 \; \$2-p1b size \$1;
-#X obj 60 153 pack 0 \$0;
-#X msg 60 85 \; \$2-p1b color \$1;
-#X floatatom 60 48 5 0 0 0 - - -;
-#X obj 60 65 pack 0 \$0;
-#X text 210 57 wenn eine range den focus erhaelt (indem man in sie
-klickt) dann:;
-#X text 212 96 1 border changes to blue;
-#X text 211 115 2 other border gets black;
-#X text 211 136 3 middle is calculated;
-#X text 211 156 4 range min/max is set and tested;
-#N canvas 0 0 687 526 todo 0;
-#X text 51 126 noch kein scrollen und vergroessern;
-#X text 52 78 beim prototyp noch kein cursor (wird nicht so schnell
-kommen...;
-#X text 47 159 wavedisplay verwendet normale anzeige von pd;
-#X text 44 190 laengenanzeige in samples;
-#X text 78 12 todo;
-#X text 49 36 fuer das gop-tool muss die groesse variabel sein;
-#X text 53 220 record-moeglichkeit;
-#X text 47 246 preferences abspeichern: welches fileformat \, temporaere
-aufnahmedatei \, ab welcher groesse schreiben auf disk...;
-#X text 49 294 stereo-files...;
-#X restore 65 247 pd todo;
-#X text 79 13 only for testin \, debugging and todo list;
-#N canvas 0 0 476 326 reset 0;
-#X obj 183 177 s \$0-sm;
-#X obj 171 233 s \$0-rb;
-#X obj 123 230 s \$0-lb;
-#X msg 123 208 0;
-#X msg 171 212 400;
-#X obj 106 265 s \$0-redraw;
-#X obj 117 145 t b b b f;
-#X msg 145 102 1;
-#X obj 192 32 inlet;
-#X obj 221 72 symbol \$0-;
-#X msg 221 94 \; \$1 resize 400 \, bang;
-#X connect 3 0 2 0;
-#X connect 4 0 1 0;
-#X connect 6 0 5 0;
-#X connect 6 1 3 0;
-#X connect 6 2 4 0;
-#X connect 6 3 0 0;
-#X connect 7 0 6 0;
-#X connect 8 0 7 0;
-#X connect 8 0 9 0;
-#X connect 9 0 10 0;
-#X restore 150 242 pd reset;
-#X obj 150 223 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X connect 4 0 5 0;
-#X connect 5 0 3 0;
-#X connect 14 0 13 0;
-#X restore 373 70 pd todo;
-#N canvas 154 197 727 356 play 0;
-#X obj 266 115 r \$0-o;
-#X obj 309 87 r \$0-f;
-#X obj 266 156 pack 0 0;
-#X obj 51 197 outlet~;
-#X msg 370 100 stop;
-#X msg 266 177 set \$1 \$2;
-#X msg 51 123;
-#X msg 69 98 set bang;
-#X msg 149 69 set;
-#X obj 149 49 loadbang;
-#X obj 309 114 t b f;
-#X obj 266 233 spigot;
-#X obj 51 77 t b b b;
-#X msg 297 205 0;
-#X obj 233 75 t b b b;
-#X msg 334 206 1;
-#X text 155 260 loop not exactly a loop \, based on messages not samples
-;
-#X obj 51 158 tabplay~ \$0-;
-#X obj 412 22 r \$0-loopbutton;
-#X obj 233 10 r \$0-playbutton;
-#X obj 51 46 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X text 22 27 play all (not used);
-#X obj 233 50 sel 1 0;
-#X obj 233 32 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
-;
-#X obj 467 149 spigot;
-#X obj 412 68 sel 0 1;
-#X msg 412 90 1;
-#X msg 445 91 0;
-#X obj 541 66 loadbang;
-#X obj 412 46 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
-;
-#X obj 467 177 s \$0-stopped;
-#X obj 118 206 sel 1;
-#X obj 118 182 0;
-#X obj 118 253 sel 1;
-#X obj 118 228 0;
-#X connect 0 0 2 0;
-#X connect 1 0 10 0;
-#X connect 2 0 5 0;
-#X connect 4 0 17 0;
-#X connect 4 0 30 0;
-#X connect 5 0 11 0;
-#X connect 6 0 17 0;
-#X connect 7 0 6 0;
-#X connect 8 0 6 0;
-#X connect 9 0 8 0;
-#X connect 10 0 2 0;
-#X connect 10 1 2 1;
-#X connect 11 0 6 0;
-#X connect 12 0 6 0;
-#X connect 12 1 7 0;
-#X connect 12 2 13 0;
-#X connect 13 0 11 1;
-#X connect 14 0 6 0;
-#X connect 14 1 2 0;
-#X connect 14 2 15 0;
-#X connect 15 0 11 1;
-#X connect 17 0 3 0;
-#X connect 17 1 24 0;
-#X connect 17 1 32 0;
-#X connect 18 0 29 0;
-#X connect 19 0 23 0;
-#X connect 20 0 12 0;
-#X connect 22 0 14 0;
-#X connect 22 1 4 0;
-#X connect 23 0 22 0;
-#X connect 23 0 32 1;
-#X connect 24 0 30 0;
-#X connect 25 0 26 0;
-#X connect 25 1 27 0;
-#X connect 26 0 24 1;
-#X connect 27 0 24 1;
-#X connect 28 0 26 0;
-#X connect 29 0 25 0;
-#X connect 29 0 34 1;
-#X connect 31 0 34 0;
-#X connect 32 0 31 0;
-#X connect 33 0 6 0;
-#X connect 34 0 33 0;
-#X restore 87 242 pd play;
-#N canvas 0 0 484 334 zu_vasp 0;
-#X obj 73 96 r \$0-lb;
-#X obj 173 97 r \$0-rb;
-#X obj 138 177 -;
-#X obj 138 155 t b f;
-#X obj 73 148 s \$0-o;
-#X obj 138 198 s \$0-f;
-#X obj 220 97 r \$0-sm;
-#X obj 120 96 r \$0-sm;
-#X obj 73 124 * 1;
-#X obj 173 120 * 1;
-#X text 81 63 setzt offset und frames(length) in den vasp-objekten
-;
-#X obj 202 155 s \$0-rbs;
-#X connect 0 0 8 0;
-#X connect 1 0 9 0;
-#X connect 2 0 5 0;
-#X connect 3 0 2 0;
-#X connect 3 1 2 1;
-#X connect 6 0 9 1;
-#X connect 7 0 8 1;
-#X connect 8 0 4 0;
-#X connect 8 0 3 0;
-#X connect 9 0 2 0;
-#X connect 9 0 11 0;
-#X restore 88 197 pd zu_vasp;
-#N canvas 105 284 510 289 zu_sampledisplay 0;
-#X obj 63 46 r \$0-lb;
-#X obj 163 47 r \$0-rb;
-#X obj 128 127 -;
-#X obj 128 105 t b f;
-#X obj 210 47 r \$0-sm;
-#X obj 110 46 r \$0-sm;
-#X obj 63 74 * 1;
-#X obj 163 70 * 1;
-#X obj 63 156 div;
-#X obj 185 161 div;
-#X obj 275 161 div;
-#X obj 63 181 s \$0-lbs_displ;
-#X obj 185 183 s \$0-rs_displ;
-#X obj 275 183 s \$0-rbs_displ;
-#X msg 293 66 400;
-#X obj 293 45 loadbang;
-#X connect 0 0 6 0;
-#X connect 1 0 7 0;
-#X connect 2 0 9 0;
-#X connect 3 0 2 0;
-#X connect 3 1 2 1;
-#X connect 4 0 7 1;
-#X connect 5 0 6 1;
-#X connect 6 0 3 0;
-#X connect 6 0 8 0;
-#X connect 7 0 2 0;
-#X connect 7 0 10 0;
-#X connect 8 0 11 0;
-#X connect 9 0 12 0;
-#X connect 10 0 13 0;
-#X connect 14 0 7 0;
-#X connect 15 0 14 0;
-#X restore 88 218 pd zu_sampledisplay;
-#N canvas 78 106 492 180 playbuttons 0;
-#N canvas 0 0 443 463 playbutton 0;
-#X obj 41 72 tgl 12 0 \$0-playselection \$0-playselection_r empty 16
-6 1728 8 -262144 -1 -1 0 1;
-#X text 67 68 playselection;
-#X obj 41 42 r \$0-playbutton;
-#X obj 41 127 \$0;
-#X obj 59 178 \$0;
-#X msg 137 120 \; \$1-play_white color 11 \; \$1-play_dark color 0
-;
-#X msg 117 219 \; \$1-play_white color 0 \; \$1-play_dark color 11
-;
-#X msg 137 168 \; \$1-playbutton1 color 18;
-#X msg 116 267 \; \$1-playbutton1 color 16;
-#X obj 41 99 sel 1 0;
-#X obj 160 90 s \$0-playbutton;
-#X msg 160 68 set \$1;
-#X obj 81 392 s \$0-playbuttonr;
-#X obj 81 342 r \$0-stopped;
-#X msg 81 365 set 0;
-#X msg 48 366 0;
-#X connect 0 0 9 0;
-#X connect 0 0 11 0;
-#X connect 2 0 0 0;
-#X connect 3 0 5 0;
-#X connect 3 0 7 0;
-#X connect 4 0 6 0;
-#X connect 4 0 8 0;
-#X connect 9 0 3 0;
-#X connect 9 1 4 0;
-#X connect 11 0 10 0;
-#X connect 13 0 14 0;
-#X connect 13 0 15 0;
-#X connect 14 0 12 0;
-#X connect 15 0 0 0;
-#X restore 46 76 pd playbutton;
-#N canvas 0 0 490 451 loopbutton 0;
-#X obj 71 109 \$0;
-#X obj 89 199 \$0;
-#X obj 71 35 r \$0-loopbutton;
-#X msg 167 130 \; \$1-loop_white color 11 \; \$1-loop_dark color 0
-;
-#X msg 167 178 \; \$1-loopbutton1 color 18;
-#X msg 147 229 \; \$1-loop_white color 0 \; \$1-loop_dark color 11
-;
-#X msg 146 277 \; \$1-loopbutton1 color 16;
-#X text 90 55 playselection loop;
-#X obj 71 59 tgl 12 0 \$0-playselection_loop \$0-playselection_r_loop
-empty 16 6 1728 8 -262144 -1 -1 0 1;
-#X msg 255 79 set \$1;
-#X obj 255 101 s \$0-loopbutton;
-#X obj 71 77 sel 1 0;
-#X connect 0 0 3 0;
-#X connect 0 0 4 0;
-#X connect 1 0 5 0;
-#X connect 1 0 6 0;
-#X connect 2 0 8 0;
-#X connect 8 0 9 0;
-#X connect 8 0 11 0;
-#X connect 9 0 10 0;
-#X connect 11 0 0 0;
-#X connect 11 1 1 0;
-#X restore 138 76 pd loopbutton;
-#N canvas 54 27 582 413 recbutton 0;
-#X obj 61 148 tgl 12 0 \$0-playselection \$0-playselection_r empty
-16 6 1728 8 -262144 -1 -1 0 1;
-#X obj 73 260 \$0;
-#X obj 256 272 \$0;
-#X obj 61 175 sel 1 0;
-#X msg 142 187 set \$1;
-#X msg 380 224 set 0;
-#X msg 347 225 0;
-#X text 86 139 recselection;
-#X msg 95 289 \; \$1-rec_white color 11 \; \$1-rec_dark color 0;
-#X obj 380 251 s \$0-recbuttonr;
-#X obj 380 201 r \$0-recstopped;
-#X obj 41 42 r \$0-recbuttons;
-#X obj 142 209 s \$0-recbuttonr;
-#X msg 279 293 \; \$1-rec_white color 0 \; \$1-rec_dark color 11;
-#X msg 95 337 \; \$1-recbutton1 color 13;
-#X msg 278 342 \; \$1-recbutton1 color 23;
-#X obj 61 203 t b b;
-#X msg 41 67 \; pd-record_window vis 1;
-#X connect 0 0 3 0;
-#X connect 0 0 4 0;
-#X connect 1 0 8 0;
-#X connect 1 0 14 0;
-#X connect 2 0 13 0;
-#X connect 2 0 15 0;
-#X connect 3 0 16 0;
-#X connect 3 1 2 0;
-#X connect 4 0 12 0;
-#X connect 5 0 9 0;
-#X connect 6 0 0 0;
-#X connect 10 0 5 0;
-#X connect 10 0 6 0;
-#X connect 11 0 17 0;
-#X connect 16 1 1 0;
-#X restore 225 76 pd recbutton;
-#N canvas 54 27 586 417 recbutton2 0;
-#X obj 41 71 tgl 12 0 \$0-playselection \$0-playselection_r empty 16
-6 1728 8 -262144 -1 -1 0 1;
-#X obj 61 175 \$0;
-#X obj 236 196 \$0;
-#X obj 59 137 sel 1 0;
-#X msg 122 111 set \$1;
-#X msg 360 148 set 0;
-#X msg 327 149 0;
-#X text 60 59 recselection;
-#X obj 360 175 s \$0-recbuttonr;
-#X obj 360 125 r \$0-recstopped;
-#X obj 41 42 r \$0-recbutton2s;
-#X obj 122 133 s \$0-recbutton2r;
-#X msg 83 204 \; \$1-rec2_white color 11 \; \$1-rec2_dark color 0;
-#X msg 259 217 \; \$1-rec2_white color 0 \; \$1-rec2_dark color 11
-;
-#X msg 258 266 \; \$1-recbutton2 color 23;
-#X msg 83 252 \; \$1-recbutton2 color 13;
-#X text 215 35 this is the recbutton inside the rec_window;
-#X obj 41 304 s \$0-rec_1_0;
-#X obj 41 88 t f f f;
-#X connect 0 0 18 0;
-#X connect 1 0 12 0;
-#X connect 1 0 15 0;
-#X connect 2 0 13 0;
-#X connect 2 0 14 0;
-#X connect 3 0 1 0;
-#X connect 3 1 2 0;
-#X connect 4 0 11 0;
-#X connect 5 0 8 0;
-#X connect 6 0 0 0;
-#X connect 9 0 5 0;
-#X connect 9 0 6 0;
-#X connect 10 0 0 0;
-#X connect 18 0 17 0;
-#X connect 18 1 3 0;
-#X connect 18 2 4 0;
-#X restore 306 76 pd recbutton2;
-#X restore 88 176 pd playbuttons;
-#N canvas 0 0 467 508 reduce 0;
-#X obj 166 199 vasp.!;
-#X text 192 70 reduce to selection;
-#X obj 166 177 vasp.o;
-#X obj 135 246 vasp.u;
-#X obj 166 156 vasp.f;
-#X obj 197 122 r \$0-f;
-#X obj 216 178 r \$0-o;
-#X obj 94 171 vasp.s;
-#X obj 135 224 vasp.=;
-#X obj 282 221 * 0.0025;
-#X obj 269 252 0;
-#X obj 318 302 s \$0-sm;
-#X obj 334 367 s \$0-rb;
-#X obj 285 364 s \$0-lb;
-#X msg 285 342 0;
-#X msg 334 346 400;
-#X obj 269 399 s \$0-redraw;
-#X obj 269 278 t b b b f;
-#X obj 76 133 t b a a;
-#X obj 76 87 symbol \$0-;
-#X msg 76 110 vasp \$1;
-#X obj 76 60 r \$0-reduce;
-#X connect 0 0 8 1;
-#X connect 2 0 0 0;
-#X connect 4 0 2 0;
-#X connect 5 0 4 1;
-#X connect 5 0 7 1;
-#X connect 5 0 9 0;
-#X connect 6 0 2 1;
-#X connect 7 0 8 0;
-#X connect 8 0 3 0;
-#X connect 9 0 10 1;
-#X connect 10 0 17 0;
-#X connect 14 0 13 0;
-#X connect 15 0 12 0;
-#X connect 17 0 16 0;
-#X connect 17 1 14 0;
-#X connect 17 2 15 0;
-#X connect 17 3 11 0;
-#X connect 18 0 10 0;
-#X connect 18 1 7 0;
-#X connect 18 2 4 0;
-#X connect 19 0 20 0;
-#X connect 20 0 18 0;
-#X connect 21 0 19 0;
-#X restore 391 339 pd reduce;
-#N canvas 0 0 315 215 mute 0;
-#X obj 42 124 vasp.= 0;
-#X obj 42 95 vasp.o;
-#X obj 42 156 vasp.u;
-#X obj 42 74 vasp.f;
-#X obj 118 50 r \$0-f;
-#X obj 89 98 r \$0-o;
-#X obj 42 17 symbol \$0-;
-#X msg 42 38 vasp \$1;
-#X obj 192 114 r \$0-set_0;
-#X connect 0 0 2 0;
-#X connect 1 0 0 0;
-#X connect 3 0 1 0;
-#X connect 4 0 3 1;
-#X connect 5 0 1 1;
-#X connect 6 0 7 0;
-#X connect 7 0 3 0;
-#X connect 8 0 6 0;
-#X restore 391 316 pd mute;
-#N canvas 0 0 320 310 noise 0;
-#X obj 115 153 vasp.o;
-#X obj 115 214 vasp.u;
-#X obj 115 132 vasp.f;
-#X obj 191 108 r \$0-f;
-#X obj 162 156 r \$0-o;
-#X obj 115 182 vasp.noise;
-#X obj 115 73 symbol \$0-;
-#X msg 115 96 vasp \$1;
-#X obj 115 43 r \$0-noise;
-#X connect 0 0 5 0;
-#X connect 2 0 0 0;
-#X connect 3 0 2 1;
-#X connect 4 0 0 1;
-#X connect 5 0 1 0;
-#X connect 6 0 7 0;
-#X connect 7 0 2 0;
-#X connect 8 0 6 0;
-#X restore 392 401 pd noise;
-#N canvas 420 161 466 480 open 0;
-#X obj 68 61 openpanel;
-#X obj 68 159 soundfiler;
-#X obj 68 214 * 0.0025;
-#X text 131 214 (dasselbe wie / 400 );
-#X obj 124 307 s \$0-sm;
-#X obj 79 89 s \$0-opened;
-#X obj 122 368 s \$0-rb;
-#X obj 74 365 s \$0-lb;
-#X msg 74 343 0;
-#X msg 122 347 400;
-#X obj 42 398 s \$0-redraw;
-#X obj 88 185 s \$0-length;
-#X text 172 184 (not used yet);
-#X obj 68 116 pack s s;
-#X obj 267 83 symbol \$0-;
-#X obj 267 58 loadbang;
-#X obj 322 56 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X msg 68 136 read -resize \$1 \$2;
-#X obj 68 280 t b b b f;
-#X obj 68 37 r \$0-open;
-#X connect 0 0 5 0;
-#X connect 0 0 13 0;
-#X connect 1 0 2 0;
-#X connect 1 0 11 0;
-#X connect 2 0 18 0;
-#X connect 8 0 7 0;
-#X connect 9 0 6 0;
-#X connect 13 0 17 0;
-#X connect 14 0 13 1;
-#X connect 15 0 14 0;
-#X connect 16 0 14 0;
-#X connect 17 0 1 0;
-#X connect 18 0 10 0;
-#X connect 18 1 8 0;
-#X connect 18 2 9 0;
-#X connect 18 3 4 0;
-#X connect 19 0 0 0;
-#X restore 391 253 pd open;
-#N canvas 0 0 460 310 save 0;
-#X obj 130 277 soundfiler;
-#X msg 144 146 set symbol \$1;
-#X obj 189 119 r \$0-opened;
-#X msg 131 178;
-#X msg 80 153 set;
-#X obj 80 122 loadbang;
-#X obj 131 231 pack s s;
-#X obj 174 207 symbol \$0-;
-#X obj 174 185 loadbang;
-#X msg 130 255 write -wave \$1 \$2;
-#X obj 131 78 r \$0-save;
-#X connect 1 0 3 0;
-#X connect 2 0 1 0;
-#X connect 3 0 6 0;
-#X connect 4 0 3 0;
-#X connect 5 0 4 0;
-#X connect 6 0 9 0;
-#X connect 7 0 6 1;
-#X connect 8 0 7 0;
-#X connect 9 0 0 0;
-#X connect 10 0 3 0;
-#X restore 391 274 pd save;
-#N canvas 0 0 377 253 save_as 0;
-#X obj 130 187 soundfiler;
-#X obj 217 112 symbol \$0-;
-#X obj 217 88 loadbang;
-#X obj 130 142 pack s s;
-#X msg 130 165 write -wave \$1 \$2;
-#X obj 130 80 r \$0-save_as;
-#X obj 130 107 savepanel;
-#X connect 1 0 3 1;
-#X connect 2 0 1 0;
-#X connect 3 0 4 0;
-#X connect 4 0 0 0;
-#X connect 5 0 6 0;
-#X connect 6 0 3 0;
-#X restore 391 295 pd save_as;
-#N canvas 253 35 637 598 cut 0;
-#X obj 242 170 r \$0-o;
-#X obj 502 118 r \$0-rbs;
-#X obj 198 193 vasp.f;
-#X obj 445 117 r \$0-sm;
-#X msg 432 150 400;
-#X obj 432 177 * 1;
-#X obj 432 200 - 0;
-#X obj 400 225 vasp.f;
-#X obj 400 254 vasp.o;
-#X obj 198 271 vasp.!;
-#X obj 400 283 vasp.!;
-#X obj 229 241 +;
-#X text 466 200 frames ab rb;
-#X text 281 173 frames 0-lb;
-#X text 256 244 gesamtframes;
-#X obj 62 332 vasp.=;
-#X obj 123 96 t a a a b;
-#X obj 62 438 vasp.=;
-#X obj 62 414 vasp.o;
-#X obj 62 461 vasp.u;
-#X obj 461 442 s \$0-sm;
-#X obj 477 504 s \$0-rb;
-#X obj 428 504 s \$0-lb;
-#X msg 428 482 0;
-#X msg 477 483 400;
-#X obj 412 539 s \$0-redraw;
-#X obj 412 418 t b b b f;
-#X obj 425 374 * 0.0025;
-#X obj 412 396 0;
-#X obj 400 307 t b a;
-#X obj 151 383 r \$0-o;
-#X text 193 384 frames 0-lb;
-#X obj 198 332 t b a;
-#X msg 62 484 bang;
-#X obj 62 309 vasp.s;
-#X obj 62 381 vasp.f;
-#X obj 123 49 symbol \$0-;
-#X msg 123 72 vasp \$1;
-#X obj 123 27 r \$0-cut;
-#X obj 62 261 symbol \$0-;
-#X msg 62 284 vasp \$1;
-#X obj 174 143 symbol \$0-;
-#X msg 174 166 vasp \$1;
-#X connect 0 0 2 1;
-#X connect 0 0 11 1;
-#X connect 1 0 6 1;
-#X connect 1 0 8 1;
-#X connect 2 0 9 0;
-#X connect 3 0 5 1;
-#X connect 4 0 5 0;
-#X connect 5 0 6 0;
-#X connect 6 0 7 1;
-#X connect 6 0 11 0;
-#X connect 6 0 35 1;
-#X connect 7 0 8 0;
-#X connect 8 0 10 0;
-#X connect 9 0 32 0;
-#X connect 10 0 29 0;
-#X connect 11 0 27 0;
-#X connect 11 0 9 1;
-#X connect 11 0 34 1;
-#X connect 15 0 35 0;
-#X connect 16 2 7 0;
-#X connect 16 3 4 0;
-#X connect 17 0 19 0;
-#X connect 18 0 17 0;
-#X connect 19 0 33 0;
-#X connect 23 0 22 0;
-#X connect 24 0 21 0;
-#X connect 26 0 25 0;
-#X connect 26 1 23 0;
-#X connect 26 2 24 0;
-#X connect 26 3 20 0;
-#X connect 27 0 28 1;
-#X connect 28 0 26 0;
-#X connect 29 0 41 0;
-#X connect 29 1 17 1;
-#X connect 30 0 18 1;
-#X connect 32 0 39 0;
-#X connect 32 1 15 1;
-#X connect 33 0 28 0;
-#X connect 34 0 15 0;
-#X connect 35 0 18 0;
-#X connect 36 0 37 0;
-#X connect 37 0 16 0;
-#X connect 38 0 36 0;
-#X connect 39 0 40 0;
-#X connect 40 0 34 0;
-#X connect 41 0 42 0;
-#X connect 42 0 2 0;
-#X restore 391 360 pd cut;
-#N canvas 0 0 382 262 fade_in 0;
-#X obj 121 149 vasp.o;
-#X obj 121 199 vasp.u;
-#X obj 260 110 r \$0-f;
-#X obj 168 147 r \$0-o;
-#X obj 121 124 vasp.f;
-#X obj 121 175 vasp.*window lin;
-#X obj 121 70 symbol \$0-;
-#X msg 121 93 vasp \$1;
-#X obj 121 46 r \$0-fade_in;
-#X connect 0 0 5 0;
-#X connect 2 0 4 1;
-#X connect 3 0 0 1;
-#X connect 4 0 0 0;
-#X connect 5 0 1 0;
-#X connect 6 0 7 0;
-#X connect 7 0 4 0;
-#X connect 8 0 6 0;
-#X restore 391 212 pd fade_in;
-#N canvas 0 0 474 324 fade_out 0;
-#X obj 121 143 vasp.o;
-#X obj 121 192 vasp.u;
-#X obj 260 110 r \$0-f;
-#X obj 163 143 r \$0-o;
-#X obj 121 118 vasp.f;
-#X obj 121 169 vasp.*!window lin;
-#X obj 121 75 symbol \$0-;
-#X msg 121 98 vasp \$1;
-#X obj 121 52 r \$0-fade_out;
-#X connect 0 0 5 0;
-#X connect 2 0 4 1;
-#X connect 3 0 0 1;
-#X connect 4 0 0 0;
-#X connect 5 0 1 0;
-#X connect 6 0 7 0;
-#X connect 7 0 4 0;
-#X connect 8 0 6 0;
-#X restore 391 233 pd fade_out;
-#N canvas 150 120 487 446 send_array 0;
-#X obj 120 212 vasp.s;
-#X obj 191 187 r \$0-sm;
-#X obj 191 208 * 400;
-#X obj 120 233 vasp.f;
-#X obj 120 275 vasp.u;
-#X obj 264 81 symbol \$1;
-#X obj 264 57 loadbang;
-#X obj 264 104 makefilename test%s;
-#X obj 264 127 sel test;
-#X obj 81 69 r \$0-toarray;
-#X obj 81 130 sel 0 1;
-#X obj 81 104 0;
-#X msg 264 151 0;
-#X obj 81 362 print send_to_array_not_possible;
-#X msg 81 338 no initial array-argument given;
-#X obj 120 163 symbol \$1;
-#X msg 307 152 1;
-#X msg 120 185 vasp \$1;
-#X obj 120 254 vasp.= \$0-;
-#X connect 0 0 3 0;
-#X connect 1 0 2 0;
-#X connect 2 0 0 1;
-#X connect 2 0 3 1;
-#X connect 3 0 18 0;
-#X connect 5 0 7 0;
-#X connect 6 0 5 0;
-#X connect 7 0 8 0;
-#X connect 8 0 12 0;
-#X connect 8 1 16 0;
-#X connect 9 0 11 0;
-#X connect 10 0 14 0;
-#X connect 10 1 15 0;
-#X connect 11 0 10 0;
-#X connect 12 0 11 1;
-#X connect 14 0 13 0;
-#X connect 15 0 17 0;
-#X connect 16 0 11 1;
-#X connect 17 0 0 0;
-#X connect 18 0 4 0;
-#X restore 392 423 pd send_array;
-#N canvas 159 26 253 308 output 0;
-#X obj 22 181 inlet~;
-#X obj 83 78 inlet;
-#X msg 98 104 \; pd dsp 1;
-#X obj 83 194 line~;
-#X obj 22 212 *~;
-#X obj 22 241 dac~;
-#X obj 83 171 pack 0 50;
-#X connect 0 0 4 0;
-#X connect 1 0 2 0;
-#X connect 1 0 6 0;
-#X connect 3 0 4 1;
-#X connect 4 0 5 0;
-#X connect 4 0 5 1;
-#X connect 6 0 3 0;
-#X restore 87 290 pd output;
-#N canvas 150 120 772 527 reload_array 0;
-#X obj 361 93 symbol \$1;
-#X obj 348 44 loadbang;
-#X obj 361 116 makefilename test%s;
-#X obj 361 139 sel test;
-#X msg 361 163 0;
-#X msg 146 416 no initial array-argument given;
-#X msg 404 164 1;
-#X obj 348 65 t b b;
-#X obj 348 228 0;
-#X obj 197 43 r \$0-reloadarray;
-#X obj 437 286 symbol \$1;
-#X obj 437 333 vasp.s?;
-#X obj 366 301 symbol \$0-;
-#X obj 366 347 vasp.s;
-#X obj 366 368 vasp.f;
-#X msg 422 396 vasp \$1;
-#X obj 366 416 vasp.=;
-#X obj 422 374 symbol \$1;
-#X obj 366 278 t b b b;
-#X obj 366 440 vasp.u;
-#X text 403 241 load default array into editor \, if argument is given...
-;
-#X obj 545 334 * 0.0025;
-#X obj 601 385 s \$0-sm;
-#X obj 599 446 s \$0-rb;
-#X obj 551 443 s \$0-lb;
-#X msg 551 421 0;
-#X msg 599 425 400;
-#X obj 519 476 s \$0-redraw;
-#X obj 545 358 t b b b f;
-#X obj 197 208 0;
-#X obj 197 234 sel 0 1;
-#X obj 348 255 sel 1;
-#X obj 146 440 print reload_array_not_possible;
-#X msg 437 309 vasp \$1;
-#X msg 366 322 vasp \$1;
-#X connect 0 0 2 0;
-#X connect 1 0 7 0;
-#X connect 2 0 3 0;
-#X connect 3 0 4 0;
-#X connect 3 1 6 0;
-#X connect 4 0 8 1;
-#X connect 4 0 29 1;
-#X connect 5 0 32 0;
-#X connect 6 0 8 1;
-#X connect 6 0 29 1;
-#X connect 7 0 8 0;
-#X connect 7 1 0 0;
-#X connect 8 0 31 0;
-#X connect 9 0 29 0;
-#X connect 10 0 33 0;
-#X connect 11 0 13 1;
-#X connect 11 0 14 1;
-#X connect 11 0 21 0;
-#X connect 12 0 34 0;
-#X connect 13 0 14 0;
-#X connect 14 0 16 0;
-#X connect 15 0 16 1;
-#X connect 16 0 19 0;
-#X connect 17 0 15 0;
-#X connect 18 0 12 0;
-#X connect 18 1 10 0;
-#X connect 18 2 17 0;
-#X connect 21 0 28 0;
-#X connect 25 0 24 0;
-#X connect 26 0 23 0;
-#X connect 28 0 27 0;
-#X connect 28 1 25 0;
-#X connect 28 2 26 0;
-#X connect 28 3 22 0;
-#X connect 29 0 30 0;
-#X connect 30 0 5 0;
-#X connect 30 1 18 0;
-#X connect 31 0 18 0;
-#X connect 33 0 11 0;
-#X connect 34 0 13 0;
-#X restore 391 445 pd reload_array;
-#N canvas 0 0 392 272 normalize 0;
-#X obj 121 149 vasp.o;
-#X obj 121 199 vasp.u;
-#X obj 260 110 r \$0-f;
-#X obj 168 147 r \$0-o;
-#X obj 121 124 vasp.f;
-#X obj 121 70 symbol \$0-;
-#X msg 121 93 vasp \$1;
-#X obj 121 176 vasp.opt;
-#X obj 121 46 r \$0-normalize;
-#X connect 0 0 7 0;
-#X connect 2 0 4 1;
-#X connect 3 0 0 1;
-#X connect 4 0 0 0;
-#X connect 5 0 6 0;
-#X connect 6 0 4 0;
-#X connect 7 0 1 0;
-#X connect 8 0 5 0;
-#X restore 391 381 pd normalize;
-#N canvas 99 249 567 524 volume 0;
-#X obj 133 164 dbtopow;
-#X obj 77 137 0;
-#X obj 133 139 + 100;
-#X obj 77 113 t b;
-#X obj 77 84 route 0;
-#X msg 134 221 -50;
-#X obj 357 314 + 950;
-#X obj 412 315 moses -50;
-#X obj 357 415 0;
-#X msg 461 372 -1000;
-#X msg 357 441 set \$1;
-#X obj 357 292 moses -500;
-#X obj 357 341 min 0;
-#X obj 296 268 moses -1000;
-#X msg 296 291 -1000;
-#X msg 412 341 -1000;
-#X obj 247 244 sel -1000;
-#X obj 461 343 sel -50;
-#X obj 239 394 max -50;
-#X msg 239 435 set \$1;
-#X obj 239 415 + 50;
-#X obj 357 464 s \$0-voldisplr;
-#X obj 77 221 outlet;
-#X obj 239 456 s \$0-volr;
-#X obj 133 112 - 50;
-#X obj 77 60 r \$0-vols;
-#X obj 247 200 r \$0-voldispls;
-#X obj 202 151 dbtopow;
-#X obj 202 126 + 100;
-#X connect 0 0 22 0;
-#X connect 1 0 5 0;
-#X connect 1 0 22 0;
-#X connect 2 0 0 0;
-#X connect 3 0 1 0;
-#X connect 4 0 3 0;
-#X connect 4 1 24 0;
-#X connect 5 0 16 0;
-#X connect 6 0 12 0;
-#X connect 7 0 15 0;
-#X connect 7 1 17 0;
-#X connect 8 0 10 0;
-#X connect 8 0 18 0;
-#X connect 9 0 8 0;
-#X connect 10 0 21 0;
-#X connect 11 0 6 0;
-#X connect 11 1 7 0;
-#X connect 12 0 8 0;
-#X connect 13 0 14 0;
-#X connect 13 1 11 0;
-#X connect 14 0 8 0;
-#X connect 15 0 8 0;
-#X connect 16 0 14 0;
-#X connect 16 1 13 0;
-#X connect 17 0 9 0;
-#X connect 17 1 8 0;
-#X connect 18 0 20 0;
-#X connect 19 0 23 0;
-#X connect 20 0 19 0;
-#X connect 24 0 2 0;
-#X connect 24 0 16 0;
-#X connect 25 0 4 0;
-#X connect 26 0 16 0;
-#X connect 28 0 27 0;
-#X restore 136 242 pd volume;
-#N canvas 424 244 323 150 record_window 0;
-#X obj 17 15 cnv 15 280 120 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 157 33 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
-;
-#X text 181 30 record into RAM;
-#X obj 157 57 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
-;
-#X text 180 55 record to harddisk;
-#X obj 34 51 tgl 18 0 \$0-recbutton2s \$0-recbutton2r empty 0 -6 1728
-8 -262144 -1 -1 0 1;
-#X obj 29 47 cnv 15 28 25 empty empty empty 0 -10 1 10 -233017 -1 0
-;
-#X obj 32 51 cnv 15 20 15 empty \$0-rec2_white empty 20 12 576 14 -262144
--262144 0;
-#X obj 34 53 cnv 15 20 15 empty \$0-rec2_dark empty 20 12 576 14 -128992
--262144 0;
-#X obj 33 52 cnv 15 20 15 empty \$0-rec2_normal empty 20 12 576 14
--233017 -66577 0;
-#X obj 40 56 cnv 1 1 1 empty \$0-recbutton2 empty 20 12 576 14 -143491
--262144 0;
-#X obj 42 56 cnv 1 1 1 empty \$0-recbutton2 empty 20 12 576 14 -143491
--262144 0;
-#X obj 44 56 cnv 1 1 1 empty \$0-recbutton2 empty 20 12 576 14 -143491
--262144 0;
-#X obj 39 57 cnv 1 1 1 empty \$0-recbutton2 empty 20 12 576 14 -143491
--262144 0;
-#X obj 41 57 cnv 1 1 1 empty \$0-recbutton2 empty 20 12 576 14 -143491
--262144 0;
-#X obj 43 57 cnv 1 1 1 empty \$0-recbutton2 empty 20 12 576 14 -143491
--262144 0;
-#X obj 41 60 cnv 1 1 1 empty \$0-recbutton2 empty 20 12 576 14 -143491
--262144 0;
-#X obj 45 60 cnv 1 1 1 empty \$0-recbutton2 empty 20 12 576 14 -143491
--262144 0;
-#X obj 45 57 cnv 1 1 1 empty \$0-recbutton2 empty 20 12 576 14 -143491
--262144 0;
-#X obj 43 60 cnv 1 1 1 empty \$0-recbutton2 empty 20 12 576 14 -143491
--262144 0;
-#X obj 42 61 cnv 1 1 1 empty \$0-recbutton2 empty 20 12 576 14 -143491
--262144 0;
-#X obj 39 59 cnv 1 1 1 empty \$0-recbutton2 empty 20 12 576 14 -143491
--262144 0;
-#X obj 39 60 cnv 1 1 1 empty \$0-recbutton2 empty 20 12 576 14 -143491
--262144 0;
-#X obj 40 61 cnv 1 1 1 empty \$0-recbutton2 empty 20 12 576 14 -143491
--262144 0;
-#X obj 43 59 cnv 1 1 1 empty \$0-recbutton2 empty 20 12 576 14 -143491
--262144 0;
-#X obj 44 61 cnv 1 1 1 empty \$0-recbutton2 empty 20 12 576 14 -143491
--262144 0;
-#X obj 41 58 cnv 1 1 1 empty \$0-recbutton2 empty 20 12 576 14 -143491
--262144 0;
-#X obj 45 59 cnv 1 1 1 empty \$0-recbutton2 empty 20 12 576 14 -143491
--262144 0;
-#X obj 100 34 vu 15 80 \$0-vu1 empty -1 -8 576 8 -66577 -1 1 0;
-#X text 181 97 monitor;
-#X obj 158 99 tgl 15 0 \$0-monis empty empty 0 -6 1152 8 -262144 -1
--1 0 1;
-#X text 29 72 start/;
-#X text 29 83 stop;
-#X restore 391 133 pd record_window;
-#X obj 391 155 inlet~;
-#N canvas 179 201 394 282 range_main 0;
-#X floatatom 166 34 5 0 0 0 - - -;
-#N canvas 207 450 365 322 s-key-handling 0;
-#X floatatom 111 119 5 0 0 0 - - -;
-#N canvas 83 38 600 551 keyinput_s 0;
-#X obj 186 25 keyname;
-#X obj 84 446 spigot;
-#X obj 179 172 0;
-#X obj 179 116 symbol;
-#X msg 179 88 bang;
-#X obj 179 369 sel 1;
-#X msg 179 393 1;
-#X msg 152 393 0;
-#X obj 152 414 s \$0-spig1;
-#X obj 227 415 s \$0-spig1;
-#X msg 227 394 1;
-#X msg 254 394 0;
-#X obj 179 345 change;
-#X obj 84 67 inlet;
-#X obj 84 472 outlet;
-#X obj 179 144 sel s;
-#X text 276 67 if key "s" is down \, then input is let through;
-#X text 332 85 shifts display;
-#X obj 243 473 outlet;
-#X obj 179 223 t b b 0;
-#X obj 201 266 delay 100;
-#X msg 201 245 stop;
-#X obj 179 201 sel 0 1;
-#X obj 179 313 0;
-#X msg 179 289 1;
-#X text 255 242 linux and win have different up/down behaviour...;
-#X text 232 297 only if there is no new input for 100 ms after 0 \,
-0 is sent out;
-#X floatatom 273 365 5 0 0 0 - - -;
-#X obj 360 475 outlet;
-#X obj 442 479 s \$0-res;
-#X connect 0 0 2 1;
-#X connect 0 0 4 0;
-#X connect 0 1 3 1;
-#X connect 1 0 14 0;
-#X connect 2 0 22 0;
-#X connect 3 0 15 0;
-#X connect 4 0 3 0;
-#X connect 5 0 6 0;
-#X connect 5 0 7 0;
-#X connect 5 0 18 0;
-#X connect 5 0 29 0;
-#X connect 5 1 10 0;
-#X connect 5 1 11 0;
-#X connect 6 0 1 1;
-#X connect 6 0 28 0;
-#X connect 7 0 8 0;
-#X connect 10 0 9 0;
-#X connect 11 0 1 1;
-#X connect 11 0 28 0;
-#X connect 12 0 5 0;
-#X connect 12 0 27 0;
-#X connect 13 0 1 0;
-#X connect 15 0 2 0;
-#X connect 19 0 20 0;
-#X connect 19 1 21 0;
-#X connect 19 2 23 1;
-#X connect 20 0 23 0;
-#X connect 21 0 20 0;
-#X connect 22 0 19 0;
-#X connect 22 1 24 0;
-#X connect 23 0 12 0;
-#X connect 24 0 23 0;
-#X restore 97 93 pd keyinput_s;
-#N canvas 271 177 490 458 s_handling 0;
-#X obj 85 27 inlet;
-#X msg 85 272 set \$1;
-#X obj 85 249 0;
-#X obj 85 202 -;
-#X obj 85 225 t b f;
-#X obj 185 302 s \$0-shiftsel;
-#X obj 204 28 inlet;
-#X text 255 82 first position after hit is ref;
-#X obj 173 116 spigot;
-#X msg 204 82 1;
-#X obj 173 145 t f b;
-#X msg 178 82 0;
-#X text 203 12 down;
-#X obj 85 84 t f f;
-#X obj 85 302 s \$0-slider1rcv;
-#X obj 272 127 inlet;
-#X floatatom 272 164 1 0 1 0 - - -;
-#X msg 272 206 \; \$2-slider1rcv steady \$1;
-#X obj 272 184 pack 0 \$0;
-#X text 289 161 0 ist jump;
-#X connect 0 0 13 0;
-#X connect 1 0 14 0;
-#X connect 2 0 1 0;
-#X connect 3 0 4 0;
-#X connect 4 0 2 0;
-#X connect 4 1 5 0;
-#X connect 6 0 9 0;
-#X connect 8 0 10 0;
-#X connect 9 0 8 1;
-#X connect 10 0 3 1;
-#X connect 10 0 2 1;
-#X connect 10 1 11 0;
-#X connect 11 0 8 1;
-#X connect 13 0 3 0;
-#X connect 13 1 8 0;
-#X connect 15 0 16 0;
-#X connect 16 0 18 0;
-#X connect 18 0 17 0;
-#X restore 97 155 pd s_handling;
-#X obj 97 66 r \$0-slider1snd;
-#X connect 1 0 0 0;
-#X connect 1 0 2 0;
-#X connect 1 1 2 1;
-#X connect 1 2 2 2;
-#X connect 3 0 1 0;
-#X restore 220 133 pd s-key-handling;
-#X obj 57 33 r \$0-slider1snd;
-#X obj 88 61 r \$0-spig1;
-#X obj 57 109 spigot;
-#X text 104 108 from s-key-handler;
-#X obj 157 61 loadbang;
-#X msg 157 82 1;
-#X obj 220 155 r \$0-shiftsel;
-#N canvas 0 8 984 619 sliderhandling_with_s_key 0;
-#X obj 57 197 pack 0 0;
-#X obj 57 172 0;
-#X obj 70 150 r \$0-focus;
-#X obj 332 312 s \$0-focus;
-#X msg 345 197 1;
-#X msg 409 197 2;
-#X obj 57 130 t b f;
-#X obj 133 369 max 0;
-#X obj 170 368 - 1;
-#X obj 330 348 + 1;
-#X obj 293 394 min 400;
-#X obj 133 391 min 399;
-#X obj 57 219 route 1 2;
-#X obj 332 288 0;
-#X obj 345 264 spigot;
-#X obj 57 479 400;
-#X obj 57 504 - 1;
-#X obj 312 108 moses 201;
-#X obj 57 93 t f b f;
-#X msg 388 264 1;
-#X obj 388 242 loadbang;
-#X obj 429 392 s \$0-allblack;
-#X msg 429 349 stop \, bang;
-#X obj 429 370 delay 200;
-#X msg 376 197 0;
-#X msg 374 63 0.1;
-#X obj 361 86 + 0;
-#X msg 402 63 -0.1;
-#X obj 375 132 t f b b b;
-#X obj 312 132 t f b b b;
-#X obj 277 193 400;
-#X obj 277 215 - 0;
-#X obj 277 236 * 0.5;
-#X obj 277 257 +;
-#X obj 277 169 t b f f;
-#X text 365 28 wenn rechter bewegt wird \, muss mitte leicht nach links
-verschoben werden / links umgekehrt.;
-#X text 206 167 find middle;
-#X obj 184 424 s \$0-lb;
-#X obj 344 414 s \$0-rb;
-#N canvas 109 66 445 354 lb_graphics 0;
-#X msg 233 182 18;
-#X msg 277 178 -1;
-#X obj 233 205 change;
-#X obj 53 230 pack 0 \$0;
-#X obj 233 227 pack 0 \$0;
-#X obj 277 151 r \$0-allblack;
-#X obj 112 197 pack 0 \$0;
-#X obj 266 98 inlet;
-#X obj 219 127 inlet;
-#X obj 77 99 inlet;
-#X msg 53 254 \; \$2-p1 pos \$1 100;
-#X msg 233 250 \; \$2-p1 color \$1 100;
-#X obj 114 173 + 73;
-#X obj 53 206 + 72;
-#X msg 112 221 \; \$2-p1b pos \$1 100;
-#X connect 0 0 2 0;
-#X connect 1 0 2 0;
-#X connect 2 0 4 0;
-#X connect 3 0 10 0;
-#X connect 4 0 11 0;
-#X connect 5 0 1 0;
-#X connect 6 0 14 0;
-#X connect 7 0 1 0;
-#X connect 8 0 0 0;
-#X connect 9 0 12 0;
-#X connect 9 0 13 0;
-#X connect 12 0 6 0;
-#X connect 13 0 3 0;
-#X restore 132 498 pd lb_graphics;
-#N canvas 0 0 522 353 rb_graphics 0;
-#X msg 134 149 18;
-#X msg 106 149 -1;
-#X obj 106 173 change;
-#X obj 213 183 pack 0 \$0;
-#X obj 106 195 pack 0 \$0;
-#X msg 106 218 \; \$2-p2 color \$1 0;
-#X obj 106 123 r \$0-allblack;
-#X obj 285 161 pack 0 \$0;
-#X obj 91 79 inlet;
-#X obj 304 57 inlet;
-#X obj 213 117 inlet;
-#X obj 213 161 + 72;
-#X obj 285 137 + 73;
-#X msg 213 218 \; \$2-p2 pos \$1 100;
-#X msg 285 185 \; \$2-p2b pos \$1 100;
-#X connect 0 0 2 0;
-#X connect 1 0 2 0;
-#X connect 2 0 4 0;
-#X connect 3 0 13 0;
-#X connect 4 0 5 0;
-#X connect 6 0 1 0;
-#X connect 7 0 14 0;
-#X connect 8 0 1 0;
-#X connect 9 0 0 0;
-#X connect 10 0 11 0;
-#X connect 10 0 12 0;
-#X connect 11 0 3 0;
-#X connect 12 0 7 0;
-#X restore 272 505 pd rb_graphics;
-#X obj 57 280 t b b;
-#N canvas 133 97 350 233 selcnv_graphics 0;
-#X obj 40 25 inlet;
-#X floatatom 158 29 5 0 0 0 - - -;
-#X obj 40 83 pack 0 \$0;
-#X text 164 45 rchte border - linke;
-#X msg 40 113 \; \$2-p1b vis_size \$1 100;
-#X connect 0 0 2 0;
-#X connect 1 0 2 0;
-#X connect 2 0 4 0;
-#X restore 57 528 pd selcnv_graphics;
-#X text 370 330 after 200 ms without moving focus reset;
-#X obj 537 79 inlet;
-#X obj 582 136 r \$0-lb;
-#X obj 664 138 r \$0-rb;
-#X obj 584 268 max 0;
-#X text 629 238 wenns links oder rechts ansteht \, darfst nicht mehr
-verrueckt werden;
-#X msg 664 191 400;
-#X obj 664 168 t b f;
-#X obj 752 344 +;
-#X obj 582 174 * -1;
-#X obj 664 214 - 0;
-#X obj 584 244 min 0;
-#X obj 765 323 - 0;
-#X obj 765 300 t b f;
-#X obj 628 293 + 0;
-#X text 790 325 range;
-#X obj 537 185 + 0;
-#X obj 537 210 0;
-#X text 629 266 range in der sich delta lb bewegen darf;
-#X obj 679 424 * 0.5;
-#X obj 666 449 +;
-#X obj 666 471 s \$0-mid;
-#X obj 293 56 r \$0-mid;
-#X obj 184 444 r \$0-lb;
-#X obj 344 434 r \$0-rb;
-#X obj 628 385 s \$0-lb;
-#X obj 752 368 s \$0-rb;
-#X obj 628 359 t f f f;
-#X obj 57 52 inlet;
-#X obj 499 145 r \$0-res;
-#X msg 500 168 0;
-#X obj 133 413 t b f;
-#X obj 293 416 t b f;
-#X text 39 26 normal input;
-#X text 575 78 input if s-key is pressed \, only delta-values are received!
-;
-#X obj 41 404 r \$0-redraw;
-#X obj 293 371 max 1;
-#X obj 123 465 t f f f b;
-#X obj 275 464 t f f f b;
-#X obj 81 244 t b f;
-#X obj 45 244 t b f;
-#X connect 0 0 12 0;
-#X connect 1 0 0 0;
-#X connect 2 0 1 1;
-#X connect 4 0 14 0;
-#X connect 5 0 14 0;
-#X connect 6 0 1 0;
-#X connect 6 1 0 1;
-#X connect 7 0 11 0;
-#X connect 8 0 11 1;
-#X connect 9 0 79 1;
-#X connect 10 0 75 0;
-#X connect 11 0 74 0;
-#X connect 12 0 83 0;
-#X connect 12 1 82 0;
-#X connect 13 0 3 0;
-#X connect 14 0 13 1;
-#X connect 15 0 16 0;
-#X connect 16 0 42 0;
-#X connect 17 0 29 0;
-#X connect 17 1 28 0;
-#X connect 18 0 6 0;
-#X connect 18 1 13 0;
-#X connect 18 2 17 0;
-#X connect 19 0 14 1;
-#X connect 20 0 19 0;
-#X connect 22 0 23 0;
-#X connect 23 0 19 0;
-#X connect 23 0 21 0;
-#X connect 24 0 14 1;
-#X connect 25 0 26 1;
-#X connect 26 0 17 1;
-#X connect 27 0 26 1;
-#X connect 28 0 30 0;
-#X connect 28 1 24 0;
-#X connect 28 2 5 0;
-#X connect 28 3 27 0;
-#X connect 29 0 34 0;
-#X connect 29 1 24 0;
-#X connect 29 2 4 0;
-#X connect 29 3 25 0;
-#X connect 30 0 31 0;
-#X connect 31 0 32 0;
-#X connect 32 0 33 0;
-#X connect 33 0 26 0;
-#X connect 34 0 30 0;
-#X connect 34 1 31 1;
-#X connect 34 2 33 1;
-#X connect 41 0 15 0;
-#X connect 41 1 22 0;
-#X connect 44 0 59 0;
-#X connect 45 0 52 0;
-#X connect 45 0 56 0;
-#X connect 45 0 57 1;
-#X connect 46 0 50 0;
-#X connect 46 0 55 0;
-#X connect 47 0 57 0;
-#X connect 49 0 53 0;
-#X connect 50 0 49 0;
-#X connect 50 1 53 1;
-#X connect 51 0 69 0;
-#X connect 52 0 47 1;
-#X connect 53 0 54 1;
-#X connect 54 0 47 0;
-#X connect 55 0 51 1;
-#X connect 55 0 62 0;
-#X connect 56 0 55 0;
-#X connect 56 1 55 1;
-#X connect 57 0 70 0;
-#X connect 59 0 60 0;
-#X connect 60 0 54 0;
-#X connect 62 0 63 1;
-#X connect 63 0 64 0;
-#X connect 65 0 26 0;
-#X connect 66 0 80 0;
-#X connect 67 0 81 0;
-#X connect 70 0 68 0;
-#X connect 70 1 63 0;
-#X connect 70 2 51 0;
-#X connect 71 0 18 0;
-#X connect 72 0 73 0;
-#X connect 73 0 59 1;
-#X connect 74 0 39 1;
-#X connect 74 1 37 0;
-#X connect 75 0 40 2;
-#X connect 75 1 38 0;
-#X connect 78 0 15 0;
-#X connect 79 0 10 0;
-#X connect 80 0 39 0;
-#X connect 80 1 16 1;
-#X connect 80 2 9 0;
-#X connect 80 3 40 0;
-#X connect 81 0 8 0;
-#X connect 81 1 15 1;
-#X connect 81 2 40 1;
-#X connect 81 3 39 2;
-#X connect 82 0 41 0;
-#X connect 82 1 79 0;
-#X connect 83 0 41 0;
-#X connect 83 1 7 0;
-#X restore 57 182 pd sliderhandling_with_s_key;
-#X connect 2 0 0 0;
-#X connect 2 0 4 0;
-#X connect 3 0 4 1;
-#X connect 4 0 9 0;
-#X connect 6 0 7 0;
-#X connect 7 0 4 1;
-#X connect 8 0 9 1;
-#X restore 88 155 pd range_main;
-#N canvas 219 194 434 292 record 0;
-#N canvas 216 56 684 582 record_RAM 0;
-#N canvas 222 74 668 589 interna 0;
-#X text 64 78 es gibt ein bisserl ein problem mit dem join. nachdem
-ich beim ersten durchlauf nur einen channel haben will \, links aber
-eine vasp message reinschicken muss kann ich nicht den alten vasp links
-reinschicken und den neuen rechts dazujoinen...;
-#X text 64 151 deshalb schicke ich immer das neueste links rein und
-die referenz auf den alten rechts. letztendlich brockt mir das seitenverkehrte
-ordnungszahlen ein. ist aber nicht weiter tragisch. nur umstaendlich
-;
-#X text 65 231 am schluss stueckle ich das ergebnis aus den channels
-zusammen:;
-#X text 63 265 teilstueck 1 hat offset 0*64 und daten im channel n=k-1
-\, wobei k die anzahl der aufgenommenen kanaele ist.;
-#X text 63 295 teilstueck 2: o=1*64 \, n=k-2;
-#X text 63 312 teilstueck k: o=(k-1)*64 \, n=0;
-#X text 65 345 wenn start gedrueckt wird \, wird der erste table geschrieben
-(mit tabwrite~) am ende wird dann mit bang~ getriggert...;
-#X text 67 382 switch~ 0 darf erst gesetzt werden \, nachdem das letzte~
-bang abgearbeitet wurde.;
-#X text 69 428 beim letzten record-stueck werden zwar alle samples
-geschrieben (mit tabwrite~) aber nur mehr ein teil ausgelesen. das
-bestimmt der timer.;
-#X text 74 494 tabsend~ und switch~ laufen nicht parallel...;
-#X restore 521 187 pd interna;
-#X text 374 227 spaeter direkt in \$0-temp schreiben;
-#X obj 84 66 inlet~;
-#X obj 207 208 s \$0-recstop;
-#X obj 207 185 sel 0;
-#X obj 79 459 vasp;
-#X text 199 391 reset;
-#X obj 79 360 \$0;
-#X obj 79 398 vasp.!;
-#X msg 79 377 vasp \$1-rec_temp;
-#X obj 79 429 vasp.join 2;
-#X msg 198 408 vasp;
-#X text 159 431 adds a channel;
-#X obj 79 276 0;
-#X obj 79 302 + 1;
-#X msg 116 277 0;
-#X text 126 262 reset;
-#X obj 79 326 t b f;
-#X obj 229 408 r \$0-reset_rec;
-#X obj 141 277 r \$0-reset_rec;
-#X obj 79 169 bang~;
-#N canvas 171 0 610 665 write_multi_channel_to_ergebnis 0;
-#X obj 412 264 inlet;
-#X obj 270 414 vasp.n 0;
-#X obj 241 222 vasp.s;
-#X obj 241 103 0;
-#X obj 270 390 vasp;
-#X obj 318 359 - 1;
-#X text 193 54 am ende;
-#X obj 208 547 vasp.o;
-#X text 265 103 k (=number of slices);
-#X obj 208 574 vasp.=;
-#X obj 400 389 0;
-#X obj 413 368 + 1;
-#X msg 438 368 0;
-#X text 468 368 reset;
-#X obj 241 289 moses 1;
-#X obj 318 381 t f f;
-#X text 36 300 ganz am schluss;
-#X text 36 314 kopieren und schick resets;
-#X obj 278 313 t b b f b;
-#X obj 438 346 r \$0-reset_rec;
-#X obj 106 373 s \$0-reset_rec;
-#X msg 241 246 bang;
-#X obj 241 267 0;
-#X msg 208 596 bang;
-#X text 271 613 ohne das delay haengt sichs auf...;
-#X obj 254 81 r \$0-number_of_slices;
-#X obj 241 129 t b f f;
-#X obj 208 435 \$0;
-#X obj 208 500 t a b;
-#X obj 241 53 r \$0-recstop;
-#X obj 241 154 \$0;
-#X obj 278 154 * 8192;
-#X obj 400 412 * 8192;
-#X obj 208 478 vasp.f 8192;
-#X obj 81 348 t b b;
-#X obj 208 617 delay;
-#X msg 241 201 vasp \$1-;
-#X msg 209 458 vasp \$1-;
-#X obj 137 479 s \$0-sm;
-#X obj 135 540 s \$0-rb;
-#X obj 83 538 s \$0-lb;
-#X msg 83 516 0;
-#X msg 135 519 400;
-#X obj 53 567 s \$0-redraw;
-#X obj 81 429 * 0.0025;
-#X obj 81 406 0;
-#X obj 278 177 t f f;
-#X obj 96 632 vasp.u;
-#X obj 96 588 \$0;
-#X msg 96 610 vasp \$1-;
-#X obj 81 452 t b b b b f;
-#X connect 0 0 4 1;
-#X connect 1 0 9 1;
-#X connect 2 0 21 0;
-#X connect 3 0 26 0;
-#X connect 4 0 1 0;
-#X connect 5 0 15 0;
-#X connect 7 0 9 0;
-#X connect 9 0 23 0;
-#X connect 10 0 11 0;
-#X connect 10 0 32 0;
-#X connect 11 0 10 1;
-#X connect 12 0 10 1;
-#X connect 14 0 34 0;
-#X connect 14 1 18 0;
-#X connect 15 0 22 1;
-#X connect 15 1 1 1;
-#X connect 18 0 27 0;
-#X connect 18 1 4 0;
-#X connect 18 2 5 0;
-#X connect 18 3 10 0;
-#X connect 19 0 12 0;
-#X connect 21 0 22 0;
-#X connect 22 0 14 0;
-#X connect 23 0 35 0;
-#X connect 25 0 3 1;
-#X connect 26 0 30 0;
-#X connect 26 1 22 1;
-#X connect 26 2 31 0;
-#X connect 27 0 37 0;
-#X connect 28 0 7 0;
-#X connect 29 0 3 0;
-#X connect 30 0 36 0;
-#X connect 31 0 46 0;
-#X connect 32 0 7 1;
-#X connect 33 0 28 0;
-#X connect 34 0 45 0;
-#X connect 34 1 20 0;
-#X connect 35 0 22 0;
-#X connect 36 0 2 0;
-#X connect 37 0 33 0;
-#X connect 41 0 40 0;
-#X connect 42 0 39 0;
-#X connect 44 0 50 0;
-#X connect 45 0 44 0;
-#X connect 46 0 45 1;
-#X connect 46 1 2 1;
-#X connect 48 0 49 0;
-#X connect 49 0 47 0;
-#X connect 50 0 43 0;
-#X connect 50 1 48 0;
-#X connect 50 2 41 0;
-#X connect 50 3 42 0;
-#X connect 50 4 38 0;
-#X restore 79 489 pd write_multi_channel_to_ergebnis;
-#X obj 150 340 s \$0-number_of_slices;
-#X obj 79 238 t b b b;
-#X obj 84 93 tabsend~ \$0-rec_temp;
-#X obj 79 208 spigot;
-#X obj 207 158 t f f;
-#X obj 468 317 table \$0-rec_temp 8192;
-#X obj 468 350 block~ 8192;
-#X obj 207 138 r \$0-rec_1_0;
-#X connect 2 0 24 0;
-#X connect 4 0 3 0;
-#X connect 5 0 10 1;
-#X connect 5 0 21 0;
-#X connect 7 0 9 0;
-#X connect 8 0 10 0;
-#X connect 9 0 8 0;
-#X connect 10 0 5 0;
-#X connect 11 0 10 1;
-#X connect 13 0 14 0;
-#X connect 14 0 13 1;
-#X connect 14 0 17 0;
-#X connect 15 0 13 1;
-#X connect 17 0 7 0;
-#X connect 17 1 22 0;
-#X connect 18 0 11 0;
-#X connect 19 0 15 0;
-#X connect 20 0 25 0;
-#X connect 23 0 13 0;
-#X connect 25 0 23 0;
-#X connect 26 0 4 0;
-#X connect 26 1 25 1;
-#X connect 29 0 26 0;
-#X restore 46 99 pd record_RAM;
-#X obj 47 62 inlet~;
-#X obj 147 150 - 100;
-#X obj 147 77 env~ 16384;
-#X obj 147 171 s \$0-vu1;
-#X obj 147 116 spigot;
-#X obj 217 76 r \$0-monis;
-#X msg 193 150 -100;
-#X obj 217 97 t b f;
-#X connect 1 0 0 0;
-#X connect 1 0 3 0;
-#X connect 2 0 4 0;
-#X connect 3 0 5 0;
-#X connect 5 0 2 0;
-#X connect 6 0 8 0;
-#X connect 7 0 4 0;
-#X connect 8 0 7 0;
-#X connect 8 1 5 1;
-#X restore 391 177 pd record;
-#X connect 1 0 15 0;
-#X connect 18 0 15 1;
-#X connect 20 0 22 0;
-#X restore 650 290 pd inside;
-#X obj 72 100 cnv 2 2 100 empty \$0-p1 empty 20 12 576 14 -1 -233017
-0;
-#X obj 73 100 cnv 1 400 100 empty \$0-p1b empty 20 12 576 14 -257472
--262144 0;
-#X obj 472 100 cnv 2 2 100 empty \$0-p2 empty 20 12 576 14 -1 -262144
-0;
-#X obj 473 100 cnv 5 5 100 empty \$0-p2b empty 20 12 576 14 -233017
--262144 0;
-#N canvas 0 0 450 300 graph1 0;
-#X array \$0- 400 float 0;
-#X coords 0 1 399 -1 400 100 1;
-#X restore 72 100 graph;
-#X obj 484 136 nbx 8 14 -1e+037 1e+037 0 1 empty \$0-rbs_displ right
-0 -6 577 8 -233017 -1 -1 400 256;
-#X obj 484 107 nbx 8 14 -1e+037 1e+037 0 0 empty \$0-lbs_displ left
-0 -6 577 8 -233017 -1 -1 0 256;
-#X obj 484 166 nbx 8 14 -1e+037 1e+037 0 1 empty \$0-rs_displ length
-0 -6 577 8 -233017 -1 -1 400 256;
-#X obj 37 12 cnv 15 600 40 empty empty wedit 10 22 0 24 -257472 -1
-0;
-#X text 188 29 http://www.parasitaere-kapazitaeten.net;
-#X text 188 13 wave editor (P)2003 marius schebella;
-#X text 51 59 click into the array to set range \, use "s"+ mouse to
-shift selection;
-#X obj 71 210 tgl 18 0 \$0-playbutton \$0-playbuttonr empty 0 -6 1728
-8 -262144 -1 -1 0 1;
-#X obj 99 210 tgl 18 0 \$0-loopbutton \$0-loopbuttonr empty 0 -6 1728
-8 -262144 -1 -1 0 1;
-#X obj 66 207 cnv 15 56 25 empty \$0-test empty 20 12 576 14 -233017
--262144 0;
-#X obj 69 210 cnv 15 20 15 empty \$0-play_white empty 20 12 576 14
--262144 -262144 0;
-#X obj 71 212 cnv 15 20 15 empty \$0-play_dark empty 20 12 576 14 -128992
--262144 0;
-#X obj 70 211 cnv 15 20 15 empty \$0-play_normal empty 20 12 576 14
--233017 -66577 0;
-#X obj 96 210 cnv 15 20 15 empty \$0-loop_white empty 20 12 576 14
--262144 -262144 0;
-#X obj 98 212 cnv 15 20 15 empty \$0-loop_dark empty 20 12 576 14 -128992
--262144 0;
-#X obj 97 211 cnv 15 20 15 empty \$0-loop_normal empty 20 12 576 14
--233017 -66577 0;
-#X obj 77 222 cnv 1 1 1 empty \$0-playbutton1 empty 20 12 576 14 -24198
--262144 0;
-#X obj 77 220 cnv 1 1 1 empty \$0-playbutton1 empty 20 12 576 14 -24198
--262144 0;
-#X obj 77 218 cnv 1 1 1 empty \$0-playbutton1 empty 20 12 576 14 -24198
--262144 0;
-#X obj 77 216 cnv 1 1 1 empty \$0-playbutton1 empty 20 12 576 14 -24198
--262144 0;
-#X obj 77 214 cnv 1 1 1 empty \$0-playbutton1 empty 20 12 576 14 -24198
--262144 0;
-#X obj 78 215 cnv 1 1 1 empty \$0-playbutton1 empty 20 12 576 14 -24198
--262144 0;
-#X obj 78 221 cnv 1 1 1 empty \$0-playbutton1 empty 20 12 576 14 -24198
--262144 0;
-#X obj 79 216 cnv 1 1 1 empty \$0-playbutton1 empty 20 12 576 14 -24198
--262144 0;
-#X obj 79 218 cnv 1 1 1 empty \$0-playbutton1 empty 20 12 576 14 -24198
--262144 0;
-#X obj 79 220 cnv 1 1 1 empty \$0-playbutton1 empty 20 12 576 14 -24198
--262144 0;
-#X obj 80 217 cnv 1 1 1 empty \$0-playbutton1 empty 20 12 576 14 -24198
--262144 0;
-#X obj 80 219 cnv 1 1 1 empty \$0-playbutton1 empty 20 12 576 14 -24198
--262144 0;
-#X obj 81 218 cnv 1 1 1 empty \$0-playbutton1 empty 20 12 576 14 -24198
--262144 0;
-#X obj 106 219 cnv 1 1 1 empty \$0-loopbutton1 empty 20 12 576 14 -24198
--262144 0;
-#X obj 106 217 cnv 1 1 1 empty \$0-loopbutton1 empty 20 12 576 14 -24198
--262144 0;
-#X obj 106 215 cnv 1 1 1 empty \$0-loopbutton1 empty 20 12 576 14 -24198
--262144 0;
-#X obj 106 213 cnv 1 1 1 empty \$0-loopbutton1 empty 20 12 576 14 -24198
--262144 0;
-#X obj 107 214 cnv 1 1 1 empty \$0-loopbutton1 empty 20 12 576 14 -24198
--262144 0;
-#X obj 107 218 cnv 1 1 1 empty \$0-loopbutton1 empty 20 12 576 14 -24198
--262144 0;
-#X obj 107 216 cnv 1 1 1 empty \$0-loopbutton1 empty 20 12 576 14 -24198
--262144 0;
-#X obj 108 215 cnv 1 1 1 empty \$0-loopbutton1 empty 20 12 576 14 -24198
--262144 0;
-#X obj 108 217 cnv 1 1 1 empty \$0-loopbutton1 empty 20 12 576 14 -24198
--262144 0;
-#X obj 110 216 cnv 1 1 1 empty \$0-loopbutton1 empty 20 12 576 14 -24198
--262144 0;
-#X obj 112 216 cnv 1 1 1 empty \$0-loopbutton1 empty 20 12 576 14 -24198
--262144 0;
-#X obj 104 216 cnv 1 1 1 empty \$0-loopbutton1 empty 20 12 576 14 -24198
--262144 0;
-#X obj 102 216 cnv 1 1 1 empty \$0-loopbutton1 empty 20 12 576 14 -24198
--262144 0;
-#X obj 101 217 cnv 1 1 1 empty \$0-loopbutton1 empty 20 12 576 14 -24198
--262144 0;
-#X obj 101 219 cnv 1 1 1 empty \$0-loopbutton1 empty 20 12 576 14 -24198
--262144 0;
-#X obj 101 221 cnv 1 1 1 empty \$0-loopbutton1 empty 20 12 576 14 -24198
--262144 0;
-#X obj 102 222 cnv 1 1 1 empty \$0-loopbutton1 empty 20 12 576 14 -24198
--262144 0;
-#X obj 104 222 cnv 1 1 1 empty \$0-loopbutton1 empty 20 12 576 14 -24198
--262144 0;
-#X obj 106 222 cnv 1 1 1 empty \$0-loopbutton1 empty 20 12 576 14 -24198
--262144 0;
-#X obj 108 222 cnv 1 1 1 empty \$0-loopbutton1 empty 20 12 576 14 -24198
--262144 0;
-#X obj 110 222 cnv 1 1 1 empty \$0-loopbutton1 empty 20 12 576 14 -24198
--262144 0;
-#X obj 113 217 cnv 1 1 1 empty \$0-loopbutton1 empty 20 12 576 14 -24198
--262144 0;
-#X obj 113 219 cnv 1 1 1 empty \$0-loopbutton1 empty 20 12 576 14 -24198
--262144 0;
-#X obj 113 221 cnv 1 1 1 empty \$0-loopbutton1 empty 20 12 576 14 -24198
--262144 0;
-#X obj 112 222 cnv 1 1 1 empty \$0-loopbutton1 empty 20 12 576 14 -24198
--262144 0;
-#X obj 484 196 bng 15 250 50 0 \$0-open \$0-nixr open 18 6 1729 8 -241291
--1 -1;
-#X obj 484 215 bng 15 250 50 0 \$0-save 0-nixr save 18 6 1217 8 -260818
--1 -1;
-#X obj 484 234 bng 15 250 50 0 \$0-save_as \$0-nixr save_as 18 6 1729
-8 -258699 -1 -1;
-#X obj 250 218 bng 15 250 50 0 \$0-reduce \$0-nixr reduce_to_sel 0
--6 1729 8 -62784 -1 -1;
-#X obj 361 246 bng 15 250 50 0 \$0-set_0 \$0-nixr set_zero 18 6 1729
-8 -24198 -1 -1;
-#X obj 361 264 bng 15 250 50 0 \$0-noise \$0-nixr noise 18 6 1729 8
--24198 -1 -1;
-#X obj 213 218 bng 15 250 50 0 \$0-cut \$0-nixr cut 0 -6 1729 8 -62784
--1 -1;
-#X obj 361 210 bng 15 250 50 0 \$0-fade_in \$0-nixr fade_in 18 6 1729
-8 -24198 -1 -1;
-#X obj 361 228 bng 15 250 50 0 \$0-fade_out \$0-nixr fade_out 18 6
-1729 8 -24198 -1 -1;
-#X obj 484 254 bng 15 250 50 0 \$0-toarray \$0-nixr send_to_array 18
-6 1729 8 -44926 -1 -1;
-#X obj 484 273 bng 15 250 50 0 \$0-reloadarray \$0-nixr reload_from_array
-18 6 1729 8 -44926 -1 -1;
-#X text 535 212 (wave-format);
-#X obj 71 257 nbx 5 14 -1000 0 0 1 \$0-voldispls \$0-voldisplr empty
-0 -6 1729 8 -262144 -1 -1 -1000 256;
-#X obj 74 238 hsl 101 15 0 50 0 0 \$0-vols \$0-volr volume 6 7 1729
-8 -262144 -1 -1 0 1;
-#X obj 213 254 bng 15 250 50 0 \$0-normalize \$0-nixr normalize 0 -6
-1729 8 -62784 -1 -1;
-#N canvas 0 0 551 358 help 0;
-#X text 67 47 help:;
-#X text 69 69 this is a very basic wave editor \, kind of prototype...
-;
-#X text 68 92 many operations are not available at the moment (copy
-and paste \, zooming \, scrolling \, cursor). they should follow some
-time...;
-#X text 64 141 the editor needs the libraries vasp (http://www.parasitaere-kapazitaeten.net/vasp)
-and zexy (http://iem.kug.ac.at/~zmoelnig/pd/).;
-#X text 67 197 send to array and reload from array can only be done
-\, if you start wedit with a variable \, like "wedit array1" \, this
-array is then loaded by default. but needs to be updated \, if the
-array is changed outside the editor. by clicking "send to array" the
-edited sample is sent to the (default) array outside.;
-#X text 279 305 marius.schebella@chello.at;
-#X restore 649 240 pd help;
-#X text 116 257 -50dB to 0dB;
-#X obj 125 210 tgl 18 0 \$0-recbuttons \$0-recbuttonr empty 0 -6 1728
-8 -262144 -1 -1 0 1;
-#X obj 120 206 cnv 15 28 25 empty empty empty 20 12 0 14 -233017 -262144
-0;
-#X obj 123 210 cnv 15 20 15 empty \$0-rec_white empty 20 12 576 14
--262144 -262144 0;
-#X obj 125 212 cnv 15 20 15 empty \$0-rec_dark empty 20 12 576 14 -128992
--262144 0;
-#X obj 124 211 cnv 15 20 15 empty \$0-rec_normal empty 20 12 576 14
--233017 -66577 0;
-#X obj 131 215 cnv 1 1 1 empty \$0-recbutton1 empty 20 12 576 14 -143491
--262144 0;
-#X obj 133 215 cnv 1 1 1 empty \$0-recbutton1 empty 20 12 576 14 -143491
--262144 0;
-#X obj 135 215 cnv 1 1 1 empty \$0-recbutton1 empty 20 12 576 14 -143491
--262144 0;
-#X obj 130 216 cnv 1 1 1 empty \$0-recbutton1 empty 20 12 576 14 -143491
--262144 0;
-#X obj 132 216 cnv 1 1 1 empty \$0-recbutton1 empty 20 12 576 14 -143491
--262144 0;
-#X obj 134 216 cnv 1 1 1 empty \$0-recbutton1 empty 20 12 576 14 -143491
--262144 0;
-#X obj 132 219 cnv 1 1 1 empty \$0-recbutton1 empty 20 12 576 14 -143491
--262144 0;
-#X obj 136 219 cnv 1 1 1 empty \$0-recbutton1 empty 20 12 576 14 -143491
--262144 0;
-#X obj 136 216 cnv 1 1 1 empty \$0-recbutton1 empty 20 12 576 14 -143491
--262144 0;
-#X obj 134 219 cnv 1 1 1 empty \$0-recbutton1 empty 20 12 576 14 -143491
--262144 0;
-#X obj 133 220 cnv 1 1 1 empty \$0-recbutton1 empty 20 12 576 14 -143491
--262144 0;
-#X obj 130 218 cnv 1 1 1 empty \$0-recbutton1 empty 20 12 576 14 -143491
--262144 0;
-#X obj 130 219 cnv 1 1 1 empty \$0-recbutton1 empty 20 12 576 14 -143491
--262144 0;
-#X obj 131 220 cnv 1 1 1 empty \$0-recbutton1 empty 20 12 576 14 -143491
--262144 0;
-#X obj 134 218 cnv 1 1 1 empty \$0-recbutton1 empty 20 12 576 14 -143491
--262144 0;
-#X obj 135 220 cnv 1 1 1 empty \$0-recbutton1 empty 20 12 576 14 -143491
--262144 0;
-#X obj 132 217 cnv 1 1 1 empty \$0-recbutton1 empty 20 12 576 14 -143491
--262144 0;
-#X obj 136 218 cnv 1 1 1 empty \$0-recbutton1 empty 20 12 576 14 -143491
--262144 0;
-#X obj 650 267 inlet~;
-#X connect 102 0 2 0;
-#X coords 0 0 1 1 200 140 0;
diff --git a/externals/grill/vasp/pd-help/vasp_abs.pd b/externals/grill/vasp/pd-help/vasp_abs.pd
deleted file mode 100644
index 493bf9fd..00000000
--- a/externals/grill/vasp/pd-help/vasp_abs.pd
+++ /dev/null
@@ -1,48 +0,0 @@
-#N canvas 99 112 853 471 10;
-#X msg 521 263 vasp bufabs;
-#X text 71 63 get absolute values of a vasp;
-#X text 71 79 see also vasp.*.help for an example using vasp.abs to
-generate an envelope from a vasp;
-#X obj 71 32 cnv 15 15 15 empty empty vasp.abs 0 10 1 14 -262144 -1
-0;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufabs 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 465 124 graph;
-#N canvas 0 0 394 270 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 4410 10 \; \$1 xlabel 1.1 0 22050 44100
-66150 88200 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 94000 -1 -0.5 0 0.5
-1;
-#X msg 33 45 symbol bufabs;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 737 285 pd init;
-#N canvas 40 55 247 122 clear_buffer 0;
-#X obj 54 79 vasp.update;
-#X obj 54 56 vasp.= 0;
-#X obj 54 26 inlet;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X restore 521 284 pd clear_buffer;
-#X text 189 209 get the absolute values;
-#X obj 77 209 prepend set;
-#X obj 77 285 vasp.update;
-#X text 178 134 generate a sinewave;
-#X msg 77 135 vasp bufabs;
-#X obj 77 154 vasp.osc 22050;
-#X obj 77 247 vasp.abs;
-#X obj 170 210 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X obj 77 173 vasp.update;
-#X text 58 209 *;
-#X text 71 414 * prepend-object from iemlib2 (http://pd.iem.at/iemlib)
-;
-#X obj 77 383 VASP-HELP;
-#X connect 0 0 6 0;
-#X connect 8 0 13 0;
-#X connect 11 0 12 0;
-#X connect 12 0 15 0;
-#X connect 13 0 9 0;
-#X connect 14 0 13 0;
-#X connect 15 0 8 0;
diff --git a/externals/grill/vasp/pd-help/vasp_add.pd b/externals/grill/vasp/pd-help/vasp_add.pd
deleted file mode 100644
index 56781928..00000000
--- a/externals/grill/vasp/pd-help/vasp_add.pd
+++ /dev/null
@@ -1,54 +0,0 @@
-#N canvas 8 252 972 385 10;
-#N canvas 40 55 255 173 clear_buffer 0;
-#X obj 59 79 vasp.update;
-#X obj 59 56 vasp.= 0;
-#X obj 59 26 inlet;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X restore 755 285 pd clear_buffer;
-#X text 452 193 shift all values - 0.5;
-#X text 372 63 optional argument/right inlet: right operand;
-#X text 372 46 subtracts a value or a vasp from a vasp;
-#X obj 376 213 vasp.update;
-#X obj 376 190 vasp.- 0.5;
-#X obj 376 145 vasp.osc 44100;
-#X obj 376 167 vasp.* 0.5;
-#X text 45 63 optional argument/right inlet: right operand;
-#X text 45 46 adds a value or a vasp to a vasp;
-#X obj 45 20 cnv 15 15 15 empty empty vasp.+ 0 10 1 14 -262144 -1 0
-;
-#X obj 374 18 cnv 15 15 15 empty empty vasp.- 0 10 1 14 -262144 -1
-0;
-#N canvas 0 0 450 300 graph167 0;
-#X array bufadd 88200 float 0;
-#X coords 0 1 88199 -1 300 120 1;
-#X restore 624 100 graph;
-#X text 124 192 shift all values + 0.5;
-#X text 127 169 half the amplitude;
-#X obj 49 213 vasp.update;
-#X obj 49 190 vasp.+ 0.5;
-#X obj 49 145 vasp.osc 44100;
-#X obj 49 167 vasp.* 0.5;
-#X text 157 147 generate a 1Hz sine wave;
-#X msg 49 113 vasp bufadd;
-#X msg 376 113 vasp bufadd;
-#X msg 755 264 vasp bufadd;
-#N canvas 0 0 396 272 init 0;
-#X obj 36 19 loadbang;
-#X msg 36 73 \; \$1 xticks 0 4410 10 \; \$1 xlabel 1.1 0 22050 44100
-66150 88200 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 94000 -1 -0.5 0 0.5
-1;
-#X msg 36 45 symbol bufadd;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 879 285 pd init;
-#X obj 49 345 VASP-HELP;
-#X connect 5 0 4 0;
-#X connect 6 0 7 0;
-#X connect 7 0 5 0;
-#X connect 16 0 15 0;
-#X connect 17 0 18 0;
-#X connect 18 0 16 0;
-#X connect 20 0 17 0;
-#X connect 21 0 6 0;
-#X connect 22 0 0 0;
diff --git a/externals/grill/vasp/pd-help/vasp_ageq.pd b/externals/grill/vasp/pd-help/vasp_ageq.pd
deleted file mode 100644
index 04df10f5..00000000
--- a/externals/grill/vasp/pd-help/vasp_ageq.pd
+++ /dev/null
@@ -1,50 +0,0 @@
-#N canvas 44 207 839 468 10;
-#X obj 62 41 cnv 15 15 15 empty empty vasp.a>= 0 10 1 14 -262144 -1
-0;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufageq 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 408 84 graph;
-#N canvas 0 0 400 276 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 4410 10 \; \$1 xlabel 1.1 0 22050 44100
-66150 88200 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 94000 -1 -0.5 0 0.5
-1;
-#X msg 33 45 symbol bufageq \, symbol bufageq1;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 662 388 pd init;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufageq1 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 408 213 graph;
-#X text 60 94 argument/right inlet: value;
-#X obj 61 172 vasp.osc 44100;
-#X obj 61 194 vasp.update;
-#N canvas 0 0 413 295 clear_buffers 0;
-#X obj 49 73 vasp.= 0;
-#X obj 49 49 inlet;
-#X obj 49 97 vasp.u;
-#X obj 49 118 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 2 0;
-#X connect 1 0 0 0;
-#X connect 2 0 3 0;
-#X restore 460 390 pd clear_buffers;
-#X obj 57 418 VASP-HELP;
-#X obj 58 366 vasp.update;
-#X floatatom 125 308 5 0 0;
-#X text 164 236 copy to new buffer;
-#X text 60 80 abs(sample) >= abs(value);
-#X msg 61 150 vasp bufageq;
-#X msg 58 236 vasp bufageq1;
-#X obj 58 262 vasp.= bufageq;
-#X obj 58 335 vasp.>= -0.4;
-#X msg 460 364 vasp bufageq bufageq1;
-#X connect 5 0 6 0;
-#X connect 10 0 16 1;
-#X connect 13 0 5 0;
-#X connect 14 0 15 0;
-#X connect 15 0 16 0;
-#X connect 16 0 9 0;
-#X connect 17 0 7 0;
diff --git a/externals/grill/vasp/pd-help/vasp_agtr.pd b/externals/grill/vasp/pd-help/vasp_agtr.pd
deleted file mode 100644
index c7ff71e6..00000000
--- a/externals/grill/vasp/pd-help/vasp_agtr.pd
+++ /dev/null
@@ -1,52 +0,0 @@
-#N canvas 44 207 841 470 10;
-#X obj 62 41 cnv 15 15 15 empty empty vasp.a> 0 10 1 14 -262144 -1
-0;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufagtr 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 439 87 graph;
-#N canvas 0 0 398 274 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 4410 10 \; \$1 xlabel 1.1 0 22050 44100
-66150 88200 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 94000 -1 -0.5 0 0.5
-1;
-#X msg 33 45 symbol bufagtr \, symbol bufagtr1;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 693 391 pd init;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufagtr1 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 439 216 graph;
-#X text 60 94 argument/right inlet: value;
-#X obj 61 172 vasp.osc 44100;
-#X obj 61 194 vasp.update;
-#N canvas 0 0 413 295 clear_buffers 0;
-#X obj 49 73 vasp.= 0;
-#X obj 49 49 inlet;
-#X obj 49 97 vasp.u;
-#X obj 49 118 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 2 0;
-#X connect 1 0 0 0;
-#X connect 2 0 3 0;
-#X restore 491 393 pd clear_buffers;
-#X text 338 218 1/true;
-#X text 337 258 0/false;
-#X obj 57 418 VASP-HELP;
-#X obj 58 366 vasp.update;
-#X floatatom 119 309 5 0 0;
-#X text 164 230 copy to new buffer;
-#X msg 491 367 vasp bufagtr bufagtr1;
-#X text 60 80 abs(sample) > abs(value);
-#X msg 61 150 vasp bufagtr;
-#X msg 58 236 vasp bufagtr1;
-#X obj 58 262 vasp.= bufagtr;
-#X obj 58 335 vasp.> -0.4;
-#X connect 5 0 6 0;
-#X connect 12 0 19 1;
-#X connect 14 0 7 0;
-#X connect 16 0 5 0;
-#X connect 17 0 18 0;
-#X connect 18 0 19 0;
-#X connect 19 0 11 0;
diff --git a/externals/grill/vasp/pd-help/vasp_aleq.pd b/externals/grill/vasp/pd-help/vasp_aleq.pd
deleted file mode 100644
index 30a88cf6..00000000
--- a/externals/grill/vasp/pd-help/vasp_aleq.pd
+++ /dev/null
@@ -1,52 +0,0 @@
-#N canvas 56 200 881 464 10;
-#X obj 62 41 cnv 15 15 15 empty empty vasp.a<= 0 10 1 14 -262144 -1
-0;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufaleq 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 489 91 graph;
-#N canvas 0 0 402 278 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 4410 10 \; \$1 xlabel 1.1 0 22050 44100
-66150 88200 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 94000 -1 -0.5 0 0.5
-1;
-#X msg 33 45 symbol bufaleq \, symbol bufaleq1;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 743 395 pd init;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufaleq1 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 489 220 graph;
-#N canvas 0 0 413 295 clear_buffers 0;
-#X obj 49 73 vasp.= 0;
-#X obj 49 49 inlet;
-#X obj 49 97 vasp.u;
-#X obj 49 118 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 2 0;
-#X connect 1 0 0 0;
-#X connect 2 0 3 0;
-#X restore 541 397 pd clear_buffers;
-#X text 389 220 1/true;
-#X text 388 260 0/false;
-#X text 60 94 argument/right inlet: value;
-#X obj 61 172 vasp.osc 44100;
-#X obj 61 194 vasp.update;
-#X obj 58 366 vasp.update;
-#X floatatom 125 308 5 0 0;
-#X text 164 230 copy to new buffer;
-#X obj 57 418 VASP-HELP;
-#X msg 541 371 vasp bufaleq bufaleq1;
-#X msg 61 150 vasp bufaleq;
-#X msg 58 236 vasp bufaleq1;
-#X obj 58 262 vasp.= bufaleq;
-#X obj 58 335 vasp.<= -0.4;
-#X text 60 80 abs(sample) <= abs(value);
-#X connect 8 0 9 0;
-#X connect 11 0 18 1;
-#X connect 14 0 4 0;
-#X connect 15 0 8 0;
-#X connect 16 0 17 0;
-#X connect 17 0 18 0;
-#X connect 18 0 10 0;
diff --git a/externals/grill/vasp/pd-help/vasp_alwr.pd b/externals/grill/vasp/pd-help/vasp_alwr.pd
deleted file mode 100644
index 2eca3860..00000000
--- a/externals/grill/vasp/pd-help/vasp_alwr.pd
+++ /dev/null
@@ -1,52 +0,0 @@
-#N canvas 44 207 843 472 10;
-#X obj 62 41 cnv 15 15 15 empty empty vasp.a< 0 10 1 14 -262144 -1
-0;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufalwr 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 480 90 graph;
-#N canvas 0 0 396 272 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 4410 10 \; \$1 xlabel 1.1 0 22050 44100
-66150 88200 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 94000 -1 -0.5 0 0.5
-1;
-#X msg 33 45 symbol bufalwr \, symbol bufalwr1;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 734 394 pd init;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufalwr1 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 480 219 graph;
-#X text 60 94 argument/right inlet: value;
-#X obj 61 172 vasp.osc 44100;
-#X obj 61 194 vasp.update;
-#X text 164 234 copy to new buffer;
-#N canvas 0 0 413 295 clear_buffers 0;
-#X obj 49 73 vasp.= 0;
-#X obj 49 49 inlet;
-#X obj 49 97 vasp.u;
-#X obj 49 118 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 2 0;
-#X connect 1 0 0 0;
-#X connect 2 0 3 0;
-#X restore 532 396 pd clear_buffers;
-#X text 378 219 1/true;
-#X text 377 259 0/false;
-#X obj 58 366 vasp.update;
-#X floatatom 125 313 5 0 0;
-#X obj 59 418 VASP-HELP;
-#X msg 532 370 vasp bufalwr bufalwr1;
-#X msg 58 236 vasp bufalwr1;
-#X msg 61 150 vasp bufalwr;
-#X obj 58 262 vasp.= bufalwr;
-#X obj 58 335 vasp.a< -0.4;
-#X text 61 80 abs(sample) < abs(value);
-#X connect 5 0 6 0;
-#X connect 12 0 18 1;
-#X connect 14 0 8 0;
-#X connect 15 0 17 0;
-#X connect 16 0 5 0;
-#X connect 17 0 18 0;
-#X connect 18 0 11 0;
diff --git a/externals/grill/vasp/pd-help/vasp_cadd.pd b/externals/grill/vasp/pd-help/vasp_cadd.pd
deleted file mode 100644
index ec1492eb..00000000
--- a/externals/grill/vasp/pd-help/vasp_cadd.pd
+++ /dev/null
@@ -1,21 +0,0 @@
-#N canvas 266 193 597 452 10;
-#X text 49 142 c \, d ... right operand;
-#X text 49 127 a \, b ... left operand;
-#X text 49 112 e \, f ... target buffers;
-#X text 49 202 differences in lengths are adjusted to smaller vector
-of each pair;
-#X text 49 80 e+if=(a+ib)+(c+id);
-#X text 49 174 vasp.c+ needs 2 vectors per operand which are treated
-as pairs;
-#X text 49 65 complex addition;
-#X obj 55 34 cnv 15 15 15 empty empty vasp.c+ 0 10 1 14 -262144 -1
-0;
-#X obj 263 107 vasp.c+;
-#X text 46 287 related objects:;
-#X obj 182 330 vasp.c!-;
-#X obj 265 330 vasp.c!/;
-#X obj 182 288 vasp.c=;
-#X obj 265 309 vasp.c/;
-#X obj 265 288 vasp.c*;
-#X obj 182 309 vasp.c-;
-#X obj 50 384 VASP-HELP;
diff --git a/externals/grill/vasp/pd-help/vasp_cconj.pd b/externals/grill/vasp/pd-help/vasp_cconj.pd
deleted file mode 100644
index ba402500..00000000
--- a/externals/grill/vasp/pd-help/vasp_cconj.pd
+++ /dev/null
@@ -1,33 +0,0 @@
-#N canvas 122 81 821 476 10;
-#X obj 51 19 cnv 15 15 15 empty empty vasp.cconj 0 10 1 14 -262144
--1 0;
-#X obj 51 208 vasp.update;
-#X obj 53 367 VASP-HELP;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufconre 21 float 1;
-#A 0 0.619999 0.639999 0.4 0.18 0.3 0.32 0.0599999 -0.28 -0.26 -0.14
-0.22 0.46 0.26 -0.24 -0.719999 -0.619999 -0.26 -0.02 -0.26 -0.48 -0.5
-;
-#X coords 0 1 20 -1 300 100 1;
-#X restore 410 100 graph;
-#N canvas 0 0 396 272 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 45 symbol bufconre \, symbol bufconim;
-#X msg 33 73 \; \$1 xticks 0 1 5 \; \$1 xlabel 1.1 0 5 10 15 20 \;
-\$1 yticks 0 0.25 2 \; \$1 ylabel 21.3 -1 -0.5 0 0.5 1;
-#X connect 0 0 1 0;
-#X connect 1 0 2 0;
-#X restore 670 381 pd init;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufconim 21 float 1;
-#A 0 0.900005 0.820005 0.720004 0.640004 0.580003 0.460003 0.360002
-0.240002 0.120001 0.0600005 -0.0600002 -0.180001 -0.300002 -0.300002
--0.400002 -0.480003 -0.500003 -0.500003 -0.560003 -0.420002 -0.380002
-;
-#X coords 0 1 20 -1 300 100 1;
-#X restore 411 232 graph;
-#X text 44 59 conjugates the imaginary part of a complex vasp;
-#X obj 51 177 vasp.cconj;
-#X msg 51 142 vasp bufconre bufconim;
-#X connect 7 0 1 0;
-#X connect 8 0 7 0;
diff --git a/externals/grill/vasp/pd-help/vasp_ccopy.pd b/externals/grill/vasp/pd-help/vasp_ccopy.pd
deleted file mode 100644
index 5e2d51da..00000000
--- a/externals/grill/vasp/pd-help/vasp_ccopy.pd
+++ /dev/null
@@ -1,83 +0,0 @@
-#N canvas 21 60 973 580 10;
-#X obj 62 33 cnv 15 15 15 empty empty vasp.c-> 0 10 1 14 -262144 -1
-0;
-#X text 55 81 optional argument/right inlet: value/vasp;
-#N canvas 0 0 262 199 clear_buffer 0;
-#X obj 49 73 vasp.= 0;
-#X obj 49 49 inlet;
-#X obj 49 97 vasp.u;
-#X connect 0 0 2 0;
-#X connect 1 0 0 0;
-#X restore 308 479 pd clear_buffer;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufcopy1 100 float 1;
-#A 0 0.143758 0.0686079 -0.38831 -0.0776481 0.294635 0.674558 0.607506
--0.170675 -0.0864513 -0.41061 -0.195257 -0.0921464 -0.0565912 -0.0555828
-0.0530162 0.0249378 -0.0623897 -0.0156552 0.0755211 0.0167451 0.141562
-0.0405158 -0.023263 0.0180184 -0.0637342 -0.0822978 -0.00542918 -0.000371593
-0.0383471 0.0352856 0.00255783 -0.0732533 0.00192948 -0.00246741 -0.00759756
-0.038446 -0.030182 -0.0408431 -0.0153346 -0.0652415 -0.0363779 0.0186147
-0.0138818 0.0333752 0.0466349 0.0131742 -0.0321698 0.0154971 0.00843997
-0.0131756 0.0645522 0.00604813 -0.0115883 0.00454732 -0.0538017 -0.0109963
-0.0257179 0.0423155 0.0291044 0.0311714 -0.0175559 -0.0558005 0.0108977
--0.0305093 -0.00780438 0.0367772 -0.0188594 -0.00453038 -0.0172815
--0.0762415 -0.00338057 0.0343781 0.0289549 0.00518148 0.0427147 -0.0310832
--0.0454392 0.0401651 -0.0132068 0.0646664 0.120187 -0.00961662 0.0462419
--0.0174716 -0.0689202 -0.0208856 0.0423041 0.024882 0.00339087 -0.0797522
--0.230074 -0.440424 -0.0808137 -0.16581 0.848087 -0.0205055 -0.296507
-0.0507298 0.357646 -0.480663;
-#X coords 0 1 99 -1 300 100 1;
-#X restore 572 53 graph;
-#N canvas 0 0 394 270 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 87 \; \$1 xticks 0 1 10 \; \$1 xlabel 1.1 0 20 40 60 80 100
-\; \$1 yticks 0 0.25 2 \; \$1 ylabel 105 -1 -0.5 0 0.5 1;
-#X msg 33 45 symbol bufcopy1 \, symbol bufcopy2 \, symbol bufcopy3
-\, symbol bufcopy4;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 308 518 pd init;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufcopy2 100 float 1;
-#A 0 0.0280782 -0.0422518 0.554172 -0.1767 1 0.156081 -0.876136 -0.11387
--0.208158 -0.115016 0.0598257 -0.00410798 -0.0287769 0.247451 -0.0203781
--0.0739293 0.0539849 0.0833412 0.0777782 0.109606 0.0072245 -0.146124
--0.0299617 -0.123235 -0.0657105 0.00113347 -0.00988766 -0.00689244
-0.0115624 -0.0669525 -0.0608685 -0.0229969 0.00134453 -0.0204591 0.0424171
--0.0235819 -0.0606822 -0.0179317 -0.0448778 -0.00991407 0.042282 0.0112347
-0.00659574 -0.0135941 -0.0447328 -0.0525184 -0.00989902 0.00836445
--0.00132186 0.0146546 -0.000898497 -0.0431941 -0.00978027 -0.0237825
--0.0115866 0.0196117 0.0161645 0.000628861 -0.0328125 -0.0393695 -0.0745345
--0.0206123 0.0146289 -0.0234719 0.0331914 -0.00930453 -0.0477893 0.0219494
--0.0180073 0.0137906 0.0326551 0.0580143 -0.0392246 -0.0196385 -0.0287846
--0.0691948 0.00847168 0.0580848 -0.00780806 0.111565 -0.0162468 -0.142128
--0.0371815 -0.0349165 -0.0117682 -0.022951 -0.012041 -0.245803 -0.0872
--0.246933 -0.3275 0.130284 0.138918 -0.150566 0.816856 0.0117589 0.391891
-0.00536379 0.00963765 0.49746;
-#X coords 0 1 99 -1 300 100 1;
-#X restore 572 167 graph;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufcopy3 100 float 0;
-#X coords 0 1 99 -1 300 100 1;
-#X restore 573 319 graph;
-#X text 111 357 abbreviation;
-#X obj 211 251 vasp.update;
-#X text 53 224 original;
-#X text 55 99 left outlet: original \, right outlet copy;
-#X text 183 226 copy;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufcopy4 100 float 0;
-#X coords 0 1 99 -1 300 100 1;
-#X restore 573 435 graph;
-#X msg 54 169 vasp bufcopy1 bufcopy2;
-#X obj 54 204 vasp.copy bufcopy3 bufcopy4;
-#X msg 308 454 vasp bufcopy3 bufcopy4;
-#X obj 53 356 vasp.c->;
-#X text 55 62 copy a complex vasp to another;
-#X text 50 405 related object;
-#X obj 162 404 vasp.copy;
-#X obj 249 404 vasp.=;
-#X obj 50 500 VASP-HELP;
-#X connect 13 0 14 0;
-#X connect 14 1 8 0;
-#X connect 15 0 2 0;
diff --git a/externals/grill/vasp/pd-help/vasp_cdiv.pd b/externals/grill/vasp/pd-help/vasp_cdiv.pd
deleted file mode 100644
index bb1a5073..00000000
--- a/externals/grill/vasp/pd-help/vasp_cdiv.pd
+++ /dev/null
@@ -1,16 +0,0 @@
-#N canvas 235 228 623 356 10;
-#X text 52 141 c \, d ... right operand;
-#X text 52 126 a \, b ... left operand;
-#X text 52 111 e \, f ... target buffers;
-#X text 51 199 differences in lengths are adjusted to smaller vector
-of each pair;
-#X text 52 81 e+if=(a+ib)/(c+id);
-#X text 52 168 vasp.c/ needs 2 vectors per operand which are treated
-as pairs;
-#X text 52 65 complex division;
-#X obj 55 34 cnv 15 15 15 empty empty vasp.c/ 0 10 1 14 -262144 -1
-0;
-#X obj 277 86 vasp.c/;
-#X obj 173 280 vasp.c!/;
-#X obj 54 317 VASP-HELP;
-#X text 51 281 related object:;
diff --git a/externals/grill/vasp/pd-help/vasp_cdivr.pd b/externals/grill/vasp/pd-help/vasp_cdivr.pd
deleted file mode 100644
index 5aa1c1a2..00000000
--- a/externals/grill/vasp/pd-help/vasp_cdivr.pd
+++ /dev/null
@@ -1,18 +0,0 @@
-#N canvas 231 208 570 384 10;
-#X text 52 141 c \, d ... right operand;
-#X text 52 126 a \, b ... left operand;
-#X text 52 111 e \, f ... target buffers;
-#X text 51 199 differences in lengths are adjusted to smaller vector
-of each pair;
-#X text 52 81 e+if=(a+ib)/(c+id);
-#X text 52 168 vasp.c/ needs 2 vectors per operand which are treated
-as pairs;
-#X obj 55 34 cnv 15 15 15 empty empty vasp.c!/ 0 10 1 14 -262144 -1
-0;
-#X text 52 65 reverse complex division;
-#X obj 283 79 vasp.c!/;
-#X obj 186 308 vasp.c/;
-#X obj 186 287 vasp.c*;
-#X obj 53 346 VASP-HELP;
-#X text 92 348 - vasp overview;
-#X text 51 285 related objects:;
diff --git a/externals/grill/vasp/pd-help/vasp_cfft.pd b/externals/grill/vasp/pd-help/vasp_cfft.pd
deleted file mode 100644
index e6f46809..00000000
--- a/externals/grill/vasp/pd-help/vasp_cfft.pd
+++ /dev/null
@@ -1,98 +0,0 @@
-#N canvas 48 55 915 635 10;
-#N canvas 92 108 405 306 inside 0;
-#X obj 66 154 soundfiler;
-#X obj 203 210 s \$0-sample-length;
-#X obj 66 208 s \$0-draw_display;
-#X msg 259 135 resize \$1;
-#X obj 259 88 loadbang;
-#X obj 67 53 loadbang;
-#X msg 259 109 88200;
-#X obj 259 157 s bufre;
-#X obj 269 181 s bufim;
-#X obj 67 101 filelisthandler \$0;
-#X msg 67 79 4;
-#X obj 66 178 t b;
-#X msg 67 133 read \$1 bufre;
-#X connect 0 0 11 0;
-#X connect 3 0 7 0;
-#X connect 3 0 8 0;
-#X connect 4 0 6 0;
-#X connect 5 0 10 0;
-#X connect 6 0 3 0;
-#X connect 6 0 1 0;
-#X connect 9 0 12 0;
-#X connect 10 0 9 0;
-#X connect 11 0 2 0;
-#X connect 12 0 0 0;
-#X restore 781 473 pd inside;
-#X obj 75 32 cnv 15 15 15 empty empty vasp.cfft 0 10 1 14 -262144 -1
-0;
-#X obj 326 113 filelist \$0;
-#X text 75 52 complex fourier transformation (giant);
-#X text 70 68 cfft needs two buffers;
-#X msg 67 113 vasp bufre;
-#X obj 67 136 vasp.noise;
-#X text 151 112 generate white noise or;
-#X obj 67 159 vasp.* 0.5;
-#X obj 67 182 vasp.update;
-#X obj 67 205 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X obj 61 411 vasp.update;
-#X obj 61 434 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X obj 61 388 vasp.c!fft;
-#X obj 61 276 vasp.cfft;
-#X msg 61 253 vasp bufre bufim;
-#X obj 61 299 vasp.update;
-#X obj 61 322 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X msg 61 365 vasp bufre bufim;
-#X text 758 100 real;
-#X text 768 242 imaginary;
-#X text 524 387 0 Hz;
-#X text 660 387 sr/2;
-#X obj 558 117 wavedisplay-select bufre \$0;
-#X obj 559 266 wavedisplay-select bufim \$0;
-#X text 166 472 <-- click to open;
-#X text 789 387 44.1 kHz;
-#X text 145 274 convert a signal from the time domain into the frequency
-domain. each sample now represents a frequency (range from 0 to 44.1
-kHz).;
-#X obj 59 473 filter_example;
-#X obj 352 478 dac~;
-#N canvas 0 0 413 295 clear_buffers 0;
-#X obj 49 73 vasp.= 0;
-#X obj 49 49 inlet;
-#X obj 49 97 vasp.u;
-#X obj 49 118 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 2 0;
-#X connect 1 0 0 0;
-#X connect 2 0 3 0;
-#X restore 486 472 pd clear_buffers;
-#X obj 352 434 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X text 374 428 play;
-#X text 486 428 clear;
-#X obj 352 455 tabplay~ bufre;
-#X msg 486 449 vasp bufre bufim;
-#X text 67 556 related objects:;
-#X obj 68 596 VASP-HELP;
-#X text 110 595 - vasp overview;
-#X obj 379 557 vasp.r!fft;
-#X obj 296 557 vasp.rfft;
-#X obj 210 557 vasp.c!fft;
-#X connect 5 0 6 0;
-#X connect 6 0 8 0;
-#X connect 8 0 9 0;
-#X connect 9 0 10 0;
-#X connect 11 0 12 0;
-#X connect 13 0 11 0;
-#X connect 14 0 16 0;
-#X connect 15 0 14 0;
-#X connect 16 0 17 0;
-#X connect 18 0 13 0;
-#X connect 31 0 34 0;
-#X connect 34 0 29 0;
-#X connect 34 0 29 1;
-#X connect 35 0 30 0;
diff --git a/externals/grill/vasp/pd-help/vasp_channel.pd b/externals/grill/vasp/pd-help/vasp_channel.pd
deleted file mode 100644
index 2734b3f6..00000000
--- a/externals/grill/vasp/pd-help/vasp_channel.pd
+++ /dev/null
@@ -1,10 +0,0 @@
-#N canvas 87 123 442 407 10;
-#X obj 58 31 cnv 15 15 15 empty empty vasp.channel 0 10 1 14 -262144
--1 0;
-#X obj 59 163 vasp.channel;
-#X obj 161 209 vasp.channel?;
-#X text 57 69 set channel index of vectors in vasp;
-#X text 54 105 only used for interleaved stereo-files;
-#X text 57 210 related object;
-#X text 52 123 (MaxMSP version of vasp);
-#X obj 61 268 VASP-HELP;
diff --git a/externals/grill/vasp/pd-help/vasp_check.pd b/externals/grill/vasp/pd-help/vasp_check.pd
deleted file mode 100644
index ef9311e4..00000000
--- a/externals/grill/vasp/pd-help/vasp_check.pd
+++ /dev/null
@@ -1,26 +0,0 @@
-#N canvas 219 135 653 496 10;
-#X text 250 113 buffer length = 88200 samples;
-#X text 67 72 checks the dimensions of a vasp and corrects them;
-#X obj 70 32 cnv 15 15 15 empty empty vasp.check 0 10 1 14 -262144
--1 0;
-#X obj 69 114 table bufchk 88200;
-#X text 250 253 corrected vasp with maximum length at offset 44100
-;
-#X obj 69 227 prepend set;
-#X msg 69 159 vasp 88200 bufchk 44100 0;
-#X text 250 158 vasp with impossible dimensions;
-#X msg 69 254 vasp 44100 bufchk 44100 0;
-#X obj 69 186 vasp.check;
-#X obj 65 334 vasp.chk;
-#X text 139 333 abbreviation;
-#X text 64 363 related objects:;
-#X obj 67 393 VASP-HELP;
-#X text 52 226 *;
-#X text 62 432 * prepend-object from iemlib2 (http://pd.iem.at/iemlib)
-;
-#X obj 337 362 vasp.frames?;
-#X obj 187 362 vasp.n?;
-#X obj 245 362 vasp.offset?;
-#X connect 5 0 8 0;
-#X connect 6 0 9 0;
-#X connect 9 0 5 0;
diff --git a/externals/grill/vasp/pd-help/vasp_cifft.pd b/externals/grill/vasp/pd-help/vasp_cifft.pd
deleted file mode 100644
index 22f10920..00000000
--- a/externals/grill/vasp/pd-help/vasp_cifft.pd
+++ /dev/null
@@ -1,89 +0,0 @@
-#N canvas 81 48 890 610 10;
-#N canvas 92 108 396 316 inside 0;
-#X obj 66 154 soundfiler;
-#X obj 192 209 s \$0-sample-length;
-#X obj 66 208 s \$0-draw_display;
-#X msg 241 140 resize \$1;
-#X obj 241 93 loadbang;
-#X obj 67 53 loadbang;
-#X msg 241 114 88200;
-#X obj 67 101 filelisthandler \$0;
-#X msg 67 79 4;
-#X obj 241 162 s bufrei;
-#X obj 251 186 s bufimi;
-#X obj 66 178 t b;
-#X msg 67 133 read \$1 bufrei;
-#X connect 0 0 11 0;
-#X connect 3 0 9 0;
-#X connect 3 0 10 0;
-#X connect 4 0 6 0;
-#X connect 5 0 8 0;
-#X connect 6 0 3 0;
-#X connect 6 0 1 0;
-#X connect 7 0 12 0;
-#X connect 8 0 7 0;
-#X connect 11 0 2 0;
-#X connect 12 0 0 0;
-#X restore 781 472 pd inside;
-#X obj 75 32 cnv 15 15 15 empty empty vasp.c!fft 0 10 1 14 -262144
--1 0;
-#X obj 74 90 filelist \$0;
-#X obj 61 411 vasp.update;
-#X obj 61 434 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X obj 61 388 vasp.c!fft;
-#X obj 61 233 vasp.cfft;
-#X obj 61 254 vasp.update;
-#X obj 61 275 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X text 801 97 real;
-#X text 768 242 imaginary;
-#X text 524 385 0 Hz;
-#X text 660 384 sr/2;
-#X text 171 473 <-- click to open;
-#X text 789 386 44.1 kHz;
-#X obj 352 474 dac~;
-#N canvas 0 0 413 295 clear_buffers 0;
-#X obj 49 73 vasp.= 0;
-#X obj 49 49 inlet;
-#X obj 49 97 vasp.u;
-#X obj 49 118 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 2 0;
-#X connect 1 0 0 0;
-#X connect 2 0 3 0;
-#X restore 486 474 pd clear_buffers;
-#X obj 352 431 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X text 374 428 play;
-#X text 486 429 clear;
-#X obj 59 473 filter_examplei;
-#X text 71 53 invers complex fourier transformation (giant);
-#X text 69 66 c!fft needs two buffers;
-#X msg 486 451 vasp bufrei bufimi;
-#X obj 352 451 tabplay~ bufrei;
-#X msg 61 212 vasp bufrei bufimi;
-#X text 189 211 transform to frequency domain;
-#X text 152 247 each sample of the buffer now represents a frequency
-(range from 0 to 44.1 kHz).;
-#X text 60 306 to get back to the sourcefile in time domain either
-use 3 more times vasp.cfft or just once vasp.c!fft;
-#X text 195 364 invers cfft to transform back to time domain;
-#X msg 61 365 vasp bufrei bufimi;
-#X obj 525 112 wavedisplay-simple bufrei \$0;
-#X obj 527 263 wavedisplay-simple bufimi \$0;
-#X text 59 538 related objects:;
-#X obj 59 574 VASP-HELP;
-#X obj 371 539 vasp.r!fft;
-#X obj 288 539 vasp.rfft;
-#X obj 202 539 vasp.cfft;
-#X connect 3 0 4 0;
-#X connect 5 0 3 0;
-#X connect 6 0 7 0;
-#X connect 7 0 8 0;
-#X connect 17 0 24 0;
-#X connect 23 0 16 0;
-#X connect 24 0 15 0;
-#X connect 24 0 15 1;
-#X connect 25 0 6 0;
-#X connect 30 0 5 0;
diff --git a/externals/grill/vasp/pd-help/vasp_cmul.pd b/externals/grill/vasp/pd-help/vasp_cmul.pd
deleted file mode 100644
index 1847cf69..00000000
--- a/externals/grill/vasp/pd-help/vasp_cmul.pd
+++ /dev/null
@@ -1,21 +0,0 @@
-#N canvas 262 173 610 420 10;
-#X text 54 148 c \, d ... right operand;
-#X text 54 130 a \, b ... left operand;
-#X text 54 112 e \, f ... target buffers;
-#X text 54 197 differences in lengths are adjusted to smaller vector
-of each pair;
-#X text 54 82 e+if=(a+ib)*(c+id);
-#X text 54 166 vasp.c* needs 2 vectors per operand which are treated
-as pairs;
-#X text 54 64 complex multiplication;
-#X obj 55 29 cnv 15 15 15 empty empty vasp.c* 0 10 1 14 -262144 -1
-0;
-#X obj 286 81 vasp.c*;
-#X text 46 271 related objects:;
-#X obj 182 314 vasp.c!-;
-#X obj 263 293 vasp.c!/;
-#X obj 263 272 vasp.c/;
-#X obj 182 293 vasp.c-;
-#X obj 50 347 VASP-HELP;
-#X obj 182 272 vasp.c+;
-#X obj 263 314 vasp.c=;
diff --git a/externals/grill/vasp/pd-help/vasp_cnoise.pd b/externals/grill/vasp/pd-help/vasp_cnoise.pd
deleted file mode 100644
index 7485db5b..00000000
--- a/externals/grill/vasp/pd-help/vasp_cnoise.pd
+++ /dev/null
@@ -1,53 +0,0 @@
-#N canvas 47 54 881 559 10;
-#X obj 71 32 cnv 15 15 15 empty empty vasp.cnoise 0 10 1 14 -262144
--1 0;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufcnoise1 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 500 96 graph;
-#N canvas 0 0 402 278 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 4410 10 \; \$1 xlabel 1.1 0 22050 44100
-66150 88200 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 94000 -1 -0.5 0 0.5
-1;
-#X msg 33 45 symbol bufcnoise1 \, symbol bufcnoise2;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 775 366 pd init;
-#X obj 65 217 vasp.update;
-#X obj 65 194 vasp.* 0.5;
-#N canvas 40 55 247 122 clear_buffers 0;
-#X obj 54 79 vasp.update;
-#X obj 54 56 vasp.= 0;
-#X obj 54 26 inlet;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X restore 504 389 pd clear_buffers;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufcnoise2 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 501 228 graph;
-#X text 71 63 vasp complex noise generator;
-#X text 71 83 needs 2 buffers;
-#X msg 65 127 vasp bufcnoise1 bufcnoise2;
-#X text 267 140 into two buffers;
-#X obj 65 171 vasp.cnoise;
-#X obj 324 411 dac~;
-#X obj 324 345 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X text 346 344 play;
-#X msg 504 366 vasp bufcnoise1 bufcnoise2;
-#X obj 324 366 tabplay~ bufcnoise1;
-#X obj 343 388 tabplay~ bufcnoise2;
-#X obj 64 505 VASP-HELP;
-#X obj 189 472 vasp.noise;
-#X text 64 471 related object:;
-#X text 265 126 generate complex noise;
-#X connect 4 0 3 0;
-#X connect 9 0 11 0;
-#X connect 11 0 4 0;
-#X connect 13 0 16 0;
-#X connect 13 0 17 0;
-#X connect 15 0 5 0;
-#X connect 16 0 12 0;
-#X connect 17 0 12 1;
diff --git a/externals/grill/vasp/pd-help/vasp_cnorm.pd b/externals/grill/vasp/pd-help/vasp_cnorm.pd
deleted file mode 100644
index 403165dd..00000000
--- a/externals/grill/vasp/pd-help/vasp_cnorm.pd
+++ /dev/null
@@ -1,94 +0,0 @@
-#N canvas 36 36 806 582 10;
-#X obj 71 32 cnv 15 15 15 empty empty vasp.cnorm 0 10 1 14 -262144
--1 0;
-#X obj 72 113 filelist \$0;
-#N canvas 40 55 281 170 clear_buffers 0;
-#X obj 54 79 vasp.update;
-#X obj 54 56 vasp.= 0;
-#X obj 54 26 inlet;
-#X obj 54 108 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 3 0;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X restore 479 494 pd clear_buffers;
-#X obj 59 247 vasp.update;
-#X obj 59 267 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X obj 337 493 dac~;
-#X obj 337 455 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X text 358 454 play;
-#N canvas 92 108 432 397 inside 0;
-#X obj 66 169 soundfiler;
-#X obj 202 278 s \$0-sample-length;
-#X obj 66 223 s \$0-draw_display;
-#X msg 240 212 resize \$1;
-#X obj 66 47 loadbang;
-#X obj 66 113 filelisthandler \$0;
-#X msg 66 91 4;
-#X obj 240 234 s bufcnorm1;
-#X obj 241 255 s bufcnorm2;
-#X msg 235 92 88200;
-#X obj 66 69 t b b;
-#X obj 66 193 t b;
-#X msg 66 145 read \$1 bufcnorm1;
-#X connect 0 0 11 0;
-#X connect 3 0 7 0;
-#X connect 3 0 8 0;
-#X connect 4 0 10 0;
-#X connect 5 0 12 0;
-#X connect 6 0 5 0;
-#X connect 9 0 3 0;
-#X connect 9 0 1 0;
-#X connect 10 0 6 0;
-#X connect 10 1 9 0;
-#X connect 11 0 2 0;
-#X connect 12 0 0 0;
-#X restore 668 494 pd inside;
-#X obj 397 118 wavedisplay-simple bufcnorm1 \$0;
-#X obj 398 275 wavedisplay-simple bufcnorm2 \$0;
-#X msg 59 207 vasp bufcnorm1 bufcnorm2;
-#X text 235 206 cfft;
-#X obj 59 227 vasp.cfft;
-#X obj 59 343 vasp.update;
-#X obj 59 363 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X msg 59 303 vasp bufcnorm1 bufcnorm2;
-#X obj 59 323 vasp.cnorm;
-#X obj 59 434 vasp.update;
-#X obj 59 454 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X msg 59 394 vasp bufcnorm1 bufcnorm2;
-#X text 235 393 inverse cfft;
-#X obj 59 414 vasp.c!fft;
-#X obj 337 473 tabplay~ bufcnorm2;
-#X obj 202 493 dac~;
-#X obj 202 455 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X text 223 454 play;
-#X obj 202 473 tabplay~ bufcnorm1;
-#X text 668 97 real;
-#X text 643 253 imaginary;
-#X msg 479 474 vasp bufcnorm1 bufcnorm2;
-#X text 71 66 needs two buffers (or multiple pairs);
-#X text 71 49 sets radius of all complex sample pairs to unity (1)
-;
-#X obj 58 549 VASP-HELP;
-#X text 100 548 - vasp overview;
-#X connect 3 0 4 0;
-#X connect 6 0 23 0;
-#X connect 11 0 13 0;
-#X connect 13 0 3 0;
-#X connect 14 0 15 0;
-#X connect 16 0 17 0;
-#X connect 17 0 14 0;
-#X connect 18 0 19 0;
-#X connect 20 0 22 0;
-#X connect 22 0 18 0;
-#X connect 23 0 5 0;
-#X connect 23 0 5 1;
-#X connect 25 0 27 0;
-#X connect 27 0 24 0;
-#X connect 27 0 24 1;
-#X connect 30 0 2 0;
diff --git a/externals/grill/vasp/pd-help/vasp_copy.pd b/externals/grill/vasp/pd-help/vasp_copy.pd
deleted file mode 100644
index f75ecad3..00000000
--- a/externals/grill/vasp/pd-help/vasp_copy.pd
+++ /dev/null
@@ -1,70 +0,0 @@
-#N canvas 21 60 971 578 10;
-#X obj 62 33 cnv 15 15 15 empty empty vasp.-> 0 10 1 14 -262144 -1
-0;
-#X text 55 81 optional argument/right inlet: value/vasp;
-#X obj 235 402 vasp.update;
-#N canvas 0 0 262 199 clear_buffer 0;
-#X obj 49 73 vasp.= 0;
-#X obj 49 49 inlet;
-#X obj 49 97 vasp.u;
-#X connect 0 0 2 0;
-#X connect 1 0 0 0;
-#X restore 380 379 pd clear_buffer;
-#X obj 50 500 VASP-HELP;
-#X text 55 62 copy an array/buffer to a new one;
-#X obj 57 452 vasp.->;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufcopy1 100 float 1;
-#A 0 0 0 0 0.0599997 0.0899995 0.119999 0.179999 0.239999 0.259999
-0.279999 0.299998 0.309998 0.319998 0.323998 0.327998 0.331998 0.335998
-0.339998 0.339998 0.339998 0.339998 0.339998 0.309998 0.279999 0.179999
-0.0799996 -0.0599997 -0.0999995 -0.109999 -0.119999 -0.109999 -0.0999995
--0.0899995 -0.0799996 -0.0599997 -0.0399998 -0.0199999 2.30968e-008
-0.0199999 0.0799996 0.139999 0.259999 0.239999 0.119999 1.86265e-008
--0.0299998 -0.0599997 -0.0899995 -0.119999 -0.123333 -0.126666 -0.129999
--0.133333 -0.136666 -0.139999 -0.133333 -0.126666 -0.119999 -0.113333
--0.106666 -0.0999995 -0.0533331 -0.00666663 0.0399998 0.0866662 0.133333
-0.179999 0.239999 0.299998 0.379998 0.279999 0.159999 0.189999 0.219999
-0.299998 0.379998 0.459998 0.539997 0.595997 0.651997 0.707996 0.763996
-0.819996 0.379998 0.239999 0.0999995 0.0949996 0.0899996 0.0849996
-0.0799997 0.139999 0.199999 0.0399999 0.0999995 0 0 0 0 0 0;
-#X coords 0 1 99 -1 300 100 1;
-#X restore 621 72 graph;
-#N canvas 0 0 392 268 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 1 10 \; \$1 xlabel 1.1 0 20 40 60 80 100
-\; \$1 yticks 0 0.25 2 \; \$1 ylabel 105 -1 -0.5 0 0.5 1;
-#X msg 33 45 symbol bufcopy1 \, symbol bufcopy2 \, symbol bufcopy3
-;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 711 457 pd init;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufcopy2 100 float 0;
-#X coords 0 1 99 -1 300 100 1;
-#X restore 621 186 graph;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufcopy3 100 float 0;
-#X coords 0 1 99 -1 300 100 1;
-#X restore 621 301 graph;
-#X text 111 453 abbreviation;
-#X msg 54 169 vasp bufcopy1;
-#X obj 157 281 vasp.update;
-#X msg 380 354 vasp bufcopy2 bufcopy3;
-#X text 53 254 original;
-#X obj 235 379 vasp.= bufcopy1;
-#X msg 235 354 vasp bufcopy2;
-#X obj 54 234 vasp.copy bufcopy2;
-#X msg 178 226 vasp bufcopy3;
-#X msg 178 203 vasp bufcopy2;
-#X text 66 351 or the other way round:;
-#X text 164 254 copy;
-#X text 55 99 left outlet: original \, right outlet: copy !!!;
-#X text 377 330 clear buffer 2 and 3;
-#X connect 12 0 18 0;
-#X connect 14 0 3 0;
-#X connect 16 0 2 0;
-#X connect 17 0 16 0;
-#X connect 18 1 13 0;
-#X connect 19 0 18 1;
-#X connect 20 0 18 1;
diff --git a/externals/grill/vasp/pd-help/vasp_cosc.pd b/externals/grill/vasp/pd-help/vasp_cosc.pd
deleted file mode 100644
index bbc4941c..00000000
--- a/externals/grill/vasp/pd-help/vasp_cosc.pd
+++ /dev/null
@@ -1,63 +0,0 @@
-#N canvas 47 54 885 488 10;
-#N canvas 0 0 452 302 Hz_to_period_length 0;
-#X floatatom 125 238 0 0 0;
-#X obj 125 142 t b f;
-#X text 164 238 period length in samples (float);
-#X floatatom 125 80 0 0 0;
-#X obj 125 206 / 1;
-#X text 170 79 frequency in Hz;
-#X obj 53 142 samplerate~;
-#X obj 53 119 loadbang;
-#X floatatom 125 175 5 0 0;
-#X connect 1 0 8 0;
-#X connect 1 1 4 1;
-#X connect 3 0 1 0;
-#X connect 4 0 0 0;
-#X connect 6 0 8 0;
-#X connect 7 0 6 0;
-#X connect 8 0 4 0;
-#X restore 78 302 pd Hz_to_period_length;
-#X obj 71 32 cnv 15 15 15 empty empty vasp.cosc 0 10 1 14 -262144 -1
-0;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufcosc1 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 500 96 graph;
-#N canvas 0 0 400 276 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 4410 10 \; \$1 xlabel 1.1 0 22050 44100
-66150 88200 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 94000 -1 -0.5 0 0.5
-1;
-#X msg 33 45 symbol bufcosc1 \, symbol bufcosc2;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 781 387 pd init;
-#X text 71 83 optional argument/right inlet: frequency in period length
-in samples;
-#X obj 77 241 vasp.update;
-#X obj 77 218 vasp.* 0.5;
-#X msg 503 360 vasp bufcosc1 bufcosc2;
-#N canvas 40 55 247 122 clear_buffers 0;
-#X obj 54 79 vasp.update;
-#X obj 54 56 vasp.= 0;
-#X obj 54 26 inlet;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X restore 503 383 pd clear_buffers;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufcosc2 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 501 228 graph;
-#X text 71 63 vasp complex sine wave generator;
-#X text 241 123 generate a complex sinewave;
-#X text 241 135 at 1 Hz into two buffers;
-#X obj 77 194 vasp.cosc 44100;
-#X msg 77 127 vasp bufcosc1 bufcosc2;
-#X floatatom 162 168 7 0 0;
-#X text 239 168 set period length (samples);
-#X obj 79 424 VASP-HELP;
-#X connect 6 0 5 0;
-#X connect 7 0 8 0;
-#X connect 13 0 6 0;
-#X connect 14 0 13 0;
-#X connect 15 0 13 1;
diff --git a/externals/grill/vasp/pd-help/vasp_cpowi.pd b/externals/grill/vasp/pd-help/vasp_cpowi.pd
deleted file mode 100644
index 8d5d8047..00000000
--- a/externals/grill/vasp/pd-help/vasp_cpowi.pd
+++ /dev/null
@@ -1,84 +0,0 @@
-#N canvas 28 51 892 605 10;
-#N canvas 92 108 411 413 inside 0;
-#X obj 66 154 soundfiler;
-#X obj 84 238 s \$0-sample-length;
-#X obj 66 208 s \$0-draw_display;
-#X msg 214 206 resize \$1;
-#X obj 67 53 loadbang;
-#X obj 66 178 t b f f;
-#X obj 67 101 filelisthandler \$0;
-#X msg 67 133 read -resize \$1 bufcpowi1;
-#X obj 214 228 s bufcpowi1;
-#X obj 224 252 s bufcpowi2;
-#X msg 67 79 1;
-#X connect 0 0 5 0;
-#X connect 3 0 8 0;
-#X connect 3 0 9 0;
-#X connect 4 0 10 0;
-#X connect 5 0 2 0;
-#X connect 5 1 1 0;
-#X connect 5 2 3 0;
-#X connect 6 0 7 0;
-#X connect 7 0 0 0;
-#X connect 10 0 6 0;
-#X restore 693 501 pd inside;
-#X obj 75 32 cnv 15 15 15 empty empty vasp.cpowi 0 10 1 14 -262144
--1 0;
-#X obj 77 139 filelist \$0;
-#X obj 59 482 vasp.update;
-#X obj 59 502 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X obj 59 442 vasp.c!fft;
-#X obj 59 264 vasp.cfft;
-#X obj 59 284 vasp.update;
-#X obj 59 304 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X obj 360 498 dac~;
-#N canvas 0 0 413 295 clear_buffers 0;
-#X obj 49 73 vasp.= 0;
-#X obj 49 49 inlet;
-#X obj 49 97 vasp.u;
-#X obj 49 118 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 2 0;
-#X connect 1 0 0 0;
-#X connect 2 0 3 0;
-#X restore 494 498 pd clear_buffers;
-#X obj 360 455 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X text 382 452 play;
-#X text 494 453 clear;
-#X text 74 61 complex integer power function;
-#X text 74 75 complex sample ^ n;
-#X text 74 101 argument: exponent;
-#X msg 59 244 vasp bufcpowi1 bufcpowi2;
-#X obj 470 111 wavedisplay-simple bufcpowi1 \$0;
-#X obj 471 254 wavedisplay-simple bufcpowi2 \$0;
-#X obj 360 475 tabplay~ bufcpowi1;
-#X msg 494 475 vasp bufcpowi1 bufcpowi2;
-#X obj 59 368 vasp.update;
-#X obj 59 388 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X msg 59 328 vasp bufcpowi1 bufcpowi2;
-#X obj 59 348 vasp.cpowi 2;
-#X msg 59 422 vasp bufcpowi1 bufcpowi2;
-#X obj 59 462 vasp.opt;
-#X text 75 88 needs two vectors (or more complex pairs);
-#X obj 59 552 VASP-HELP;
-#X text 222 242 1 transform to frequency domain;
-#X text 219 310 2 complex int power function;
-#X text 217 404 3 transform back to time domain;
-#X connect 3 0 4 0;
-#X connect 5 0 27 0;
-#X connect 6 0 7 0;
-#X connect 7 0 8 0;
-#X connect 11 0 20 0;
-#X connect 17 0 6 0;
-#X connect 20 0 9 0;
-#X connect 20 0 9 1;
-#X connect 21 0 10 0;
-#X connect 22 0 23 0;
-#X connect 24 0 25 0;
-#X connect 25 0 22 0;
-#X connect 26 0 5 0;
-#X connect 27 0 3 0;
diff --git a/externals/grill/vasp/pd-help/vasp_crsub.pd b/externals/grill/vasp/pd-help/vasp_crsub.pd
deleted file mode 100644
index 8a70d962..00000000
--- a/externals/grill/vasp/pd-help/vasp_crsub.pd
+++ /dev/null
@@ -1,22 +0,0 @@
-#N canvas 262 173 566 417 10;
-#X text 56 204 differences in lengths are adjusted to smaller vector
-of each pair;
-#X text 59 142 c \, d ... right operand;
-#X text 59 127 a \, b ... left operand;
-#X text 59 83 e+if=(c+id)-(a+ib);
-#X text 59 112 e \, f ... target buffers;
-#X text 59 170 vasp.c- needs 2 vectors per operand which are treated
-as pairs;
-#X text 59 67 complex inverse substraction;
-#X obj 55 34 cnv 15 15 15 empty empty vasp.c!- 0 10 1 14 -262144 -1
-0;
-#X obj 286 96 vasp.c!-;
-#X text 46 287 related objects:;
-#X obj 265 330 vasp.c!/;
-#X obj 182 288 vasp.c=;
-#X obj 265 309 vasp.c/;
-#X obj 265 288 vasp.c*;
-#X obj 52 377 VASP-HELP;
-#X text 94 377 - vasp overview;
-#X obj 182 309 vasp.c+;
-#X obj 182 330 vasp.c-;
diff --git a/externals/grill/vasp/pd-help/vasp_cset.pd b/externals/grill/vasp/pd-help/vasp_cset.pd
deleted file mode 100644
index b317f1d2..00000000
--- a/externals/grill/vasp/pd-help/vasp_cset.pd
+++ /dev/null
@@ -1,20 +0,0 @@
-#N canvas 232 203 575 403 10;
-#X text 57 188 differences in lengths are adjusted to smaller vector
-of each pair;
-#X text 58 124 c \, d is the target;
-#X text 58 109 a \, b is the source;
-#X text 58 84 (a+ib)=(c+id);
-#X text 58 153 vasp.c= needs 2 vectors per operand which are treated
-as pairs;
-#X text 58 68 complex =;
-#X obj 55 34 cnv 15 15 15 empty empty vasp.c= 0 10 1 14 -262144 -1
-0;
-#X obj 291 90 vasp.c=;
-#X text 58 265 related objects:;
-#X obj 194 308 vasp.c!-;
-#X obj 277 308 vasp.c!/;
-#X obj 277 287 vasp.c/;
-#X obj 277 266 vasp.c*;
-#X obj 194 287 vasp.c-;
-#X obj 57 352 VASP-HELP;
-#X obj 194 266 vasp.c+;
diff --git a/externals/grill/vasp/pd-help/vasp_csqr.pd b/externals/grill/vasp/pd-help/vasp_csqr.pd
deleted file mode 100644
index 23554fe5..00000000
--- a/externals/grill/vasp/pd-help/vasp_csqr.pd
+++ /dev/null
@@ -1,79 +0,0 @@
-#N canvas 28 51 892 642 10;
-#N canvas 92 108 415 417 inside 0;
-#X obj 66 154 soundfiler;
-#X obj 84 238 s \$0-sample-length;
-#X obj 66 208 s \$0-draw_display;
-#X msg 214 206 resize \$1;
-#X obj 67 53 loadbang;
-#X obj 66 178 t b f f;
-#X obj 67 101 filelisthandler \$0;
-#X msg 67 79 3;
-#X obj 214 228 s bufcsqr1;
-#X obj 224 252 s bufcsqr2;
-#X msg 67 133 read -resize \$1 bufcsqr1;
-#X connect 0 0 5 0;
-#X connect 3 0 8 0;
-#X connect 3 0 9 0;
-#X connect 4 0 7 0;
-#X connect 5 0 2 0;
-#X connect 5 1 1 0;
-#X connect 5 2 3 0;
-#X connect 6 0 10 0;
-#X connect 7 0 6 0;
-#X connect 10 0 0 0;
-#X restore 685 477 pd inside;
-#X obj 75 32 cnv 15 15 15 empty empty vasp.csqr 0 10 1 14 -262144 -1
-0;
-#X obj 77 139 filelist \$0;
-#X obj 59 482 vasp.update;
-#X obj 59 502 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X obj 59 442 vasp.c!fft;
-#X obj 59 264 vasp.cfft;
-#X obj 59 284 vasp.update;
-#X obj 59 304 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X obj 352 474 dac~;
-#N canvas 0 0 413 295 clear_buffers 0;
-#X obj 49 73 vasp.= 0;
-#X obj 49 49 inlet;
-#X obj 49 97 vasp.u;
-#X obj 49 118 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 2 0;
-#X connect 1 0 0 0;
-#X connect 2 0 3 0;
-#X restore 486 474 pd clear_buffers;
-#X obj 352 431 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X text 374 428 play;
-#X text 486 429 clear;
-#X obj 59 368 vasp.update;
-#X obj 59 388 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X obj 59 462 vasp.opt;
-#X text 74 75 complex sample ^ 2;
-#X msg 59 244 vasp bufcsqr1 bufcsqr2;
-#X msg 59 328 vasp bufcsqr1 bufcsqr2;
-#X obj 59 348 vasp.csqr;
-#X msg 59 422 vasp bufcsqr1 bufcsqr2;
-#X obj 352 451 tabplay~ bufcsqr1;
-#X msg 486 451 vasp bufcsqr1 bufcsqr2;
-#X obj 383 123 wavedisplay-simple bufcsqr1 \$0;
-#X obj 383 258 wavedisplay-simple bufcsqr2 \$0;
-#X text 75 88 needs two vectors (or multiple complex pairs);
-#X obj 57 580 VASP-HELP;
-#X connect 3 0 4 0;
-#X connect 5 0 16 0;
-#X connect 6 0 7 0;
-#X connect 7 0 8 0;
-#X connect 11 0 22 0;
-#X connect 14 0 15 0;
-#X connect 16 0 3 0;
-#X connect 18 0 6 0;
-#X connect 19 0 20 0;
-#X connect 20 0 14 0;
-#X connect 21 0 5 0;
-#X connect 22 0 9 0;
-#X connect 22 0 9 1;
-#X connect 23 0 10 0;
diff --git a/externals/grill/vasp/pd-help/vasp_csub.pd b/externals/grill/vasp/pd-help/vasp_csub.pd
deleted file mode 100644
index 35cd2bd7..00000000
--- a/externals/grill/vasp/pd-help/vasp_csub.pd
+++ /dev/null
@@ -1,21 +0,0 @@
-#N canvas 262 173 610 462 10;
-#X text 62 147 c \, d ... right operand;
-#X text 62 132 a \, b ... left operand;
-#X text 62 117 e \, f ... target buffers;
-#X text 60 201 differences in lengths are adjusted to smaller vector
-of each pair;
-#X text 62 87 e+if=(a+ib)-(c+id);
-#X text 61 169 vasp.c- needs 2 vectors per operand which are treated
-as pairs;
-#X text 62 71 complex subtraction;
-#X obj 57 23 cnv 15 15 15 empty empty vasp.c- 0 10 1 14 -262144 -1
-0;
-#X obj 297 94 vasp.c-;
-#X text 46 287 related objects:;
-#X obj 182 330 vasp.c!-;
-#X obj 265 330 vasp.c!/;
-#X obj 182 288 vasp.c=;
-#X obj 265 309 vasp.c/;
-#X obj 265 288 vasp.c*;
-#X obj 52 377 VASP-HELP;
-#X obj 182 309 vasp.c+;
diff --git a/externals/grill/vasp/pd-help/vasp_csubr.pd b/externals/grill/vasp/pd-help/vasp_csubr.pd
deleted file mode 100644
index ed2e3027..00000000
--- a/externals/grill/vasp/pd-help/vasp_csubr.pd
+++ /dev/null
@@ -1,21 +0,0 @@
-#N canvas 266 193 568 419 10;
-#X text 56 204 differences in lengths are adjusted to smaller vector
-of each pair;
-#X text 59 142 c \, d ... right operand;
-#X text 59 127 a \, b ... left operand;
-#X text 59 83 e+if=(c+id)-(a+ib);
-#X text 59 112 e \, f ... target buffers;
-#X text 59 170 vasp.c- needs 2 vectors per operand which are treated
-as pairs;
-#X text 59 67 complex inverse substraction;
-#X obj 55 34 cnv 15 15 15 empty empty vasp.c!- 0 10 1 14 -262144 -1
-0;
-#X obj 286 96 vasp.c!-;
-#X text 46 287 related objects:;
-#X obj 265 330 vasp.c!/;
-#X obj 182 288 vasp.c=;
-#X obj 265 309 vasp.c/;
-#X obj 265 288 vasp.c*;
-#X obj 52 377 VASP-HELP;
-#X obj 182 309 vasp.c+;
-#X obj 182 330 vasp.c-;
diff --git a/externals/grill/vasp/pd-help/vasp_dframes.pd b/externals/grill/vasp/pd-help/vasp_dframes.pd
deleted file mode 100644
index 327ff98e..00000000
--- a/externals/grill/vasp/pd-help/vasp_dframes.pd
+++ /dev/null
@@ -1,65 +0,0 @@
-#N canvas 97 138 905 512 10;
-#X obj 62 303 vasp.osc 22050;
-#X obj 58 31 cnv 15 15 15 empty empty vasp.frames+ 0 10 1 14 -262144
--1 0;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufdfram1 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 530 149 graph;
-#N canvas 0 0 402 278 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 4410 10 \; \$1 xlabel 1.1 0 22050 44100
-66150 88200 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 94000 -1 -0.5 0 0.5
-1;
-#X msg 33 45 symbol bufdfram1;
-#X msg 140 45 symbol bufdfram2;
-#X connect 0 0 2 0;
-#X connect 0 0 3 0;
-#X connect 2 0 1 0;
-#X connect 3 0 1 0;
-#X restore 714 408 pd init;
-#X obj 62 335 vasp.update;
-#X text 119 397 abbreviation;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufdfram2 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 530 268 graph;
-#X text 56 98 !!!all vectors of a vasp have the same framesize/length!!!
-;
-#X obj 77 252 prepend set;
-#X obj 62 220 vasp.frames+ 30000;
-#X obj 63 396 vasp.f+;
-#X obj 63 452 VASP-HELP;
-#X text 57 69 adds a value to the frames of a vasp;
-#X text 58 83 argument/right inlet: value in frames;
-#X obj 278 432 vasp.osc 22050;
-#X obj 278 455 vasp.update;
-#X obj 278 258 nbx 5 14 -1e+037 1e+037 0 0 empty empty empty 0 -6 0
-10 -24198 -1 -1 -161 256;
-#X obj 278 277 * 100;
-#X floatatom 313 280 12 0 0;
-#X msg 62 192 vasp 0 bufdfram1;
-#X text 62 164 add 30000 frames to a buffer with length 0;
-#X obj 296 351 vasp.= 0;
-#X obj 278 306 t b b f;
-#X obj 278 408 vasp.frames+ 0;
-#X msg 278 380 vasp 30000 bufdfram2;
-#X msg 296 330 vasp bufdfram2;
-#X text 278 217 add an amount \, to subtract;
-#X text 278 231 try negative values;
-#X msg 77 274;
-#X connect 0 0 4 0;
-#X connect 8 0 28 0;
-#X connect 9 0 8 0;
-#X connect 9 0 0 0;
-#X connect 14 0 15 0;
-#X connect 16 0 17 0;
-#X connect 17 0 18 0;
-#X connect 17 0 22 0;
-#X connect 19 0 9 0;
-#X connect 22 0 24 0;
-#X connect 22 1 25 0;
-#X connect 22 2 23 1;
-#X connect 23 0 14 0;
-#X connect 24 0 23 0;
-#X connect 25 0 21 0;
diff --git a/externals/grill/vasp/pd-help/vasp_dif.pd b/externals/grill/vasp/pd-help/vasp_dif.pd
deleted file mode 100644
index 039671ca..00000000
--- a/externals/grill/vasp/pd-help/vasp_dif.pd
+++ /dev/null
@@ -1,49 +0,0 @@
-#N canvas 96 158 863 464 10;
-#X obj 71 32 cnv 15 15 15 empty empty vasp.dif 0 10 1 14 -262144 -1
-0;
-#N canvas 40 55 247 122 clear_buffer 0;
-#X obj 54 79 vasp.update;
-#X obj 54 56 vasp.= 0;
-#X obj 54 26 inlet;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X restore 469 375 pd clear_buffer;
-#X obj 77 365 vasp.update;
-#X obj 77 243 vasp.update;
-#X obj 77 340 vasp.opt;
-#X obj 77 315 vasp.dif;
-#X text 70 61 vasp differential function;
-#X text 70 77 argument/right inlet: repetition count (default 1);
-#X obj 77 154 vasp.- 0.5;
-#X obj 77 177 vasp.abs;
-#X obj 77 199 vasp.- 0.25;
-#X obj 77 220 vasp.* 4;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufdif 20 float 0;
-#X coords 0 1 19 -1 300 100 1;
-#X restore 441 173 graph;
-#N canvas 0 0 396 272 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 1 5 \; \$1 xlabel 1.1 0 5 10 15 \; \$1
-yticks 0 0.25 2 \; \$1 ylabel 20.5 -1 -0.5 0 0.5 1;
-#X msg 33 45 symbol bufdif;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 690 378 pd init;
-#X msg 469 354 vasp bufdif;
-#X obj 77 130 vasp.phasor 10;
-#X msg 77 103 vasp bufdif;
-#X msg 77 293 vasp bufdif;
-#X text 170 293 find the gradient of the curve;
-#X text 187 101 generate triangular wave;
-#X obj 79 422 VASP-HELP;
-#X connect 4 0 2 0;
-#X connect 5 0 4 0;
-#X connect 8 0 9 0;
-#X connect 9 0 10 0;
-#X connect 10 0 11 0;
-#X connect 11 0 3 0;
-#X connect 14 0 1 0;
-#X connect 15 0 8 0;
-#X connect 16 0 15 0;
-#X connect 17 0 5 0;
diff --git a/externals/grill/vasp/pd-help/vasp_div.pd b/externals/grill/vasp/pd-help/vasp_div.pd
deleted file mode 100644
index 2b2363e9..00000000
--- a/externals/grill/vasp/pd-help/vasp_div.pd
+++ /dev/null
@@ -1,42 +0,0 @@
-#N canvas 193 184 764 384 10;
-#N canvas 40 55 247 122 clear_buffer 0;
-#X obj 45 79 vasp.update;
-#X obj 45 56 vasp.= 0;
-#X obj 45 26 inlet;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X restore 522 282 pd clear_buffer;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufdiv 88200 float 0;
-#X coords 0 1 88199 -1 300 120 1;
-#X restore 401 42 graph;
-#N canvas 0 0 398 274 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 4410 10 \; \$1 xlabel 1.1 0 22050 44100
-66150 88200 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 94000 -1 -0.5 0 0.5
-1;
-#X msg 33 45 symbol bufdiv;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 655 282 pd init;
-#X obj 51 19 cnv 15 15 15 empty empty vasp./ 0 10 1 14 -262144 -1 0
-;
-#X text 127 122 generate a sine wave at 1Hz;
-#X text 44 82 optional argument/right inlet: divisor;
-#X text 44 67 vasp division;
-#X msg 522 262 vasp bufdiv;
-#X obj 51 271 vasp.update;
-#X obj 51 204 vasp.osc 44100;
-#X obj 51 231 vasp./ 2;
-#X msg 51 175 vasp bufdiv;
-#X obj 51 334 VASP-HELP;
-#X obj 51 144 t b f;
-#X obj 51 123 nbx 5 14 -1e+037 1e+037 0 1 empty empty empty 0 -6 0
-10 -24198 -1 -1 2 256;
-#X connect 7 0 0 0;
-#X connect 9 0 10 0;
-#X connect 10 0 8 0;
-#X connect 11 0 9 0;
-#X connect 13 0 11 0;
-#X connect 13 1 10 1;
-#X connect 14 0 13 0;
diff --git a/externals/grill/vasp/pd-help/vasp_divr.pd b/externals/grill/vasp/pd-help/vasp_divr.pd
deleted file mode 100644
index ee67e6c4..00000000
--- a/externals/grill/vasp/pd-help/vasp_divr.pd
+++ /dev/null
@@ -1,37 +0,0 @@
-#N canvas 193 184 768 388 10;
-#N canvas 40 55 247 122 clear_buffer 0;
-#X obj 45 79 vasp.update;
-#X obj 45 56 vasp.= 0;
-#X obj 45 26 inlet;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X restore 403 225 pd clear_buffer;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufrdiv 88200 float 0;
-#X coords 0 1 88199 -1 300 120 1;
-#X restore 401 42 graph;
-#N canvas 0 0 400 276 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 4410 10 \; \$1 xlabel 1.1 0 22050 44100
-66150 88200 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 94000 -1 -0.5 0 0.5
-1;
-#X msg 33 45 symbol bufrdiv;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 668 245 pd init;
-#X obj 51 19 cnv 15 15 15 empty empty vasp.!/ 0 10 1 14 -262144 -1
-0;
-#X msg 403 205 vasp bufrdiv;
-#X text 44 67 vasp reverse division (value/sample);
-#X text 44 82 optional argument/right inlet: denominator;
-#X obj 49 219 vasp.update;
-#X msg 49 124 vasp bufrdiv;
-#X text 137 124 generate a ramp from 1 to 2;
-#X obj 49 186 vasp.!/ 1;
-#X text 136 185 1/x;
-#X obj 48 298 VASP-HELP;
-#X obj 49 151 vasp.= env 1 0 2 88200;
-#X connect 4 0 0 0;
-#X connect 8 0 13 0;
-#X connect 10 0 7 0;
-#X connect 13 0 10 0;
diff --git a/externals/grill/vasp/pd-help/vasp_doffset.pd b/externals/grill/vasp/pd-help/vasp_doffset.pd
deleted file mode 100644
index c1f7b32c..00000000
--- a/externals/grill/vasp/pd-help/vasp_doffset.pd
+++ /dev/null
@@ -1,28 +0,0 @@
-#N canvas 199 140 620 413 10;
-#X text 55 80 argument/right inlet: value;
-#X obj 41 11 cnv 15 15 15 empty empty vasp.offset+ 0 10 1 14 -262144
--1 0;
-#X text 57 323 abbreviation;
-#X floatatom 149 151 0 0 0;
-#X obj 58 201 prepend set;
-#X obj 58 172 vasp.offset+ 300;
-#X msg 58 128 vasp bufoffsd1;
-#X msg 58 234;
-#X floatatom 336 151 0 0 0;
-#X obj 245 201 prepend set;
-#X obj 245 172 vasp.offset+ 300;
-#X msg 245 128 vasp bufoffsd1 220 bufoffsd2 100;
-#X msg 245 234;
-#X obj 147 324 vasp.o+;
-#X text 55 63 change the offset of a vasp (relatively);
-#X obj 471 286 table bufoffsd1;
-#X obj 471 313 table bufoffsd2;
-#X obj 58 365 VASP-HELP;
-#X connect 3 0 5 1;
-#X connect 4 0 7 0;
-#X connect 5 0 4 0;
-#X connect 6 0 5 0;
-#X connect 8 0 10 1;
-#X connect 9 0 12 0;
-#X connect 10 0 9 0;
-#X connect 11 0 10 0;
diff --git a/externals/grill/vasp/pd-help/vasp_dsize.pd b/externals/grill/vasp/pd-help/vasp_dsize.pd
deleted file mode 100644
index b8c47396..00000000
--- a/externals/grill/vasp/pd-help/vasp_dsize.pd
+++ /dev/null
@@ -1,39 +0,0 @@
-#N canvas 85 111 905 540 10;
-#X obj 58 31 cnv 15 15 15 empty empty vasp.size+ 0 10 1 14 -262144
--1 0;
-#N canvas 0 0 408 284 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 2 5 \; \$1 xlabel 1.1 0 10 20 30 40 50
-\; \$1 yticks 0 0.25 2;
-#X msg 33 45 symbol bufdsize;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 714 408 pd init;
-#X text 119 392 abbreviation;
-#X text 58 83 argument/right inlet: value in samples;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufdsize 176 float 0;
-#X coords 0 1 175 -1 300 100 1;
-#X restore 453 153 graph;
-#X text 62 433 related objects:;
-#X obj 343 460 vasp.frames;
-#X obj 183 460 vasp.size?;
-#X obj 259 460 vasp.size*;
-#X obj 259 437 vasp.size/;
-#X msg 62 152 vasp bufdsize;
-#X text 56 67 add an amount to the size of a buffer/array;
-#X obj 62 225 vasp.size+ 10;
-#X obj 62 271 vasp.size?;
-#X floatatom 62 304 5 0 0;
-#X obj 63 392 vasp.s+;
-#X obj 183 436 vasp.size;
-#X obj 62 504 VASP-HELP;
-#X obj 135 199 nbx 5 14 -1e+037 1e+037 0 0 empty empty empty 0 -6 0
-10 -24198 -1 -1 0 256;
-#X obj 62 129 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
--1;
-#X connect 10 0 12 0;
-#X connect 12 0 13 0;
-#X connect 13 0 14 0;
-#X connect 18 0 12 1;
-#X connect 19 0 10 0;
diff --git a/externals/grill/vasp/pd-help/vasp_equ.pd b/externals/grill/vasp/pd-help/vasp_equ.pd
deleted file mode 100644
index 36c5ce74..00000000
--- a/externals/grill/vasp/pd-help/vasp_equ.pd
+++ /dev/null
@@ -1,53 +0,0 @@
-#N canvas 28 91 940 545 10;
-#X obj 62 41 cnv 15 15 15 empty empty vasp.== 0 10 1 14 -262144 -1
-0;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufequ 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 512 119 graph;
-#N canvas 0 0 402 278 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 4410 10 \; \$1 xlabel 1.1 0 22050 44100
-66150 88200 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 94000 -1 -0.5 0 0.5
-1;
-#X msg 33 45 symbol bufequ \, symbol bufequ1;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 766 421 pd init;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufequ1 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 512 248 graph;
-#X text 60 104 argument/right inlet: value;
-#X text 166 293 copy to new buffer;
-#N canvas 0 0 413 295 clear_buffers 0;
-#X obj 49 73 vasp.= 0;
-#X obj 49 49 inlet;
-#X obj 49 97 vasp.u;
-#X obj 49 118 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 2 0;
-#X connect 1 0 0 0;
-#X connect 2 0 3 0;
-#X restore 564 426 pd clear_buffers;
-#X text 60 80 equal;
-#X msg 564 399 vasp bufequ bufequ1;
-#X text 173 149 generate a function;
-#X msg 61 150 vasp bufequ;
-#X text 406 248 1/true;
-#X text 405 288 0/false;
-#X text 164 359 test if a part of the function is equal to -1;
-#X obj 58 431 VASP-HELP;
-#X obj 60 384 vasp.update;
-#X msg 60 294 vasp bufequ1;
-#X obj 60 326 vasp.= bufequ;
-#X obj 60 357 vasp.== -1;
-#X obj 61 218 vasp.update;
-#X obj 61 178 vasp.= env 0 0 1 22049 0.3 22050 0.3 44099 -1 44100 -1
-66149 1 66150 0 88200;
-#X connect 8 0 6 0;
-#X connect 10 0 20 0;
-#X connect 16 0 17 0;
-#X connect 17 0 18 0;
-#X connect 18 0 15 0;
-#X connect 20 0 19 0;
diff --git a/externals/grill/vasp/pd-help/vasp_exp.pd b/externals/grill/vasp/pd-help/vasp_exp.pd
deleted file mode 100644
index 902ebc33..00000000
--- a/externals/grill/vasp/pd-help/vasp_exp.pd
+++ /dev/null
@@ -1,42 +0,0 @@
-#N canvas 51 74 827 464 10;
-#X obj 71 32 cnv 15 15 15 empty empty vasp.exp 0 10 1 14 -262144 -1
-0;
-#N canvas 0 0 408 284 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 4410 10 \; \$1 xlabel 1.1 0 22050 44100
-66150 88200 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 94000 -1 -0.5 0 0.5
-1;
-#X msg 33 45 symbol bufexp;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 608 330 pd init;
-#N canvas 40 55 247 122 clear_buffer 0;
-#X obj 54 79 vasp.update;
-#X obj 54 56 vasp.= 0;
-#X obj 54 26 inlet;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X restore 463 330 pd clear_buffer;
-#X obj 77 197 vasp.update;
-#X text 71 63 e ^ sample;
-#X text 72 81 exponential function;
-#X obj 77 150 vasp.osc 22050;
-#X obj 77 172 vasp.* 0.5;
-#X msg 77 127 vasp bufexp;
-#X msg 463 307 vasp bufexp;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufexp 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 341 144 graph;
-#X obj 78 372 VASP-HELP;
-#X obj 77 316 vasp.update;
-#X msg 77 246 vasp bufexp;
-#X obj 77 291 vasp.opt;
-#X obj 77 269 vasp.exp;
-#X connect 6 0 7 0;
-#X connect 7 0 3 0;
-#X connect 8 0 6 0;
-#X connect 9 0 2 0;
-#X connect 13 0 15 0;
-#X connect 14 0 12 0;
-#X connect 15 0 14 0;
diff --git a/externals/grill/vasp/pd-help/vasp_fhp.pd b/externals/grill/vasp/pd-help/vasp_fhp.pd
deleted file mode 100644
index 4f385e2c..00000000
--- a/externals/grill/vasp/pd-help/vasp_fhp.pd
+++ /dev/null
@@ -1,88 +0,0 @@
-#N canvas 47 54 895 558 10;
-#X obj 71 32 cnv 15 15 15 empty empty vasp.fhp 0 10 1 14 -262144 -1
-0;
-#X obj 76 247 vasp.update;
-#X obj 76 224 vasp.* 0.5;
-#X obj 401 449 dac~;
-#X obj 401 405 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X text 423 404 play;
-#N canvas 40 55 281 170 clear_buffer 0;
-#X obj 54 79 vasp.update;
-#X obj 54 56 vasp.= 0;
-#X obj 54 26 inlet;
-#X obj 54 108 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 0 8
--262144 -1 -1;
-#X connect 0 0 3 0;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X restore 533 449 pd clear_buffer;
-#X text 180 178 generate white noise;
-#X obj 76 201 vasp.noise;
-#X obj 76 270 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 0 8
--262144 -1 -1;
-#X obj 77 391 vasp.update;
-#X obj 77 414 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 0 8
--262144 -1 -1;
-#N canvas 92 108 341 266 init 0;
-#X obj 110 180 s \$0-sample-length;
-#X msg 177 126 resize \$1;
-#X obj 177 79 loadbang;
-#X msg 177 100 88200;
-#X obj 177 148 s buffhp;
-#X connect 1 0 4 0;
-#X connect 2 0 3 0;
-#X connect 3 0 1 0;
-#X connect 3 0 0 0;
-#X restore 672 447 pd init;
-#N canvas 0 22 458 308 Hz_to_period_length 0;
-#X floatatom 125 242 0 0 0 0 - - -;
-#X obj 125 142 t b f;
-#X text 158 223 period length in samples (float);
-#X floatatom 125 80 0 0 0 0 - - -;
-#X obj 125 206 / 1;
-#X text 170 79 frequency in Hz;
-#X obj 53 142 samplerate~;
-#X obj 53 119 loadbang;
-#X floatatom 125 175 5 0 0 0 - - -;
-#X connect 1 0 8 0;
-#X connect 1 1 4 1;
-#X connect 3 0 1 0;
-#X connect 4 0 0 0;
-#X connect 6 0 8 0;
-#X connect 7 0 6 0;
-#X connect 8 0 4 0;
-#X restore 78 457 pd Hz_to_period_length;
-#X text 71 63 vasp high pass filter (FIR);
-#X text 70 78 first argument: cutoff frequency in period length;
-#X obj 421 188 wavedisplay-simple buffhp \$0;
-#X msg 76 179 vasp buffhp;
-#X msg 77 330 vasp buffhp;
-#X floatatom 201 298 5 0 0 0 - - -;
-#X floatatom 260 298 5 0 0 0 - - -;
-#X text 195 278 cutoff;
-#X obj 201 345 pack;
-#X obj 401 426 tabplay~ buffhp;
-#X msg 533 426 vasp buffhp;
-#X obj 260 319 t b f;
-#X obj 77 366 vasp.fhp 220;
-#X obj 78 503 VASP-HELP;
-#X text 70 92 second argument: repetitions (integer) \, default 1;
-#X text 70 119 right inlet: cutoff and repetitions (list);
-#X text 261 277 repetitions;
-#X connect 1 0 9 0;
-#X connect 2 0 1 0;
-#X connect 4 0 23 0;
-#X connect 8 0 2 0;
-#X connect 10 0 11 0;
-#X connect 17 0 8 0;
-#X connect 18 0 26 0;
-#X connect 19 0 22 0;
-#X connect 20 0 25 0;
-#X connect 22 0 26 1;
-#X connect 23 0 3 0;
-#X connect 23 0 3 1;
-#X connect 24 0 6 0;
-#X connect 25 0 22 0;
-#X connect 25 1 22 1;
-#X connect 26 0 10 0;
diff --git a/externals/grill/vasp/pd-help/vasp_fix.pd b/externals/grill/vasp/pd-help/vasp_fix.pd
deleted file mode 100644
index 871a1d33..00000000
--- a/externals/grill/vasp/pd-help/vasp_fix.pd
+++ /dev/null
@@ -1,64 +0,0 @@
-#N canvas 40 76 961 604 10;
-#N canvas 40 55 247 122 clear_buffer 0;
-#X obj 45 79 vasp.update;
-#X obj 45 56 vasp.= 0;
-#X obj 45 26 inlet;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X restore 567 519 pd clear_buffer;
-#X obj 51 19 cnv 15 15 15 empty empty vasp.fix 0 10 1 14 -262144 -1
-0;
-#X obj 52 493 VASP-HELP;
-#X text 43 57 NAN (not a number) - values become 0;
-#N canvas 0 0 450 300 graph1 0;
-#X array buffix1 100 float 0;
-#X coords 0 1 99 -1 300 100 1;
-#X restore 539 58 graph;
-#N canvas 0 0 390 266 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 1 10 \; \$1 xlabel 1.1 0 20 40 60 80 100
-\; \$1 yticks 0 0.25 2 \; \$1 ylabel 105 -1 -0.5 0 0.5 1;
-#X msg 33 45 symbol buffix1 \, symbol buffix2 \, symbol buffix3;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 799 523 pd init;
-#N canvas 0 0 450 300 graph1 0;
-#X array buffix2 100 float 0;
-#X coords 0 1 99 -1 300 100 1;
-#X restore 539 207 graph;
-#N canvas 0 0 450 300 graph1 0;
-#X array buffix3 100 float 0;
-#X coords 0 1 99 -1 300 100 1;
-#X restore 539 353 graph;
-#X msg 567 490 vasp buffix1 buffix2 buffix3;
-#X obj 142 254 vasp.log;
-#X obj 246 392 vasp.u;
-#X obj 246 365 vasp.fix;
-#X obj 142 393 vasp.u;
-#X obj 142 332 vasp.exp;
-#X text 152 362 no fix;
-#X obj 57 179 vasp.u;
-#X text 212 253 values < 0 become NANs;
-#X text 803 324 fixed;
-#X text 802 18 source;
-#X text 814 179 NANs;
-#X msg 57 121 vasp buffix1;
-#X obj 57 202 vasp.-> buffix2;
-#X obj 142 292 vasp.-> buffix3;
-#X obj 246 334 vasp.exp;
-#X text 142 421 NANs;
-#X text 246 420 fixed;
-#X text 157 121 generate sine wave;
-#X obj 57 157 vasp.osc 21;
-#X text 316 365 NANs become 0;
-#X connect 8 0 0 0;
-#X connect 9 0 22 0;
-#X connect 11 0 10 0;
-#X connect 13 0 12 0;
-#X connect 15 0 21 0;
-#X connect 20 0 27 0;
-#X connect 21 1 9 0;
-#X connect 22 0 13 0;
-#X connect 22 1 23 0;
-#X connect 23 0 11 0;
-#X connect 27 0 15 0;
diff --git a/externals/grill/vasp/pd-help/vasp_flp.pd b/externals/grill/vasp/pd-help/vasp_flp.pd
deleted file mode 100644
index 39852da6..00000000
--- a/externals/grill/vasp/pd-help/vasp_flp.pd
+++ /dev/null
@@ -1,85 +0,0 @@
-#N canvas 47 54 887 550 10;
-#X obj 71 32 cnv 15 15 15 empty empty vasp.flp 0 10 1 14 -262144 -1
-0;
-#X obj 76 247 vasp.update;
-#X obj 76 224 vasp.* 0.5;
-#X obj 401 449 dac~;
-#X obj 401 405 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X text 423 404 play;
-#N canvas 40 55 281 170 clear_buffer 0;
-#X obj 54 79 vasp.update;
-#X obj 54 56 vasp.= 0;
-#X obj 54 26 inlet;
-#X obj 54 108 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 0 8
--262144 -1 -1;
-#X connect 0 0 3 0;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X restore 533 449 pd clear_buffer;
-#X text 180 178 generate white noise;
-#X obj 76 201 vasp.noise;
-#X obj 76 270 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 0 8
--262144 -1 -1;
-#N canvas 92 108 343 268 init 0;
-#X obj 110 180 s \$0-sample-length;
-#X msg 177 126 resize \$1;
-#X obj 177 79 loadbang;
-#X msg 177 100 88200;
-#X obj 177 148 s bufflp;
-#X connect 1 0 4 0;
-#X connect 2 0 3 0;
-#X connect 3 0 1 0;
-#X connect 3 0 0 0;
-#X restore 672 447 pd init;
-#N canvas 0 22 460 310 Hz_to_period_length 0;
-#X floatatom 125 242 0 0 0 0 - - -;
-#X obj 125 142 t b f;
-#X text 158 223 period length in samples (float);
-#X floatatom 125 80 0 0 0 0 - - -;
-#X obj 125 206 / 1;
-#X text 170 79 frequency in Hz;
-#X obj 53 142 samplerate~;
-#X obj 53 119 loadbang;
-#X floatatom 125 175 5 0 0 0 - - -;
-#X connect 1 0 8 0;
-#X connect 1 1 4 1;
-#X connect 3 0 1 0;
-#X connect 4 0 0 0;
-#X connect 6 0 8 0;
-#X connect 7 0 6 0;
-#X connect 8 0 4 0;
-#X restore 78 457 pd Hz_to_period_length;
-#X text 70 78 first argument: cutoff frequency in period length;
-#X msg 76 179 vasp bufflp;
-#X obj 428 165 wavedisplay-simple bufflp \$0;
-#X msg 533 426 vasp bufflp;
-#X obj 401 426 tabplay~ bufflp;
-#X obj 78 496 VASP-HELP;
-#X obj 77 371 vasp.update;
-#X obj 77 394 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 0 8
--262144 -1 -1;
-#X floatatom 201 298 5 0 0 0 - - -;
-#X floatatom 260 298 5 0 0 0 - - -;
-#X text 195 278 cutoff;
-#X obj 201 318 pack;
-#X msg 77 297 vasp bufflp;
-#X obj 77 347 vasp.flp 220;
-#X text 261 277 repetitions;
-#X text 71 63 vasp passive low pass filter (FIR);
-#X text 70 92 second argument: repetitions (integer) \, default 1;
-#X text 70 119 right inlet: cutoff and repetitions (list);
-#X connect 1 0 9 0;
-#X connect 2 0 1 0;
-#X connect 4 0 16 0;
-#X connect 8 0 2 0;
-#X connect 13 0 8 0;
-#X connect 15 0 6 0;
-#X connect 16 0 3 0;
-#X connect 16 0 3 1;
-#X connect 18 0 19 0;
-#X connect 20 0 23 0;
-#X connect 21 0 23 1;
-#X connect 23 0 25 1;
-#X connect 24 0 25 0;
-#X connect 25 0 18 0;
diff --git a/externals/grill/vasp/pd-help/vasp_frames.pd b/externals/grill/vasp/pd-help/vasp_frames.pd
deleted file mode 100644
index 6ee8ce96..00000000
--- a/externals/grill/vasp/pd-help/vasp_frames.pd
+++ /dev/null
@@ -1,60 +0,0 @@
-#N canvas 79 77 899 565 10;
-#X obj 58 31 cnv 15 15 15 empty empty vasp.frames 0 10 1 14 -262144
--1 0;
-#N canvas 0 0 450 300 graph1 0;
-#X array buffram1 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 530 149 graph;
-#N canvas 0 0 400 276 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 4410 10 \; \$1 xlabel 1.1 0 22050 44100
-66150 88200 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 94000 -1 -0.5 0 0.5
-1;
-#X msg 33 45 symbol buffram1;
-#X msg 140 45 symbol buffram2;
-#X connect 0 0 2 0;
-#X connect 0 0 3 0;
-#X connect 2 0 1 0;
-#X connect 3 0 1 0;
-#X restore 714 408 pd init;
-#X text 119 397 abbreviation;
-#N canvas 0 0 450 300 graph1 0;
-#X array buffram2 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 530 268 graph;
-#X obj 62 303 vasp.osc 22050;
-#X obj 62 335 vasp.update;
-#X msg 62 165 vasp buffram1;
-#X obj 62 225 vasp.frames 30000;
-#X obj 90 258 prepend set;
-#X msg 90 280;
-#X obj 233 226 vasp.frames 22050;
-#X obj 233 335 vasp.update;
-#X obj 261 258 prepend set;
-#X msg 233 164 vasp buffram1 buffram2 11050;
-#X floatatom 330 197 5 0 0 0 - - -;
-#X obj 233 303 vasp.osc 11025;
-#X msg 261 280;
-#X obj 62 397 vasp.f;
-#X obj 61 498 VASP-HELP;
-#X text 57 69 set the number of frames of a vasp;
-#X text 58 83 argument/right inlet: value in frames;
-#X text 60 429 related objects:;
-#X obj 61 451 vasp.size;
-#X obj 150 451 vasp.f?;
-#X obj 223 451 vasp.f=;
-#X text 57 100 the number of frames is limited by the size of a buffer/array!
-;
-#X text 57 129 all vectors of a vasp have the same frame count/length!
-;
-#X connect 5 0 6 0;
-#X connect 7 0 8 0;
-#X connect 8 0 9 0;
-#X connect 8 0 5 0;
-#X connect 9 0 10 0;
-#X connect 11 0 13 0;
-#X connect 11 0 16 0;
-#X connect 13 0 17 0;
-#X connect 14 0 11 0;
-#X connect 15 0 11 1;
-#X connect 16 0 12 0;
diff --git a/externals/grill/vasp/pd-help/vasp_gate.pd b/externals/grill/vasp/pd-help/vasp_gate.pd
deleted file mode 100644
index 7dfcda6e..00000000
--- a/externals/grill/vasp/pd-help/vasp_gate.pd
+++ /dev/null
@@ -1,74 +0,0 @@
-#N canvas 36 36 808 584 10;
-#X obj 71 32 cnv 15 15 15 empty empty vasp.gate 0 10 1 14 -262144 -1
-0;
-#X obj 71 131 filelist \$0;
-#N canvas 92 108 418 383 inside 0;
-#X obj 66 169 soundfiler;
-#X obj 84 253 s \$0-sample-length;
-#X obj 66 223 s \$0-draw_display;
-#X msg 214 221 resize \$1;
-#X obj 66 60 loadbang;
-#X obj 66 193 t b f f;
-#X obj 66 113 filelisthandler \$0;
-#X msg 66 91 1;
-#X obj 214 243 s bufgate1;
-#X obj 225 264 s bufgate2;
-#X msg 66 145 read -resize \$1 bufgate1;
-#X connect 0 0 5 0;
-#X connect 3 0 8 0;
-#X connect 3 0 9 0;
-#X connect 4 0 7 0;
-#X connect 5 0 2 0;
-#X connect 5 1 1 0;
-#X connect 5 2 3 0;
-#X connect 6 0 10 0;
-#X connect 7 0 6 0;
-#X connect 10 0 0 0;
-#X restore 668 495 pd inside;
-#N canvas 40 55 281 170 clear_buffers 0;
-#X obj 54 79 vasp.update;
-#X obj 54 56 vasp.= 0;
-#X obj 54 26 inlet;
-#X obj 54 108 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 3 0;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X restore 479 495 pd clear_buffers;
-#X obj 60 272 vasp.update;
-#X obj 60 292 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X text 69 52 gate buffer content with a value;
-#X obj 419 261 wavedisplay-simple bufgate2 \$0;
-#X obj 419 112 wavedisplay-simple bufgate1 \$0;
-#X msg 60 232 vasp bufgate2;
-#X obj 60 252 vasp.= bufgate1;
-#X msg 479 475 vasp bufgate1 bufgate2;
-#X text 161 229 copy from bufgate1 to bufgate2;
-#X obj 337 495 dac~;
-#X obj 337 457 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X text 358 455 play;
-#X obj 337 475 tabplay~ bufgate2;
-#X text 71 66 optional argument/right inlet: value (usually from 0-1
-to gate the soundfile sample for sample (not like a compressor!);
-#X obj 58 497 VASP-HELP;
-#X obj 60 391 vasp.update;
-#X floatatom 133 349 5 0 0;
-#X obj 60 411 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X msg 60 324 vasp bufgate2;
-#X obj 60 371 vasp.gate 0.2;
-#X text 177 348 value;
-#X text 159 321 gate the buffer content;
-#X connect 4 0 5 0;
-#X connect 9 0 10 0;
-#X connect 10 0 4 0;
-#X connect 11 0 3 0;
-#X connect 14 0 16 0;
-#X connect 16 0 13 0;
-#X connect 16 0 13 1;
-#X connect 19 0 21 0;
-#X connect 20 0 23 1;
-#X connect 22 0 23 0;
-#X connect 23 0 19 0;
diff --git a/externals/grill/vasp/pd-help/vasp_gather.pd b/externals/grill/vasp/pd-help/vasp_gather.pd
deleted file mode 100644
index 8f5e2969..00000000
--- a/externals/grill/vasp/pd-help/vasp_gather.pd
+++ /dev/null
@@ -1,64 +0,0 @@
-#N canvas 112 58 831 625 10;
-#X text 403 160 gather as many vasps as you want and put them out (bang)
-;
-#X text 71 74 gather several vasps into one;
-#X text 70 90 argument: vasps to gather before output;
-#X text 71 143 right inlet: stores the different vasps;
-#X text 70 110 left inlet: outputs a vasp immediately \, causes output
-of vasps gathered in right inlet (bang);
-#X text 72 163 use vasp.gather like the int/float object;
-#X text 398 444 !vasps can have more vectors \, but just one length!
-;
-#X text 398 464 gather will always take the length from the shortest
-of all gathered vasps for the new one!;
-#X obj 71 37 cnv 15 15 15 empty empty vasp.gather 0 10 1 14 -262144
--1 0;
-#X msg 486 242 vasp bufgather4;
-#X msg 471 221 vasp bufgather3;
-#X msg 410 178 bang;
-#X msg 456 201 vasp bufgather2;
-#X msg 410 314;
-#X obj 410 291 prepend set;
-#X obj 410 268 vasp.gather;
-#X msg 447 178 vasp bufgather1;
-#X msg 167 450 vasp bufgather4;
-#X msg 233 200 vasp bufgather2;
-#X msg 78 200 bang;
-#X obj 78 291 prepend set;
-#X msg 117 200 vasp bufgather1;
-#X msg 151 429 vasp bufgather3;
-#X msg 78 386 bang;
-#X msg 137 409 vasp bufgather2;
-#X msg 78 520;
-#X obj 78 497 prepend set;
-#X obj 78 474 vasp.gather 2;
-#X msg 125 386 vasp bufgather1;
-#X text 71 366 gather two vasps (opt. argument) an put them out;
-#X obj 77 561 VASP-HELP;
-#N canvas 274 433 336 148 tables 0;
-#X obj 105 39 table bufgather1;
-#X obj 105 61 table bufgather2;
-#X obj 105 84 table bufgather3;
-#X obj 105 106 table bufgather4;
-#X restore 422 552 pd tables;
-#X obj 78 268 vasp.gather;
-#X msg 78 314;
-#X connect 9 0 15 1;
-#X connect 10 0 15 1;
-#X connect 11 0 15 0;
-#X connect 12 0 15 1;
-#X connect 14 0 13 0;
-#X connect 15 0 14 0;
-#X connect 16 0 15 1;
-#X connect 17 0 27 1;
-#X connect 18 0 32 1;
-#X connect 19 0 32 0;
-#X connect 20 0 33 0;
-#X connect 21 0 32 0;
-#X connect 22 0 27 1;
-#X connect 23 0 27 0;
-#X connect 24 0 27 1;
-#X connect 26 0 25 0;
-#X connect 27 0 26 0;
-#X connect 28 0 27 1;
-#X connect 32 0 20 0;
diff --git a/externals/grill/vasp/pd-help/vasp_geq.pd b/externals/grill/vasp/pd-help/vasp_geq.pd
deleted file mode 100644
index c0339b41..00000000
--- a/externals/grill/vasp/pd-help/vasp_geq.pd
+++ /dev/null
@@ -1,50 +0,0 @@
-#N canvas 44 207 837 466 10;
-#X obj 62 41 cnv 15 15 15 empty empty vasp.>= 0 10 1 14 -262144 -1
-0;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufgeq 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 408 84 graph;
-#N canvas 0 0 398 274 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 4410 10 \; \$1 xlabel 1.1 0 22050 44100
-66150 88200 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 94000 -1 -0.5 0 0.5
-1;
-#X msg 33 45 symbol bufgeq \, symbol bufgeq1;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 662 388 pd init;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufgeq1 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 408 213 graph;
-#X text 60 94 argument/right inlet: value;
-#X obj 61 172 vasp.osc 44100;
-#X obj 61 194 vasp.update;
-#N canvas 0 0 413 295 clear_buffers 0;
-#X obj 49 73 vasp.= 0;
-#X obj 49 49 inlet;
-#X obj 49 97 vasp.u;
-#X obj 49 118 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 2 0;
-#X connect 1 0 0 0;
-#X connect 2 0 3 0;
-#X restore 460 390 pd clear_buffers;
-#X msg 460 364 vasp bufgeq bufgeq1;
-#X text 60 80 sample >= value;
-#X msg 61 150 vasp bufgeq;
-#X obj 57 418 VASP-HELP;
-#X obj 58 366 vasp.update;
-#X floatatom 119 308 5 0 0;
-#X text 164 236 copy to new buffer;
-#X msg 58 236 vasp bufgeq1;
-#X obj 58 262 vasp.= bufgeq;
-#X obj 58 335 vasp.>= 0.4;
-#X connect 5 0 6 0;
-#X connect 8 0 7 0;
-#X connect 10 0 5 0;
-#X connect 13 0 17 1;
-#X connect 15 0 16 0;
-#X connect 16 0 17 0;
-#X connect 17 0 12 0;
diff --git a/externals/grill/vasp/pd-help/vasp_gtr.pd b/externals/grill/vasp/pd-help/vasp_gtr.pd
deleted file mode 100644
index 41b2bf9c..00000000
--- a/externals/grill/vasp/pd-help/vasp_gtr.pd
+++ /dev/null
@@ -1,52 +0,0 @@
-#N canvas 44 207 839 468 10;
-#X obj 62 41 cnv 15 15 15 empty empty vasp.> 0 10 1 14 -262144 -1 0
-;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufgtr 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 439 87 graph;
-#N canvas 0 0 396 272 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 4410 10 \; \$1 xlabel 1.1 0 22050 44100
-66150 88200 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 94000 -1 -0.5 0 0.5
-1;
-#X msg 33 45 symbol bufgtr \, symbol bufgtr1;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 693 391 pd init;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufgtr1 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 439 216 graph;
-#X text 60 94 argument/right inlet: value;
-#X obj 61 172 vasp.osc 44100;
-#X obj 61 194 vasp.update;
-#N canvas 0 0 413 295 clear_buffers 0;
-#X obj 49 73 vasp.= 0;
-#X obj 49 49 inlet;
-#X obj 49 97 vasp.u;
-#X obj 49 118 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 2 0;
-#X connect 1 0 0 0;
-#X connect 2 0 3 0;
-#X restore 491 393 pd clear_buffers;
-#X text 60 80 sample > value;
-#X msg 61 150 vasp bufgtr;
-#X msg 491 367 vasp bufgtr bufgtr1;
-#X text 338 218 1/true;
-#X text 337 258 0/false;
-#X obj 57 418 VASP-HELP;
-#X obj 58 366 vasp.update;
-#X floatatom 113 308 5 0 0;
-#X text 164 230 copy to new buffer;
-#X obj 58 335 vasp.> 0.4;
-#X msg 58 236 vasp bufgtr1;
-#X obj 58 262 vasp.= bufgtr;
-#X connect 5 0 6 0;
-#X connect 9 0 5 0;
-#X connect 10 0 7 0;
-#X connect 15 0 17 1;
-#X connect 17 0 14 0;
-#X connect 18 0 19 0;
-#X connect 19 0 17 0;
diff --git a/externals/grill/vasp/pd-help/vasp_imm.pd b/externals/grill/vasp/pd-help/vasp_imm.pd
deleted file mode 100644
index b44e4fda..00000000
--- a/externals/grill/vasp/pd-help/vasp_imm.pd
+++ /dev/null
@@ -1,77 +0,0 @@
-#N canvas 51 36 891 586 10;
-#X obj 61 33 cnv 15 15 15 empty empty vasp.imm 0 10 1 14 -262144 -1
-0;
-#N canvas 0 0 261 214 clear_buffer 0;
-#X obj 49 73 vasp.= 0;
-#X obj 49 49 inlet;
-#X obj 49 97 vasp.u;
-#X obj 49 118 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 2 0;
-#X connect 1 0 0 0;
-#X connect 2 0 3 0;
-#X restore 656 460 pd clear_buffer;
-#X obj 51 533 VASP-HELP;
-#X obj 159 477 vasp.!;
-#X text 58 476 abbreviation:;
-#X obj 57 216 vasp.imm 88200;
-#X obj 154 218 vasp.imm 88200;
-#X obj 254 218 vasp.imm 88200;
-#X obj 57 241 vasp.noise;
-#X obj 154 268 vasp.max;
-#X obj 57 316 vasp.-> bufnotimm;
-#X obj 154 369 vasp.update;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufnotimm 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 511 69 graph;
-#N canvas 0 0 394 270 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 4410 10 \; \$1 xlabel 1.1 0 22050 44100
-66150 88200 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 94000 -1 -0.5 0 0.5
-1;
-#X msg 33 45 symbol bufnotimm;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 760 461 pd init;
-#X obj 57 191 t b b b;
-#X obj 355 447 dac~;
-#X obj 355 399 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
--1;
-#X text 377 398 play;
-#X obj 355 422 tabplay~ bufnotimm;
-#X msg 656 435 vasp bufnotimm;
-#X obj 57 290 vasp.min;
-#X obj 154 243 vasp.osc 882;
-#X obj 57 266 vasp.* 0.1;
-#X obj 254 268 vasp.* 0.2;
-#X obj 254 243 vasp.osc 3.4;
-#X text 61 55 create an immediate vasp;
-#X text 360 217 create three immediate vasps;
-#X text 111 164 <-- click me;
-#X text 55 124 argument/right inlet: length in samples;
-#X text 55 86 immediate vasps are temporary buffers that are created
-on demand and deleted after usage in a command chain.;
-#X obj 57 165 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
--1;
-#X text 361 239 and compose them;
-#X text 363 318 copy the result to an existing buffer/array;
-#X connect 5 0 8 0;
-#X connect 6 0 21 0;
-#X connect 7 0 24 0;
-#X connect 8 0 22 0;
-#X connect 9 0 20 1;
-#X connect 10 1 11 0;
-#X connect 14 0 5 0;
-#X connect 14 1 6 0;
-#X connect 14 2 7 0;
-#X connect 16 0 18 0;
-#X connect 18 0 15 0;
-#X connect 18 0 15 1;
-#X connect 19 0 1 0;
-#X connect 20 0 10 0;
-#X connect 21 0 9 0;
-#X connect 22 0 20 0;
-#X connect 23 0 9 1;
-#X connect 24 0 23 0;
-#X connect 30 0 14 0;
diff --git a/externals/grill/vasp/pd-help/vasp_int.pd b/externals/grill/vasp/pd-help/vasp_int.pd
deleted file mode 100644
index e53ec66a..00000000
--- a/externals/grill/vasp/pd-help/vasp_int.pd
+++ /dev/null
@@ -1,40 +0,0 @@
-#N canvas 95 158 862 404 10;
-#X obj 71 32 cnv 15 15 15 empty empty vasp.int 0 10 1 14 -262144 -1
-0;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufint 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 465 124 graph;
-#N canvas 0 0 398 274 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 4410 10 \; \$1 xlabel 1.1 0 22050 44100
-66150 88200 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 94000 -1 -0.5 0 0.5
-1;
-#X msg 33 45 symbol bufint;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 737 285 pd init;
-#N canvas 40 55 247 122 clear_buffer 0;
-#X obj 54 79 vasp.update;
-#X obj 54 56 vasp.= 0;
-#X obj 54 26 inlet;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X restore 521 284 pd clear_buffer;
-#X text 70 61 vasp integral function;
-#X msg 521 263 vasp bufint;
-#X msg 77 131 vasp bufint;
-#X obj 77 178 vasp.update;
-#X text 70 77 argument: repetition count;
-#X obj 76 336 VASP-HELP;
-#X obj 77 289 vasp.update;
-#X msg 77 211 vasp bufint;
-#X obj 77 242 vasp.int;
-#X obj 77 266 vasp.opt;
-#X obj 77 153 vasp.window lin;
-#X connect 5 0 3 0;
-#X connect 6 0 14 0;
-#X connect 11 0 12 0;
-#X connect 12 0 13 0;
-#X connect 13 0 10 0;
-#X connect 14 0 7 0;
diff --git a/externals/grill/vasp/pd-help/vasp_iwindow.pd b/externals/grill/vasp/pd-help/vasp_iwindow.pd
deleted file mode 100644
index 10db2b49..00000000
--- a/externals/grill/vasp/pd-help/vasp_iwindow.pd
+++ /dev/null
@@ -1,61 +0,0 @@
-#N canvas 58 39 870 560 10;
-#X obj 62 41 cnv 15 15 15 empty empty vasp.!window 0 10 1 14 -262144
--1 0;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufiwindow 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 512 119 graph;
-#N canvas 0 0 408 284 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 4410 10 \; \$1 xlabel 1.1 0 22050 44100
-66150 88200 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 94000 -1 -0.5 0 0.5
-1;
-#X msg 33 45 symbol bufiwindow;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 771 320 pd init;
-#N canvas 0 0 194 221 clear_buffers 0;
-#X obj 49 73 vasp.= 0;
-#X obj 49 49 inlet;
-#X obj 49 97 vasp.u;
-#X obj 49 118 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 2 0;
-#X connect 1 0 0 0;
-#X connect 2 0 3 0;
-#X restore 569 326 pd clear_buffers;
-#X text 173 148 generate a function;
-#X obj 61 278 vasp.u;
-#X floatatom 194 186 5 0 0;
-#X text 259 185 0..4;
-#X msg 231 215 lin;
-#X msg 231 240 sin;
-#X msg 231 265 hanning;
-#X msg 231 290 hamming;
-#X msg 231 315 blackman;
-#X text 275 214 0;
-#X text 275 236 1;
-#X text 295 260 2;
-#X text 300 289 3;
-#X text 300 316 4;
-#X obj 132 401 vasp.window;
-#X obj 132 426 vasp.*window;
-#X text 60 396 see also:;
-#X obj 322 426 vasp.*xwindow;
-#X obj 225 426 vasp.*!window;
-#X text 60 104 argument/right inlet: name or number of name;
-#X text 60 80 generate window functions;
-#X msg 569 301 vasp bufiwindow;
-#X obj 322 401 vasp.xwindow;
-#X msg 61 149 vasp bufiwindow;
-#X obj 61 226 vasp.!window lin;
-#X obj 60 503 VASP-HELP;
-#X connect 6 0 28 1;
-#X connect 8 0 28 1;
-#X connect 9 0 28 1;
-#X connect 10 0 28 1;
-#X connect 11 0 28 1;
-#X connect 12 0 28 1;
-#X connect 25 0 3 0;
-#X connect 27 0 28 0;
-#X connect 28 0 5 0;
diff --git a/externals/grill/vasp/pd-help/vasp_join.pd b/externals/grill/vasp/pd-help/vasp_join.pd
deleted file mode 100644
index 3d48406b..00000000
--- a/externals/grill/vasp/pd-help/vasp_join.pd
+++ /dev/null
@@ -1,26 +0,0 @@
-#N canvas 239 111 493 440 10;
-#X text 51 62 join several vasps into one;
-#X text 51 78 argument: number of vasps to join;
-#X text 51 95 left inlet triggers the output;
-#X obj 51 19 cnv 15 15 15 empty empty vasp.join 0 10 1 14 -262144 -1
-0;
-#X obj 62 382 VASP-HELP;
-#X msg 230 159 vasp bufjoin1 bufjoin2 bufjoin3;
-#X obj 128 214 prepend set;
-#X obj 61 305 prepend set;
-#X obj 61 191 vasp.split 2;
-#X obj 61 282 vasp.join 2;
-#X msg 61 159 vasp bufjoin1 bufjoin2;
-#X obj 310 337 table bufjoin1;
-#X obj 310 360 table bufjoin2;
-#X obj 310 384 table bufjoin3;
-#X msg 128 238;
-#X msg 61 329;
-#X connect 5 0 8 0;
-#X connect 6 0 14 0;
-#X connect 7 0 15 0;
-#X connect 8 0 9 0;
-#X connect 8 1 9 1;
-#X connect 8 2 6 0;
-#X connect 9 0 7 0;
-#X connect 10 0 8 0;
diff --git a/externals/grill/vasp/pd-help/vasp_leq.pd b/externals/grill/vasp/pd-help/vasp_leq.pd
deleted file mode 100644
index 85b55609..00000000
--- a/externals/grill/vasp/pd-help/vasp_leq.pd
+++ /dev/null
@@ -1,52 +0,0 @@
-#N canvas 56 200 877 460 10;
-#X obj 62 41 cnv 15 15 15 empty empty vasp.<= 0 10 1 14 -262144 -1
-0;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufleq 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 489 91 graph;
-#N canvas 0 0 400 276 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 4410 10 \; \$1 xlabel 1.1 0 22050 44100
-66150 88200 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 94000 -1 -0.5 0 0.5
-1;
-#X msg 33 45 symbol bufleq \, symbol bufleq1;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 743 395 pd init;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufleq1 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 489 220 graph;
-#N canvas 0 0 413 295 clear_buffers 0;
-#X obj 49 73 vasp.= 0;
-#X obj 49 49 inlet;
-#X obj 49 97 vasp.u;
-#X obj 49 118 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 2 0;
-#X connect 1 0 0 0;
-#X connect 2 0 3 0;
-#X restore 541 397 pd clear_buffers;
-#X msg 541 371 vasp bufleq bufleq1;
-#X text 389 220 1/true;
-#X text 388 260 0/false;
-#X text 60 94 argument/right inlet: value;
-#X obj 61 172 vasp.osc 44100;
-#X obj 61 194 vasp.update;
-#X obj 58 366 vasp.update;
-#X floatatom 119 308 5 0 0;
-#X text 164 230 copy to new buffer;
-#X obj 58 335 vasp.<= 0.4;
-#X text 60 80 sample <= value;
-#X msg 61 150 vasp bufleq;
-#X msg 58 236 vasp bufleq1;
-#X obj 58 262 vasp.= bufleq;
-#X obj 57 418 VASP-HELP;
-#X connect 5 0 4 0;
-#X connect 9 0 10 0;
-#X connect 12 0 14 1;
-#X connect 14 0 11 0;
-#X connect 16 0 9 0;
-#X connect 17 0 18 0;
-#X connect 18 0 14 0;
diff --git a/externals/grill/vasp/pd-help/vasp_list.pd b/externals/grill/vasp/pd-help/vasp_list.pd
deleted file mode 100644
index 6764e257..00000000
--- a/externals/grill/vasp/pd-help/vasp_list.pd
+++ /dev/null
@@ -1,28 +0,0 @@
-#N canvas 93 206 852 414 10;
-#X text 60 80 outputs the values of all samples of a vasp as list;
-#X obj 74 32 cnv 15 15 15 empty empty vasp.? 0 10 1 14 -262144 -1 0
-;
-#N canvas 0 0 450 300 graph1 0;
-#X array buflist 20 float 0;
-#X coords 0 1 19 -1 300 100 1;
-#X restore 389 143 graph;
-#N canvas 0 0 392 268 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 45 symbol buflist;
-#X msg 33 73 \; \$1 xticks 0 1 5 \; \$1 xlabel 1.1 0 5 10 15 \; \$1
-yticks 0 0.25 2 \; \$1 ylabel 20.5 -1 -0.5 0 0.5 1;
-#X connect 0 0 1 0;
-#X connect 1 0 2 0;
-#X restore 677 302 pd init;
-#X obj 99 205 vasp.?;
-#X msg 99 130 vasp buflist;
-#X obj 99 173 vasp.update;
-#X obj 99 237 prepend set;
-#X obj 95 373 VASP-HELP;
-#X obj 99 151 vasp.window lin;
-#X msg 99 284;
-#X connect 4 0 7 0;
-#X connect 5 0 9 0;
-#X connect 6 0 4 0;
-#X connect 7 0 10 0;
-#X connect 9 0 6 0;
diff --git a/externals/grill/vasp/pd-help/vasp_log.pd b/externals/grill/vasp/pd-help/vasp_log.pd
deleted file mode 100644
index 4e8c839f..00000000
--- a/externals/grill/vasp/pd-help/vasp_log.pd
+++ /dev/null
@@ -1,50 +0,0 @@
-#N canvas 47 54 892 462 10;
-#X obj 71 32 cnv 15 15 15 empty empty vasp.log 0 10 1 14 -262144 -1
-0;
-#N canvas 40 55 247 122 clear_buffer 0;
-#X obj 54 79 vasp.update;
-#X obj 54 56 vasp.= 0;
-#X obj 54 26 inlet;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X restore 494 337 pd clear_buffer;
-#X text 71 63 ln (sample);
-#X text 72 81 natural logarithm;
-#X text 170 281 calculate the natural logarithm;
-#X msg 494 314 vasp buflog;
-#X text 167 184 draw a line from 1 to a value (def 1001);
-#X text 193 127 value;
-#N canvas 0 0 450 300 graph1 0;
-#X array buflog 100 float 0;
-#X coords 0 1 99 -1 300 100 1;
-#X restore 493 168 graph;
-#N canvas 0 0 390 266 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 1 10 \; \$1 xlabel 1.1 0 20 40 60 80 100
-\; \$1 yticks 0 0.25 2 \; \$1 ylabel 105 -1 -0.5 0 0.5 1;
-#X msg 33 45 symbol buflog;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 756 336 pd init;
-#X text 170 303 and optimize to values between (-1) and 1;
-#X obj 69 329 vasp.update;
-#X obj 69 305 vasp.opt;
-#X obj 69 282 vasp.log;
-#X msg 69 185 vasp buflog;
-#X obj 69 232 vasp.* 1000;
-#X obj 69 258 vasp.+ 1;
-#X obj 133 147 t b f;
-#X obj 70 405 VASP-HELP;
-#X obj 69 207 vasp.window lin;
-#X obj 133 129 nbx 5 14 -1e+037 1e+037 0 0 empty empty empty 0 -6 0
-10 -24198 -1 -1 1 256;
-#X connect 5 0 1 0;
-#X connect 12 0 11 0;
-#X connect 13 0 12 0;
-#X connect 14 0 19 0;
-#X connect 15 0 16 0;
-#X connect 16 0 13 0;
-#X connect 17 0 14 0;
-#X connect 17 1 15 1;
-#X connect 19 0 15 0;
-#X connect 20 0 17 0;
diff --git a/externals/grill/vasp/pd-help/vasp_lwr.pd b/externals/grill/vasp/pd-help/vasp_lwr.pd
deleted file mode 100644
index f2f5f021..00000000
--- a/externals/grill/vasp/pd-help/vasp_lwr.pd
+++ /dev/null
@@ -1,52 +0,0 @@
-#N canvas 44 207 839 468 10;
-#X obj 62 41 cnv 15 15 15 empty empty vasp.< 0 10 1 14 -262144 -1 0
-;
-#N canvas 0 0 450 300 graph1 0;
-#X array buflwr 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 480 90 graph;
-#N canvas 0 0 394 270 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 4410 10 \; \$1 xlabel 1.1 0 22050 44100
-66150 88200 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 94000 -1 -0.5 0 0.5
-1;
-#X msg 33 45 symbol buflwr \, symbol buflwr1;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 734 394 pd init;
-#N canvas 0 0 450 300 graph1 0;
-#X array buflwr1 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 480 219 graph;
-#X text 60 80 sample < value;
-#X text 60 94 argument/right inlet: value;
-#X msg 61 150 vasp buflwr;
-#X obj 61 172 vasp.osc 44100;
-#X obj 61 194 vasp.update;
-#X text 164 234 copy to new buffer;
-#N canvas 0 0 413 295 clear_buffers 0;
-#X obj 49 73 vasp.= 0;
-#X obj 49 49 inlet;
-#X obj 49 97 vasp.u;
-#X obj 49 118 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 2 0;
-#X connect 1 0 0 0;
-#X connect 2 0 3 0;
-#X restore 532 396 pd clear_buffers;
-#X msg 532 370 vasp buflwr buflwr1;
-#X text 378 219 1/true;
-#X text 377 259 0/false;
-#X obj 58 366 vasp.update;
-#X obj 58 262 vasp.= buflwr;
-#X msg 58 236 vasp buflwr1;
-#X floatatom 113 308 5 0 0;
-#X obj 58 335 vasp.< 0.4;
-#X obj 59 418 VASP-HELP;
-#X connect 6 0 7 0;
-#X connect 7 0 8 0;
-#X connect 11 0 10 0;
-#X connect 15 0 18 0;
-#X connect 16 0 15 0;
-#X connect 17 0 18 1;
-#X connect 18 0 14 0;
diff --git a/externals/grill/vasp/pd-help/vasp_max.pd b/externals/grill/vasp/pd-help/vasp_max.pd
deleted file mode 100644
index 92e25c7e..00000000
--- a/externals/grill/vasp/pd-help/vasp_max.pd
+++ /dev/null
@@ -1,51 +0,0 @@
-#N canvas 53 20 825 522 10;
-#X obj 71 32 cnv 15 15 15 empty empty vasp.max 0 10 1 14 -262144 -1
-0;
-#N canvas 40 55 281 170 clear_buffer 0;
-#X obj 54 79 vasp.update;
-#X obj 54 56 vasp.= 0;
-#X obj 54 26 inlet;
-#X obj 54 108 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 3 0;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X restore 400 405 pd clear_buffer;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufmax 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 400 114 graph;
-#N canvas 0 0 398 274 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 4410 10 \; \$1 xlabel 1.1 0 22050 44100
-66150 88200 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 94000 -1 -0.5 0 0.5
-1;
-#X msg 33 43 symbol bufmax \, symbol bufmax1;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 675 411 pd init;
-#X obj 73 144 vasp.osc 44100;
-#X obj 73 167 vasp.update;
-#X text 68 58 take maximum of vasp and argument;
-#X text 70 75 argument/right inlet: value;
-#X msg 73 123 vasp bufmax;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufmax1 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 400 251 graph;
-#X text 625 70 source;
-#X obj 72 281 vasp.= bufmax;
-#X msg 72 255 vasp bufmax1;
-#X obj 72 334 vasp.update;
-#X msg 400 382 vasp bufmax bufmax1;
-#X text 162 121 generate a sine wave at 1 Hz;
-#X text 178 251 copy to new buffer;
-#X obj 72 309 vasp.max -0.4;
-#X obj 65 435 VASP-HELP;
-#X text 177 327 set all values < -0.4 to -0.4;
-#X connect 4 0 5 0;
-#X connect 8 0 4 0;
-#X connect 11 0 17 0;
-#X connect 12 0 11 0;
-#X connect 14 0 1 0;
-#X connect 17 0 13 0;
diff --git a/externals/grill/vasp/pd-help/vasp_mcosc.pd b/externals/grill/vasp/pd-help/vasp_mcosc.pd
deleted file mode 100644
index 46d729f5..00000000
--- a/externals/grill/vasp/pd-help/vasp_mcosc.pd
+++ /dev/null
@@ -1,68 +0,0 @@
-#N canvas 14 55 990 494 10;
-#N canvas 4 20 456 306 Hz_to_period_length 0;
-#X floatatom 135 238 0 0 0;
-#X obj 135 142 t b f;
-#X text 136 260 period length in samples (float);
-#X floatatom 135 80 0 0 0;
-#X obj 135 206 / 1;
-#X text 180 79 frequency in Hz;
-#X obj 53 142 samplerate~;
-#X obj 53 119 loadbang;
-#X floatatom 135 175 5 0 0;
-#X connect 1 0 8 0;
-#X connect 1 1 4 1;
-#X connect 3 0 1 0;
-#X connect 4 0 0 0;
-#X connect 6 0 8 0;
-#X connect 7 0 6 0;
-#X connect 8 0 4 0;
-#X restore 65 415 pd Hz_to_period_length;
-#X obj 71 32 cnv 15 15 15 empty empty vasp.*cosc 0 10 1 14 -262144
--1 0;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufmcosc1 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 563 101 graph;
-#N canvas 0 0 402 278 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 4410 10 \; \$1 xlabel 1.1 0 22050 44100
-66150 88200 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 94000 -1 -0.5 0 0.5
-1;
-#X msg 33 45 symbol bufmcosc1 \, symbol bufmcosc2;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 846 418 pd init;
-#N canvas 40 55 247 122 clear_buffers 0;
-#X obj 54 79 vasp.update;
-#X obj 54 56 vasp.= 0;
-#X obj 54 26 inlet;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X restore 568 414 pd clear_buffers;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufmcosc2 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 566 259 graph;
-#X text 71 63 multiplies a complex buffer with a complex sine wave
-;
-#X text 71 83 argument/right inlet: frequency in period length in samples
-;
-#X msg 568 391 vasp bufmcosc1 bufmcosc2;
-#X obj 65 179 vasp.update;
-#X msg 65 127 vasp bufmcosc1 bufmcosc2;
-#X text 246 127 generate a ramp from 0 to 1;
-#X text 742 70 *real part of the cosc;
-#X text 713 227 *imaginary part of the cosc;
-#X obj 65 357 vasp.update;
-#X obj 65 334 vasp.* 0.5;
-#X msg 65 267 vasp bufmcosc1 bufmcosc2;
-#X obj 65 311 vasp.*cosc 44100;
-#X obj 64 448 VASP-HELP;
-#X obj 65 154 vasp.window lin;
-#X text 245 265 multiply the ramp with a complex sine wave;
-#X connect 8 0 4 0;
-#X connect 10 0 19 0;
-#X connect 15 0 14 0;
-#X connect 16 0 17 0;
-#X connect 17 0 15 0;
-#X connect 19 0 9 0;
diff --git a/externals/grill/vasp/pd-help/vasp_mframes.pd b/externals/grill/vasp/pd-help/vasp_mframes.pd
deleted file mode 100644
index ead17da8..00000000
--- a/externals/grill/vasp/pd-help/vasp_mframes.pd
+++ /dev/null
@@ -1,63 +0,0 @@
-#N canvas 80 119 908 535 10;
-#X obj 62 323 vasp.osc 22050;
-#X obj 58 31 cnv 15 15 15 empty empty vasp.frames* 0 10 1 14 -262144
--1 0;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufmfram1 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 530 149 graph;
-#N canvas 0 0 404 280 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 4410 10 \; \$1 xlabel 1.1 0 22050 44100
-66150 88200 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 94000 -1 -0.5 0 0.5
-1;
-#X msg 33 45 symbol bufmfram1;
-#X msg 140 45 symbol bufmfram2;
-#X connect 0 0 2 0;
-#X connect 0 0 3 0;
-#X connect 2 0 1 0;
-#X connect 3 0 1 0;
-#X restore 813 459 pd init;
-#X obj 62 355 vasp.update;
-#X text 117 412 abbreviation;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufmfram2 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 530 268 graph;
-#X text 54 103 !!!all vectors of a vasp have the same framesize/length!!!
-;
-#X obj 77 274 prepend set;
-#X obj 233 323 vasp.osc 22050;
-#X obj 233 355 vasp.update;
-#X text 58 83 argument/right inlet: value;
-#X obj 233 239 vasp.frames* 2;
-#X obj 62 187 vasp.-> bufmfram2;
-#X obj 255 271 prepend set;
-#N canvas 40 55 247 122 clear_buffer 0;
-#X obj 54 79 vasp.update;
-#X obj 54 56 vasp.= 0;
-#X obj 54 26 inlet;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X restore 528 439 pd clear_buffer;
-#X msg 528 418 vasp bufmfram1 bufmfram2;
-#X msg 62 153 vasp 30000 bufmfram1;
-#X obj 61 411 vasp.f*;
-#X obj 161 453 vasp.frames;
-#X text 53 454 related objects:;
-#X obj 243 453 vasp.frames+;
-#X text 59 66 multiply the number of frames of a vasp by a value;
-#X obj 59 495 VASP-HELP;
-#X msg 77 297;
-#X msg 255 294;
-#X connect 0 0 4 0;
-#X connect 8 0 24 0;
-#X connect 9 0 10 0;
-#X connect 12 0 14 0;
-#X connect 12 0 9 0;
-#X connect 13 0 8 0;
-#X connect 13 0 0 0;
-#X connect 13 1 12 0;
-#X connect 14 0 25 0;
-#X connect 16 0 15 0;
-#X connect 17 0 13 0;
diff --git a/externals/grill/vasp/pd-help/vasp_min.pd b/externals/grill/vasp/pd-help/vasp_min.pd
deleted file mode 100644
index f2448cbe..00000000
--- a/externals/grill/vasp/pd-help/vasp_min.pd
+++ /dev/null
@@ -1,51 +0,0 @@
-#N canvas 57 40 836 521 10;
-#X obj 71 32 cnv 15 15 15 empty empty vasp.min 0 10 1 14 -262144 -1
-0;
-#N canvas 40 55 281 170 clear_buffer 0;
-#X obj 54 79 vasp.update;
-#X obj 54 56 vasp.= 0;
-#X obj 54 26 inlet;
-#X obj 54 108 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 3 0;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X restore 412 403 pd clear_buffer;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufmin 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 412 112 graph;
-#N canvas 0 0 400 276 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 4410 10 \; \$1 xlabel 1.1 0 22050 44100
-66150 88200 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 94000 -1 -0.5 0 0.5
-1;
-#X msg 33 43 symbol bufmin \, symbol bufmin1;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 687 409 pd init;
-#X obj 73 144 vasp.osc 44100;
-#X obj 73 167 vasp.update;
-#X text 70 75 argument/right inlet: value;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufmin1 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 412 249 graph;
-#X text 666 74 source;
-#X text 68 58 take minimum of vasp and argument;
-#X msg 73 123 vasp bufmin;
-#X msg 412 380 vasp bufmin bufmin1;
-#X text 162 121 generate a sine wave at 1 Hz;
-#X text 178 251 copy to new buffer;
-#X obj 72 354 vasp.update;
-#X msg 72 255 vasp bufmin1;
-#X obj 72 281 vasp.= bufmin;
-#X obj 72 328 vasp.min 0.4;
-#X obj 66 460 VASP-HELP;
-#X text 177 327 set all values > 0.4 to 0.4;
-#X connect 4 0 5 0;
-#X connect 10 0 4 0;
-#X connect 11 0 1 0;
-#X connect 15 0 16 0;
-#X connect 16 0 17 0;
-#X connect 17 0 14 0;
diff --git a/externals/grill/vasp/pd-help/vasp_minmax.pd b/externals/grill/vasp/pd-help/vasp_minmax.pd
deleted file mode 100644
index 5e0f8397..00000000
--- a/externals/grill/vasp/pd-help/vasp_minmax.pd
+++ /dev/null
@@ -1,59 +0,0 @@
-#N canvas 58 24 940 639 10;
-#X obj 71 32 cnv 15 15 15 empty empty vasp.minmax 0 10 1 14 -262144
--1 0;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufmm1 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 546 71 graph;
-#N canvas 0 0 408 284 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 4410 10 \; \$1 yticks 0 0.25 2 \; \$1
-ylabel 94000 -1 -0.5 0 0.5 1;
-#X msg 33 45 symbol bufmm1 \, symbol bufmm2 \, symbol bufmm3 \, symbol
-bufmm4;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 875 594 pd init;
-#N canvas 40 55 247 122 clear_buffer 0;
-#X obj 54 79 vasp.update;
-#X obj 54 56 vasp.= 0;
-#X obj 54 26 inlet;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X restore 65 491 pd clear_buffer;
-#X obj 77 178 vasp.update;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufmm2 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 546 212 graph;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufmm3 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 547 356 graph;
-#X text 780 334 min values;
-#X text 786 480 max values;
-#X obj 76 315 vasp.update;
-#X obj 76 294 vasp.minmax;
-#X obj 65 534 VASP-HELP;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufmm4 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 548 499 graph;
-#X text 788 45 source1;
-#X text 797 191 source2;
-#X obj 77 152 vasp.cosc 44100;
-#X msg 77 127 vasp bufmm1 bufmm2;
-#X obj 76 266 vasp.c-> bufmm3 bufmm4;
-#X msg 76 242 vasp bufmm1 bufmm2;
-#X text 228 295 compare the two buffers;
-#X text 227 264 copy and;
-#X msg 65 468 vasp bufmm1 bufmm2 bufmm3 bufmm4;
-#X text 71 63 compare two vasps and assign lower values to the first
-and higher values to the second buffer;
-#X text 210 125 generate a complex sine wave at 1 Hz;
-#X connect 10 0 9 0;
-#X connect 15 0 4 0;
-#X connect 16 0 15 0;
-#X connect 17 1 10 0;
-#X connect 18 0 17 0;
-#X connect 21 0 3 0;
diff --git a/externals/grill/vasp/pd-help/vasp_mirr.pd b/externals/grill/vasp/pd-help/vasp_mirr.pd
deleted file mode 100644
index 9096f0b8..00000000
--- a/externals/grill/vasp/pd-help/vasp_mirr.pd
+++ /dev/null
@@ -1,45 +0,0 @@
-#N canvas 24 75 805 395 10;
-#X obj 75 32 cnv 15 15 15 empty empty vasp.mirr 0 10 1 14 -262144 -1
-0;
-#X text 453 269 clear;
-#N canvas 0 0 413 295 clear_buffer 0;
-#X obj 49 73 vasp.= 0;
-#X obj 49 49 inlet;
-#X obj 49 97 vasp.u;
-#X obj 49 118 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 2 0;
-#X connect 1 0 0 0;
-#X connect 2 0 3 0;
-#X restore 453 313 pd clear_buffer;
-#X msg 453 290 vasp bufmirr;
-#X text 75 52 mirrors a vasp (reverse);
-#X obj 69 204 vasp.update;
-#X msg 69 156 vasp bufmirr;
-#X obj 69 181 vasp.mirr;
-#X obj 68 312 VASP-HELP;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufmirr 100 float 0;
-#X coords 0 1 99 -1 300 100 1;
-#X restore 342 75 graph;
-#N canvas 0 0 390 266 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 45 symbol buflist;
-#X msg 33 73 \; \$1 xticks 0 1 10 \; \$1 xlabel 1.1 0 20 40 60 80 100
-\; \$1 yticks 0 0.25 2 \; \$1 ylabel 105 -1 -0.5 0 0.5 1;
-#X obj 32 227 vasp.u;
-#X msg 32 182 vasp bufmirr;
-#X obj 32 205 vasp.= env 0 0 1 20 -1 100;
-#X obj 32 160 loadbang;
-#X connect 0 0 1 0;
-#X connect 1 0 2 0;
-#X connect 4 0 5 0;
-#X connect 5 0 3 0;
-#X connect 6 0 4 0;
-#X restore 578 313 pd init;
-#X obj 69 135 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
--1;
-#X connect 3 0 2 0;
-#X connect 6 0 7 0;
-#X connect 7 0 5 0;
-#X connect 11 0 6 0;
diff --git a/externals/grill/vasp/pd-help/vasp_miwindow.pd b/externals/grill/vasp/pd-help/vasp_miwindow.pd
deleted file mode 100644
index 3719874c..00000000
--- a/externals/grill/vasp/pd-help/vasp_miwindow.pd
+++ /dev/null
@@ -1,64 +0,0 @@
-#N canvas 44 117 889 563 10;
-#X obj 62 41 cnv 15 15 15 empty empty vasp.*!window 0 10 1 14 -262144
--1 0;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufmiwindow 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 512 119 graph;
-#N canvas 0 0 408 284 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 4410 10 \; \$1 xlabel 1.1 0 22050 44100
-66150 88200 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 94000 -1 -0.5 0 0.5
-1;
-#X msg 33 45 symbol bufmiwindow;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 771 320 pd init;
-#N canvas 0 0 194 221 clear_buffers 0;
-#X obj 49 73 vasp.= 0;
-#X obj 49 49 inlet;
-#X obj 49 97 vasp.u;
-#X obj 49 118 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 2 0;
-#X connect 1 0 0 0;
-#X connect 2 0 3 0;
-#X restore 569 327 pd clear_buffers;
-#X obj 63 495 VASP-HELP;
-#X obj 61 302 vasp.u;
-#X floatatom 194 210 5 0 0;
-#X text 259 209 0..4;
-#X msg 231 239 lin;
-#X msg 231 264 sin;
-#X msg 231 289 hanning;
-#X msg 231 314 hamming;
-#X msg 231 339 blackman;
-#X text 275 238 0;
-#X text 275 260 1;
-#X text 295 284 2;
-#X text 300 313 3;
-#X text 300 335 4;
-#X obj 225 401 vasp.!window;
-#X text 60 396 see also:;
-#X obj 322 426 vasp.*xwindow;
-#X text 60 102 argument/right inlet: name or number of name;
-#X text 60 80 generate window functions;
-#X obj 322 401 vasp.xwindow;
-#X obj 134 401 vasp.window;
-#X obj 61 174 vasp.osc 3000;
-#X text 182 156 generate a sine wave;
-#X text 182 178 and multiply it with a window function;
-#X msg 569 302 vasp bufmiwindow;
-#X msg 61 149 vasp bufmiwindow;
-#X obj 61 250 vasp.*!window lin;
-#X obj 134 426 vasp.*window;
-#X connect 6 0 30 1;
-#X connect 8 0 30 1;
-#X connect 9 0 30 1;
-#X connect 10 0 30 1;
-#X connect 11 0 30 1;
-#X connect 12 0 30 1;
-#X connect 25 0 30 0;
-#X connect 28 0 3 0;
-#X connect 29 0 25 0;
-#X connect 30 0 5 0;
diff --git a/externals/grill/vasp/pd-help/vasp_mod.pd b/externals/grill/vasp/pd-help/vasp_mod.pd
deleted file mode 100644
index f5551c88..00000000
--- a/externals/grill/vasp/pd-help/vasp_mod.pd
+++ /dev/null
@@ -1,48 +0,0 @@
-#N canvas 35 127 922 431 10;
-#N canvas 40 55 247 122 clear_buffer 0;
-#X obj 54 79 vasp.update;
-#X obj 54 56 vasp.= 0;
-#X obj 54 26 inlet;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X restore 613 298 pd clear_buffer;
-#X text 366 125 ramp from 0-1;
-#X obj 286 174 vasp.update;
-#X obj 51 173 vasp.update;
-#X text 132 126 a sine wave at 1Hz or;
-#X obj 51 149 vasp.osc 44100;
-#X text 54 77 optional argument/right inlet: divisor;
-#X text 54 60 modulo function / remainder of a division;
-#X obj 62 31 cnv 15 15 15 empty empty vasp.% 0 10 1 14 -262144 -1 0
-;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufmod 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 485 110 graph;
-#N canvas 0 0 394 270 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 4410 10 \; \$1 xlabel 1.1 0 22050 44100
-66150 88200 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 94000 -1 -0.5 0 0.5
-1;
-#X msg 33 45 symbol bufmod;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 760 300 pd init;
-#X msg 51 126 vasp bufmod;
-#X msg 613 273 vasp bufmod;
-#X msg 286 127 vasp bufmod;
-#X obj 100 292 vasp.update;
-#X floatatom 161 245 0 0 0;
-#X obj 100 268 vasp.% 0.25;
-#X text 187 260 modulo;
-#X msg 100 219 vasp bufmod;
-#X obj 53 388 VASP-HELP;
-#X obj 286 148 vasp.window lin;
-#X connect 5 0 3 0;
-#X connect 11 0 5 0;
-#X connect 12 0 0 0;
-#X connect 13 0 20 0;
-#X connect 15 0 16 1;
-#X connect 16 0 14 0;
-#X connect 18 0 16 0;
-#X connect 20 0 2 0;
diff --git a/externals/grill/vasp/pd-help/vasp_mosc.pd b/externals/grill/vasp/pd-help/vasp_mosc.pd
deleted file mode 100644
index 416d86dd..00000000
--- a/externals/grill/vasp/pd-help/vasp_mosc.pd
+++ /dev/null
@@ -1,80 +0,0 @@
-#N canvas 47 54 883 486 10;
-#X obj 71 32 cnv 15 15 15 empty empty vasp.*osc 0 10 1 14 -262144 -1
-0;
-#X obj 77 195 vasp.update;
-#X obj 77 172 vasp.* 0.5;
-#X obj 402 397 dac~;
-#X obj 402 353 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X text 424 352 play;
-#X text 71 63 multiplies a sine wave with a buffer content;
-#X text 70 78 argument/right inlet: frequency in period length in samples
-;
-#N canvas 40 55 281 170 clear_buffer 0;
-#X obj 54 79 vasp.update;
-#X obj 54 56 vasp.= 0;
-#X obj 54 26 inlet;
-#X obj 54 108 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 3 0;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X restore 534 397 pd clear_buffer;
-#X msg 534 374 vasp bufmosc;
-#X msg 77 127 vasp bufmosc;
-#X text 181 126 generate white noise;
-#X obj 77 149 vasp.noise;
-#X obj 77 218 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X obj 427 174 wavedisplay-simple bufmosc \$0;
-#X obj 402 374 tabplay~ bufmosc;
-#N canvas 92 108 339 264 init 0;
-#X obj 110 180 s \$0-sample-length;
-#X msg 177 126 resize \$1;
-#X obj 177 79 loadbang;
-#X msg 177 100 88200;
-#X obj 177 148 s bufmosc;
-#X connect 1 0 4 0;
-#X connect 2 0 3 0;
-#X connect 3 0 1 0;
-#X connect 3 0 0 0;
-#X restore 673 395 pd init;
-#N canvas 4 20 454 304 Hz_to_period_length 0;
-#X floatatom 136 242 0 0 0;
-#X obj 136 142 t b f;
-#X text 169 223 period length in samples (float);
-#X floatatom 136 80 0 0 0;
-#X obj 136 206 / 1;
-#X text 181 79 frequency in Hz;
-#X obj 53 142 samplerate~;
-#X obj 53 119 loadbang;
-#X floatatom 136 175 5 0 0;
-#X connect 1 0 8 0;
-#X connect 1 1 4 1;
-#X connect 3 0 1 0;
-#X connect 4 0 0 0;
-#X connect 6 0 8 0;
-#X connect 7 0 6 0;
-#X connect 8 0 4 0;
-#X restore 79 405 pd Hz_to_period_length;
-#X text 188 379 ringmod-example;
-#X obj 79 380 ringmod_example;
-#X text 188 263 with 2Hz;
-#X text 186 245 generate an amplitude modulation;
-#X msg 78 245 vasp bufmosc;
-#X obj 78 268 vasp.*osc 22050;
-#X obj 78 292 vasp.update;
-#X obj 78 315 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X obj 60 460 VASP-HELP;
-#X connect 1 0 13 0;
-#X connect 2 0 1 0;
-#X connect 4 0 15 0;
-#X connect 9 0 8 0;
-#X connect 10 0 12 0;
-#X connect 12 0 2 0;
-#X connect 15 0 3 0;
-#X connect 15 0 3 1;
-#X connect 22 0 23 0;
-#X connect 23 0 24 0;
-#X connect 24 0 25 0;
diff --git a/externals/grill/vasp/pd-help/vasp_mphasor.pd b/externals/grill/vasp/pd-help/vasp_mphasor.pd
deleted file mode 100644
index 5ad39ce7..00000000
--- a/externals/grill/vasp/pd-help/vasp_mphasor.pd
+++ /dev/null
@@ -1,78 +0,0 @@
-#N canvas 47 54 883 486 10;
-#X obj 71 32 cnv 15 15 15 empty empty vasp.*phasor 0 10 1 14 -262144
--1 0;
-#X obj 77 195 vasp.update;
-#X obj 77 172 vasp.* 0.5;
-#X obj 394 397 dac~;
-#X obj 394 353 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X text 416 352 play;
-#X text 70 78 argument/right inlet: frequency in period length in samples
-;
-#N canvas 40 55 281 170 clear_buffer 0;
-#X obj 54 79 vasp.update;
-#X obj 54 56 vasp.= 0;
-#X obj 54 26 inlet;
-#X obj 54 108 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 3 0;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X restore 534 397 pd clear_buffer;
-#X text 188 126 generate white noise;
-#X obj 77 149 vasp.noise;
-#X obj 77 218 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#N canvas 92 108 341 266 init 0;
-#X obj 110 180 s \$0-sample-length;
-#X msg 177 126 resize \$1;
-#X obj 177 79 loadbang;
-#X msg 177 100 88200;
-#X obj 177 148 s bufmphasor;
-#X connect 1 0 4 0;
-#X connect 2 0 3 0;
-#X connect 3 0 1 0;
-#X connect 3 0 0 0;
-#X restore 673 395 pd init;
-#N canvas 4 20 454 304 Hz_to_period_length 0;
-#X floatatom 135 242 0 0 0;
-#X obj 135 142 t b f;
-#X text 168 223 period length in samples (float);
-#X floatatom 135 80 0 0 0;
-#X obj 135 206 / 1;
-#X text 180 79 frequency in Hz;
-#X obj 53 142 samplerate~;
-#X obj 53 119 loadbang;
-#X floatatom 135 175 5 0 0;
-#X connect 1 0 8 0;
-#X connect 1 1 4 1;
-#X connect 3 0 1 0;
-#X connect 4 0 0 0;
-#X connect 6 0 8 0;
-#X connect 7 0 6 0;
-#X connect 8 0 4 0;
-#X restore 80 396 pd Hz_to_period_length;
-#X text 72 63 multiplies a saw tooth ramp with a buffer content;
-#X msg 77 127 vasp bufmphasor;
-#X obj 464 158 wavedisplay-simple bufmphasor \$0;
-#X msg 534 374 vasp bufmphasor;
-#X obj 394 374 tabplay~ bufmphasor;
-#X text 207 243 generate an amplitude modulation;
-#X text 208 258 with 2Hz;
-#X obj 78 292 vasp.update;
-#X obj 78 315 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X obj 78 268 vasp.*phasor 22050;
-#X msg 78 245 vasp bufmphasor;
-#X obj 79 449 VASP-HELP;
-#X connect 1 0 10 0;
-#X connect 2 0 1 0;
-#X connect 4 0 17 0;
-#X connect 9 0 2 0;
-#X connect 14 0 9 0;
-#X connect 16 0 7 0;
-#X connect 17 0 3 0;
-#X connect 17 0 3 1;
-#X connect 20 0 21 0;
-#X connect 22 0 20 0;
-#X connect 23 0 22 0;
diff --git a/externals/grill/vasp/pd-help/vasp_msize.pd b/externals/grill/vasp/pd-help/vasp_msize.pd
deleted file mode 100644
index 6053bf6f..00000000
--- a/externals/grill/vasp/pd-help/vasp_msize.pd
+++ /dev/null
@@ -1,38 +0,0 @@
-#N canvas 85 111 836 513 10;
-#X obj 58 31 cnv 15 15 15 empty empty vasp.size/ 0 10 1 14 -262144
--1 0;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufmsize 100 float 0;
-#X coords 0 1 99 -1 300 100 1;
-#X restore 453 152 graph;
-#X obj 252 439 vasp.frames;
-#X text 62 415 related objects:;
-#X floatatom 120 319 5 0 0;
-#X obj 252 417 vasp.size;
-#X obj 253 373 vasp.s/;
-#X obj 62 217 vasp.size* 2;
-#X obj 177 217 vasp.size/ 2;
-#X obj 193 31 cnv 15 15 15 empty empty vasp.size* 0 10 1 14 -262144
--1 0;
-#X text 57 69 divide and multiplicate the size of a buffer/array;
-#X text 59 371 abbreviations:;
-#X obj 175 372 vasp.s*;
-#X obj 120 289 vasp.size?;
-#X obj 176 439 vasp.size?;
-#N canvas 0 0 412 288 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 2 5 \; \$1 xlabel 1.1 0 10 20 30 40 50
-\; \$1 yticks 0 0.25 2;
-#X msg 33 45 symbol bufmsize;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 714 408 pd init;
-#X obj 176 416 vasp.s+;
-#X msg 62 152 vasp bufmsize;
-#X msg 177 152 vasp bufmsize;
-#X obj 58 481 VASP-HELP;
-#X connect 7 0 13 0;
-#X connect 8 0 13 0;
-#X connect 13 0 4 0;
-#X connect 17 0 7 0;
-#X connect 18 0 8 0;
diff --git a/externals/grill/vasp/pd-help/vasp_mul.pd b/externals/grill/vasp/pd-help/vasp_mul.pd
deleted file mode 100644
index de6420b4..00000000
--- a/externals/grill/vasp/pd-help/vasp_mul.pd
+++ /dev/null
@@ -1,135 +0,0 @@
-#N canvas 162 101 824 443 10;
-#N canvas 40 55 247 122 clear_buffers 0;
-#X obj 45 79 vasp.update;
-#X obj 45 56 vasp.= 0;
-#X obj 45 26 inlet;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X restore 362 340 pd clear_buffers;
-#X text 60 57 optional argument/right inlet: multiplier;
-#X text 62 41 multiplies a vasp;
-#X obj 62 19 cnv 15 15 15 empty empty vasp.* 0 10 1 14 -262144 -1 0
-;
-#N canvas 0 0 450 300 graph168 0;
-#X array bufmul 88200 float 0;
-#X coords 0 1 88199 -1 300 120 1;
-#X restore 390 67 graph;
-#N canvas 0 0 394 270 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 4410 10 \; \$1 xlabel 1.1 0 22050 44100
-66150 88200 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 94000 -1 -0.5 0 0.5
-1;
-#X msg 33 45 symbol bufmul;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 662 331 pd init;
-#X msg 362 319 vasp bufmul;
-#X text 182 315 <- click to open;
-#N canvas 32 40 910 552 envelope_example 0;
-#X text 167 179 generate noise;
-#X text 148 346 normalize the vasp;
-#X obj 59 344 vasp.opt;
-#X obj 59 321 vasp.flp 2205;
-#X obj 59 297 vasp.abs;
-#X obj 60 204 vasp.noise;
-#X text 74 32 use vasp.* to multiply an envelope to noise;
-#X msg 60 183 vasp bufmul1;
-#X text 796 105 bufmul1;
-#X obj 438 485 dac~;
-#N canvas 0 0 413 295 clear_buffers 0;
-#X obj 49 73 vasp.= 0;
-#X obj 49 49 inlet;
-#X obj 49 97 vasp.u;
-#X obj 49 118 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 2 0;
-#X connect 1 0 0 0;
-#X connect 2 0 3 0;
-#X restore 662 492 pd clear_buffers;
-#X obj 438 435 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X text 463 431 play;
-#X obj 536 122 wavedisplay-simple bufmul1 \$0;
-#X obj 536 274 wavedisplay-simple bufmul2 \$0;
-#X text 797 256 bufmul2;
-#X obj 80 79 filelist \$0;
-#N canvas 92 108 393 368 inside 0;
-#X obj 66 154 soundfiler;
-#X obj 84 238 s \$0-sample-length;
-#X obj 66 208 s \$0-draw_display;
-#X msg 214 206 resize \$1;
-#X obj 214 159 loadbang;
-#X obj 67 53 loadbang;
-#X msg 214 180 88200;
-#X obj 66 178 t b f f;
-#X obj 67 101 filelisthandler \$0;
-#X obj 224 252 s bufmul2;
-#X obj 214 228 s bufmul1;
-#X msg 67 133 read -resize \$1 bufmul2;
-#X msg 67 79 2;
-#X connect 0 0 7 0;
-#X connect 3 0 9 0;
-#X connect 3 0 10 0;
-#X connect 4 0 6 0;
-#X connect 5 0 12 0;
-#X connect 6 0 3 0;
-#X connect 6 0 1 0;
-#X connect 7 0 2 0;
-#X connect 7 1 1 0;
-#X connect 7 2 3 0;
-#X connect 8 0 11 0;
-#X connect 11 0 0 0;
-#X connect 12 0 8 0;
-#X restore 780 493 pd inside;
-#X obj 438 458 tabplay~ bufmul1;
-#X msg 662 466 vasp bufmul1 bufmul2;
-#X text 221 79 into buffer bufmul2;
-#X obj 60 225 vasp.update;
-#X obj 60 247 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X msg 59 275 vasp bufmul2;
-#X obj 59 367 vasp.update;
-#X obj 59 389 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X text 147 296 get absolute values;
-#X text 153 422 multiply noise with the envelope;
-#X obj 60 470 vasp.update;
-#X obj 60 492 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X msg 60 422 vasp bufmul1;
-#X obj 60 444 vasp.* bufmul2;
-#X text 157 329 get the envelope (2Hz);
-#X text 156 316 filter the values with a lowpass to;
-#X connect 2 0 24 0;
-#X connect 3 0 2 0;
-#X connect 4 0 3 0;
-#X connect 5 0 21 0;
-#X connect 7 0 5 0;
-#X connect 11 0 18 0;
-#X connect 18 0 9 0;
-#X connect 18 0 9 1;
-#X connect 19 0 10 0;
-#X connect 21 0 22 0;
-#X connect 23 0 4 0;
-#X connect 24 0 25 0;
-#X connect 28 0 29 0;
-#X connect 30 0 31 0;
-#X connect 31 0 28 0;
-#X restore 45 315 pd envelope_example;
-#X obj 45 255 vasp.update;
-#X msg 45 173 vasp bufmul;
-#X obj 45 375 VASP-HELP;
-#X obj 45 119 nbx 5 14 -1 1 0 1 empty empty empty 0 -6 0 10 -24198
--1 -1 0.5 256;
-#X obj 45 140 t b f;
-#X obj 45 200 vasp.osc 4410;
-#X text 138 132 and change gain;
-#X text 136 118 generate sine wave;
-#X obj 45 229 vasp.* 0.5;
-#X connect 6 0 0 0;
-#X connect 10 0 14 0;
-#X connect 12 0 13 0;
-#X connect 13 0 10 0;
-#X connect 13 1 17 1;
-#X connect 14 0 17 0;
-#X connect 17 0 9 0;
diff --git a/externals/grill/vasp/pd-help/vasp_multi.pd b/externals/grill/vasp/pd-help/vasp_multi.pd
deleted file mode 100644
index 337d562b..00000000
--- a/externals/grill/vasp/pd-help/vasp_multi.pd
+++ /dev/null
@@ -1,20 +0,0 @@
-#N canvas 266 151 546 412 10;
-#X text 51 63 outputs a vasp multiple times;
-#X obj 43 28 cnv 15 15 15 empty empty vasp.multi 0 10 1 14 -262144
--1 0;
-#X obj 56 111 table bufm 88200;
-#X obj 223 232 prepend set;
-#X text 51 80 argument: number of outlets (default 2);
-#X text 109 312 abbreviation;
-#X obj 56 232 prepend set;
-#X msg 56 156 vasp 22050 bufm 44100 0;
-#X obj 56 190 vasp.multi 2;
-#X obj 58 311 vasp.m;
-#X obj 58 366 VASP-HELP;
-#X msg 56 257;
-#X msg 223 257;
-#X connect 3 0 12 0;
-#X connect 6 0 11 0;
-#X connect 7 0 8 0;
-#X connect 8 0 6 0;
-#X connect 8 1 3 0;
diff --git a/externals/grill/vasp/pd-help/vasp_mwindow.pd b/externals/grill/vasp/pd-help/vasp_mwindow.pd
deleted file mode 100644
index e14dbb28..00000000
--- a/externals/grill/vasp/pd-help/vasp_mwindow.pd
+++ /dev/null
@@ -1,64 +0,0 @@
-#N canvas 44 117 889 563 10;
-#X obj 62 41 cnv 15 15 15 empty empty vasp.*window 0 10 1 14 -262144
--1 0;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufmwindow 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 512 119 graph;
-#N canvas 0 0 406 282 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 4410 10 \; \$1 xlabel 1.1 0 22050 44100
-66150 88200 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 94000 -1 -0.5 0 0.5
-1;
-#X msg 33 45 symbol bufmwindow;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 771 320 pd init;
-#N canvas 0 0 194 221 clear_buffers 0;
-#X obj 49 73 vasp.= 0;
-#X obj 49 49 inlet;
-#X obj 49 97 vasp.u;
-#X obj 49 118 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 2 0;
-#X connect 1 0 0 0;
-#X connect 2 0 3 0;
-#X restore 569 325 pd clear_buffers;
-#X obj 63 495 VASP-HELP;
-#X obj 61 302 vasp.u;
-#X floatatom 194 210 5 0 0;
-#X text 259 209 0..4;
-#X msg 231 239 lin;
-#X msg 231 264 sin;
-#X msg 231 289 hanning;
-#X msg 231 314 hamming;
-#X msg 231 339 blackman;
-#X text 275 238 0;
-#X text 275 260 1;
-#X text 295 284 2;
-#X text 300 313 3;
-#X text 300 340 4;
-#X obj 225 401 vasp.!window;
-#X text 60 396 see also:;
-#X obj 322 426 vasp.*xwindow;
-#X obj 225 426 vasp.*!window;
-#X text 60 104 argument/right inlet: name or number of name;
-#X text 60 80 generate window functions;
-#X obj 322 401 vasp.xwindow;
-#X msg 61 149 vasp bufmwindow;
-#X obj 61 250 vasp.*window lin;
-#X obj 134 401 vasp.window;
-#X msg 569 301 vasp bufmwindow;
-#X obj 61 178 vasp.osc 3000;
-#X text 182 156 generate a sine wave;
-#X text 183 173 and multiply it with a window function;
-#X connect 6 0 26 1;
-#X connect 8 0 26 1;
-#X connect 9 0 26 1;
-#X connect 10 0 26 1;
-#X connect 11 0 26 1;
-#X connect 12 0 26 1;
-#X connect 25 0 29 0;
-#X connect 26 0 5 0;
-#X connect 28 0 3 0;
-#X connect 29 0 26 0;
diff --git a/externals/grill/vasp/pd-help/vasp_mxwindow.pd b/externals/grill/vasp/pd-help/vasp_mxwindow.pd
deleted file mode 100644
index 615af950..00000000
--- a/externals/grill/vasp/pd-help/vasp_mxwindow.pd
+++ /dev/null
@@ -1,64 +0,0 @@
-#N canvas 68 99 889 563 10;
-#X obj 62 41 cnv 15 15 15 empty empty vasp.*xwindow 0 10 1 14 -262144
--1 0;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufmxwindow 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 512 119 graph;
-#N canvas 0 0 410 286 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 4410 10 \; \$1 xlabel 1.1 0 22050 44100
-66150 88200 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 94000 -1 -0.5 0 0.5
-1;
-#X msg 33 45 symbol bufmxwindow;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 771 320 pd init;
-#N canvas 0 0 194 221 clear_buffers 0;
-#X obj 49 73 vasp.= 0;
-#X obj 49 49 inlet;
-#X obj 49 97 vasp.u;
-#X obj 49 118 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 2 0;
-#X connect 1 0 0 0;
-#X connect 2 0 3 0;
-#X restore 569 327 pd clear_buffers;
-#X obj 63 495 VASP-HELP;
-#X obj 61 302 vasp.u;
-#X floatatom 194 210 5 0 0;
-#X text 259 209 0..4;
-#X msg 231 239 lin;
-#X msg 231 264 sin;
-#X msg 231 289 hanning;
-#X msg 231 314 hamming;
-#X msg 231 339 blackman;
-#X text 275 238 0;
-#X text 275 260 1;
-#X text 295 284 2;
-#X text 300 313 3;
-#X text 300 335 4;
-#X obj 225 401 vasp.!window;
-#X text 60 396 see also:;
-#X text 60 102 argument/right inlet: name or number of name;
-#X text 60 80 generate window functions;
-#X obj 322 401 vasp.xwindow;
-#X obj 134 401 vasp.window;
-#X obj 61 174 vasp.osc 3000;
-#X text 182 156 generate a sine wave;
-#X text 182 178 and multiply it with a window function;
-#X obj 134 426 vasp.*window;
-#X msg 569 302 vasp bufmxwindow;
-#X obj 225 426 vasp.*!window;
-#X msg 61 149 vasp bufmxwindow;
-#X obj 61 250 vasp.*xwindow lin;
-#X connect 6 0 31 1;
-#X connect 8 0 31 1;
-#X connect 9 0 31 1;
-#X connect 10 0 31 1;
-#X connect 11 0 31 1;
-#X connect 12 0 31 1;
-#X connect 24 0 31 0;
-#X connect 28 0 3 0;
-#X connect 30 0 24 0;
-#X connect 31 0 5 0;
diff --git a/externals/grill/vasp/pd-help/vasp_neq.pd b/externals/grill/vasp/pd-help/vasp_neq.pd
deleted file mode 100644
index 15f3c905..00000000
--- a/externals/grill/vasp/pd-help/vasp_neq.pd
+++ /dev/null
@@ -1,52 +0,0 @@
-#N canvas 28 91 938 543 10;
-#X obj 62 41 cnv 15 15 15 empty empty vasp.!= 0 10 1 14 -262144 -1
-0;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufneq1 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 512 119 graph;
-#N canvas 0 0 404 280 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 4410 10 \; \$1 xlabel 1.1 0 22050 44100
-66150 88200 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 94000 -1 -0.5 0 0.5
-1;
-#X msg 33 45 symbol bufneq1 \, symbol bufneq2;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 766 421 pd init;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufneq2 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 512 248 graph;
-#X text 59 98 argument/right inlet: value;
-#N canvas 0 0 413 295 clear_buffers 0;
-#X obj 49 73 vasp.= 0;
-#X obj 49 49 inlet;
-#X obj 49 97 vasp.u;
-#X obj 49 118 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 2 0;
-#X connect 1 0 0 0;
-#X connect 2 0 3 0;
-#X restore 564 426 pd clear_buffers;
-#X text 417 248 1/true;
-#X text 416 288 0/false;
-#X text 60 80 not equal;
-#X msg 564 399 vasp bufneq1 bufneq2;
-#X text 166 358 test if a part of the function is not equal to -1;
-#X obj 62 383 vasp.update;
-#X obj 62 356 vasp.!= -1;
-#X obj 62 325 vasp.= bufneq1;
-#X msg 62 298 vasp bufneq2;
-#X obj 53 444 VASP-HELP;
-#X text 173 149 generate a function;
-#X msg 61 150 vasp bufequ;
-#X obj 61 218 vasp.update;
-#X obj 61 178 vasp.= env 0 0 1 22049 0.3 22050 0.3 44099 -1 44100 -1
-66149 1 66150 0 88200;
-#X connect 9 0 5 0;
-#X connect 12 0 11 0;
-#X connect 13 0 12 0;
-#X connect 14 0 13 0;
-#X connect 17 0 19 0;
-#X connect 19 0 18 0;
diff --git a/externals/grill/vasp/pd-help/vasp_noise.pd b/externals/grill/vasp/pd-help/vasp_noise.pd
deleted file mode 100644
index 59e2e38b..00000000
--- a/externals/grill/vasp/pd-help/vasp_noise.pd
+++ /dev/null
@@ -1,43 +0,0 @@
-#N canvas 56 83 867 431 10;
-#X obj 71 32 cnv 15 15 15 empty empty vasp.noise 0 10 1 14 -262144
--1 0;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufnoise 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 412 131 graph;
-#N canvas 0 0 400 276 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 4410 10 \; \$1 xlabel 1.1 0 22050 44100
-66150 88200 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 94000 -1 -0.5 0 0.5
-1;
-#X msg 33 45 symbol bufnoise;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 692 310 pd init;
-#N canvas 40 55 247 122 clear_buffer 0;
-#X obj 54 79 vasp.update;
-#X obj 54 56 vasp.= 0;
-#X obj 54 26 inlet;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X restore 547 310 pd clear_buffer;
-#X obj 415 311 dac~;
-#X obj 415 267 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X text 437 266 play;
-#X text 71 63 vasp noise generator;
-#X obj 415 288 tabplay~ bufnoise;
-#X msg 547 287 vasp bufnoise;
-#X obj 77 217 vasp.update;
-#X obj 77 194 vasp.* 0.5;
-#X msg 77 126 vasp bufnoise;
-#X text 175 125 generate white noise;
-#X obj 77 171 vasp.noise;
-#X obj 65 369 VASP-HELP;
-#X connect 5 0 8 0;
-#X connect 8 0 4 0;
-#X connect 8 0 4 1;
-#X connect 9 0 3 0;
-#X connect 11 0 10 0;
-#X connect 12 0 14 0;
-#X connect 14 0 11 0;
diff --git a/externals/grill/vasp/pd-help/vasp_nonzero.pd b/externals/grill/vasp/pd-help/vasp_nonzero.pd
deleted file mode 100644
index 137f7abd..00000000
--- a/externals/grill/vasp/pd-help/vasp_nonzero.pd
+++ /dev/null
@@ -1,160 +0,0 @@
-#N canvas 96 126 848 577 10;
-#X obj 62 32 cnv 15 15 15 empty empty vasp.?? 0 10 1 14 -262144 -1
-0;
-#X text 64 66 outputs all samples of a vasp that are unequal zero;
-#X text 64 95 right outlet: sample value;
-#X text 65 83 left outlet: sample index;
-#N canvas 0 0 413 295 clear_buffers 0;
-#X obj 49 73 vasp.= 0;
-#X obj 49 49 inlet;
-#X obj 49 97 vasp.u;
-#X obj 49 118 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 2 0;
-#X connect 1 0 0 0;
-#X connect 2 0 3 0;
-#X restore 512 453 pd clear_buffers;
-#X msg 512 427 vasp bufnonzero bufnonzero1;
-#N canvas 92 108 504 435 inside 0;
-#X obj 87 206 soundfiler;
-#X obj 305 257 s \$0-sample-length;
-#X obj 87 260 s \$0-draw_display;
-#X msg 235 258 resize \$1;
-#X obj 235 280 s bufnonzero1;
-#X obj 245 304 s bufnonzero;
-#X msg 235 232 44100;
-#N canvas 0 0 691 318 menuhandler 0;
-#X obj 69 270 outlet;
-#X msg 111 216 color \$1 \$2;
-#X obj 183 270 outlet;
-#X msg 225 216 color \$1 \$2;
-#X obj 297 270 outlet;
-#X msg 339 216 color \$1 \$2;
-#X obj 411 79 r \$0-plastic;
-#X obj 411 270 outlet;
-#X obj 453 241 s \$0-plastic-color;
-#X msg 453 216 color \$1 \$2;
-#X obj 69 79 r \$0-bass;
-#X obj 183 79 r \$0-beat;
-#X obj 297 79 r \$0-fly;
-#X obj 111 241 s \$0-bass-color;
-#X obj 225 241 s \$0-beat-color;
-#X obj 339 241 s \$0-fly-color;
-#X obj 69 108 t b b b;
-#X obj 183 108 t b b b;
-#X obj 297 108 t b b b;
-#X obj 411 108 t b b b;
-#X msg 111 133 6 12;
-#X msg 79 133 1 10;
-#X msg 191 133 1 10;
-#X msg 225 133 6 12;
-#X msg 306 133 1 10;
-#X msg 339 133 6 12;
-#X msg 419 132 1 10;
-#X msg 453 133 6 12;
-#X connect 1 0 13 0;
-#X connect 3 0 14 0;
-#X connect 5 0 15 0;
-#X connect 6 0 19 0;
-#X connect 9 0 8 0;
-#X connect 10 0 16 0;
-#X connect 11 0 17 0;
-#X connect 12 0 18 0;
-#X connect 16 0 0 0;
-#X connect 16 1 21 0;
-#X connect 16 2 20 0;
-#X connect 17 0 2 0;
-#X connect 17 1 22 0;
-#X connect 17 2 23 0;
-#X connect 18 0 4 0;
-#X connect 18 1 24 0;
-#X connect 18 2 25 0;
-#X connect 19 0 7 0;
-#X connect 19 1 26 0;
-#X connect 19 2 27 0;
-#X connect 20 0 1 0;
-#X connect 21 0 3 0;
-#X connect 21 0 5 0;
-#X connect 21 0 9 0;
-#X connect 22 0 1 0;
-#X connect 22 0 5 0;
-#X connect 22 0 9 0;
-#X connect 23 0 3 0;
-#X connect 24 0 1 0;
-#X connect 24 0 3 0;
-#X connect 24 0 9 0;
-#X connect 25 0 5 0;
-#X connect 26 0 5 0;
-#X connect 26 0 3 0;
-#X connect 26 0 1 0;
-#X connect 27 0 9 0;
-#X restore 77 43 pd menuhandler;
-#X obj 235 211 loadbang;
-#X obj 41 107 loadbang;
-#X msg 87 230 bang;
-#X msg 77 79 read bass.aif bufnonzero;
-#X msg 103 107 read beat.aif bufnonzero;
-#X msg 129 133 read fly.aif bufnonzero;
-#X msg 156 160 read plastic.aif bufnonzero;
-#X connect 0 0 10 0;
-#X connect 3 0 4 0;
-#X connect 3 0 5 0;
-#X connect 6 0 3 0;
-#X connect 6 0 1 0;
-#X connect 7 0 11 0;
-#X connect 7 1 12 0;
-#X connect 7 2 13 0;
-#X connect 7 3 14 0;
-#X connect 8 0 6 0;
-#X connect 9 0 12 0;
-#X connect 10 0 2 0;
-#X connect 11 0 0 0;
-#X connect 12 0 0 0;
-#X connect 13 0 0 0;
-#X connect 14 0 0 0;
-#X restore 708 457 pd inside;
-#X obj 462 101 wavedisplay-simple bufnonzero \$0;
-#X obj 463 243 wavedisplay-simple bufnonzero1 \$0;
-#X obj 81 151 hdl 15 1 0 6 \$0-beat empty empty 0 -6 1152 8 -262144
--1 -1 0;
-#X obj 81 151 cnv 15 90 15 empty \$0-beat-color beat.aif 5 8 576 8
--225271 -33289 0;
-#X obj 81 169 hdl 15 1 0 6 \$0-fly empty empty 0 -6 1152 8 -262144
--1 -1 0;
-#X obj 81 169 cnv 15 90 15 empty \$0-fly-color fly.aif 5 8 576 8 -166441
--233017 0;
-#X obj 81 133 hdl 15 1 0 6 \$0-bass empty empty 0 -6 1152 8 -262144
--1 -1 0;
-#X obj 81 133 cnv 15 90 15 empty \$0-bass-color bass.aif 5 8 576 8
--166441 -233017 0;
-#X obj 81 187 hdl 15 1 0 6 \$0-plastic empty empty 0 -6 1152 8 -262144
--1 -1 0;
-#X obj 81 187 cnv 15 90 15 empty \$0-plastic-color plastic.aif 5 8
-576 8 -166441 -233017 0;
-#X text 723 83 source;
-#X text 728 224 peaks;
-#X obj 62 258 vasp.= bufnonzero;
-#X msg 62 229 vasp bufnonzero1;
-#X obj 62 309 vasp.update;
-#X obj 115 330 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X obj 62 285 vasp.peaks 0.0004;
-#X text 140 388 sample index;
-#X text 177 455 sample values;
-#X obj 62 346 vasp.??;
-#X text 183 228 copy to new buffer \, find peaks;
-#X obj 62 389 prepend set;
-#X obj 99 455 prepend set;
-#X msg 62 415;
-#X msg 99 481;
-#X obj 34 521 VASP-HELP;
-#X connect 5 0 4 0;
-#X connect 19 0 23 0;
-#X connect 20 0 19 0;
-#X connect 21 0 22 0;
-#X connect 21 0 26 0;
-#X connect 23 0 21 0;
-#X connect 26 0 28 0;
-#X connect 26 1 29 0;
-#X connect 28 0 30 0;
-#X connect 29 0 31 0;
diff --git a/externals/grill/vasp/pd-help/vasp_offset.pd b/externals/grill/vasp/pd-help/vasp_offset.pd
deleted file mode 100644
index 214d0284..00000000
--- a/externals/grill/vasp/pd-help/vasp_offset.pd
+++ /dev/null
@@ -1,30 +0,0 @@
-#N canvas 192 165 707 400 10;
-#X text 55 83 argument/right inlet: value;
-#X text 55 69 set the offset of a vasp (into a buffer);
-#X text 55 98 ---! vasp.offs sets all vectors to the same offset !---
-;
-#X obj 41 11 cnv 15 15 15 empty empty vasp.offset 0 10 1 14 -262144
--1 0;
-#X text 57 323 abbreviation;
-#X floatatom 143 175 0 0 0;
-#X obj 58 221 prepend set;
-#X msg 58 148 vasp bufoffs1;
-#X obj 58 196 vasp.offset 300;
-#X floatatom 330 175 0 0 0;
-#X obj 245 221 prepend set;
-#X msg 245 148 vasp bufoffs1 220 bufoffs2 100;
-#X obj 245 196 vasp.offset 300;
-#X obj 157 322 vasp.o;
-#X obj 55 370 VASP-HELP;
-#X obj 521 273 table bufoffs1;
-#X obj 522 300 table bufoffs2;
-#X msg 58 254;
-#X msg 245 254;
-#X connect 5 0 8 1;
-#X connect 6 0 17 0;
-#X connect 7 0 8 0;
-#X connect 8 0 6 0;
-#X connect 9 0 12 1;
-#X connect 10 0 18 0;
-#X connect 11 0 12 0;
-#X connect 12 0 10 0;
diff --git a/externals/grill/vasp/pd-help/vasp_offsetd.pd b/externals/grill/vasp/pd-help/vasp_offsetd.pd
deleted file mode 100644
index 037a01b6..00000000
--- a/externals/grill/vasp/pd-help/vasp_offsetd.pd
+++ /dev/null
@@ -1,28 +0,0 @@
-#N canvas 191 100 545 439 10;
-#X text 55 80 argument/right inlet: value;
-#X text 55 63 change the offset to a vasp (relatively);
-#X obj 41 11 cnv 15 15 15 empty empty vasp.offset+ 0 10 1 14 -262144
--1 0;
-#X text 57 323 abbreviation;
-#X floatatom 149 151 0 0 0;
-#X msg 58 234 vasp -1 bufoffsd1 300 0;
-#X obj 58 201 prepend set;
-#X obj 58 177 vasp.offset+ 300;
-#X msg 58 128 vasp bufoffsd1;
-#X floatatom 336 151 0 0 0;
-#X msg 245 234 vasp -1 bufoffs+1 520 0 bufoffsd2 400 0;
-#X obj 245 201 prepend set;
-#X obj 245 174 vasp.offset+ 300;
-#X obj 138 324 vasp.o+;
-#X msg 245 128 vasp bufoffsd1 220 bufoffsd2 100;
-#X obj 359 284 table bufoffsd1 88200;
-#X obj 359 305 table bufoffsd2 88200;
-#X obj 57 386 VASP-HELP;
-#X connect 4 0 7 1;
-#X connect 6 0 5 0;
-#X connect 7 0 6 0;
-#X connect 8 0 7 0;
-#X connect 9 0 12 1;
-#X connect 11 0 10 0;
-#X connect 12 0 11 0;
-#X connect 14 0 12 0;
diff --git a/externals/grill/vasp/pd-help/vasp_offsetq.pd b/externals/grill/vasp/pd-help/vasp_offsetq.pd
deleted file mode 100644
index e2a35dde..00000000
--- a/externals/grill/vasp/pd-help/vasp_offsetq.pd
+++ /dev/null
@@ -1,25 +0,0 @@
-#N canvas 243 134 633 339 10;
-#X obj 56 30 cnv 15 15 15 empty empty vasp.offset? 0 10 1 14 -262144
--1 0;
-#X text 42 59 get a single vectored vasp's offset;
-#X obj 45 131 cnv 15 74 17 empty empty empty 20 12 0 14 -258699 -66577
-0;
-#X obj 226 132 cnv 15 74 17 empty empty empty 20 12 0 14 -258699 -66577
-0;
-#X floatatom 226 163 0 0 0;
-#X floatatom 45 162 0 0 0;
-#X obj 226 132 vasp.offset?;
-#X obj 45 131 vasp.offset?;
-#X msg 226 107 vasp buffoffsetq 220 buffoffsetq 300;
-#X msg 45 106 vasp 200 buffoffsetq 300;
-#X text 228 89 more than 1 vector. watch pd window!;
-#X text 52 278 abbreviation;
-#X obj 148 275 vasp.o;
-#X obj 148 275 cnv 15 44 17 empty empty empty 20 12 0 14 -258699 -66577
-0;
-#X obj 148 275 vasp.o?;
-#X obj 278 221 table buffoffsetq 88200;
-#X connect 6 0 4 0;
-#X connect 7 0 5 0;
-#X connect 8 0 6 0;
-#X connect 9 0 7 0;
diff --git a/externals/grill/vasp/pd-help/vasp_opt.pd b/externals/grill/vasp/pd-help/vasp_opt.pd
deleted file mode 100644
index 97fd05b7..00000000
--- a/externals/grill/vasp/pd-help/vasp_opt.pd
+++ /dev/null
@@ -1,71 +0,0 @@
-#N canvas 36 36 786 555 10;
-#X obj 71 32 cnv 15 15 15 empty empty vasp.opt 0 10 1 14 -262144 -1
-0;
-#X obj 72 113 filelist \$0;
-#X obj 340 453 dac~;
-#X obj 340 415 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X text 361 413 play;
-#N canvas 92 108 338 379 inside 0;
-#X obj 66 169 soundfiler;
-#X obj 91 253 s \$0-sample-length;
-#X obj 66 223 s \$0-draw_display;
-#X obj 66 47 loadbang;
-#X obj 66 113 filelisthandler \$0;
-#X msg 66 145 read -resize \$1 bufopt;
-#X msg 66 91 3;
-#X obj 66 193 t b f;
-#X connect 0 0 7 0;
-#X connect 3 0 6 0;
-#X connect 4 0 5 0;
-#X connect 5 0 0 0;
-#X connect 6 0 4 0;
-#X connect 7 0 2 0;
-#X connect 7 1 1 0;
-#X restore 607 456 pd inside;
-#X obj 59 440 vasp.update;
-#X obj 59 460 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X text 69 59 optimise a vasp (normalize);
-#X text 70 73 right outlet: the previous maximum set to 1;
-#X obj 342 136 wavedisplay-simple bufopt \$0;
-#X obj 340 433 tabplay~ bufopt;
-#X msg 482 433 vasp bufopt;
-#N canvas 40 55 281 170 clear_buffer 0;
-#X obj 54 79 vasp.update;
-#X obj 54 56 vasp.= 0;
-#X obj 54 26 inlet;
-#X obj 54 108 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 3 0;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X restore 482 453 pd clear_buffer;
-#X msg 59 338 vasp bufopt;
-#X obj 59 361 vasp.amax?;
-#X text 58 317 or use vasp.amax? to optimise buffer content;
-#X floatatom 114 399 12 0 0;
-#X obj 59 419 vasp./;
-#X text 123 381 current absolute maximum;
-#X obj 59 269 vasp.update;
-#X obj 59 289 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X msg 59 204 vasp bufopt;
-#X obj 59 227 vasp.opt;
-#X floatatom 102 250 8 0 0;
-#X obj 60 514 VASP-HELP;
-#X text 102 514 - vasp overview;
-#X connect 3 0 11 0;
-#X connect 6 0 7 0;
-#X connect 11 0 2 0;
-#X connect 11 0 2 1;
-#X connect 12 0 13 0;
-#X connect 14 0 15 0;
-#X connect 15 0 18 0;
-#X connect 15 1 17 0;
-#X connect 17 0 18 1;
-#X connect 18 0 6 0;
-#X connect 20 0 21 0;
-#X connect 22 0 23 0;
-#X connect 23 0 20 0;
-#X connect 23 1 24 0;
diff --git a/externals/grill/vasp/pd-help/vasp_osc.pd b/externals/grill/vasp/pd-help/vasp_osc.pd
deleted file mode 100644
index 0c34f5ae..00000000
--- a/externals/grill/vasp/pd-help/vasp_osc.pd
+++ /dev/null
@@ -1,63 +0,0 @@
-#N canvas 47 54 873 437 10;
-#X obj 71 32 cnv 15 15 15 empty empty vasp.osc 0 10 1 14 -262144 -1
-0;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufosc 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 412 131 graph;
-#N canvas 0 0 400 276 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 4410 10 \; \$1 xlabel 1.1 0 22050 44100
-66150 88200 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 94000 -1 -0.5 0 0.5
-1;
-#X msg 33 45 symbol bufosc;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 692 310 pd init;
-#N canvas 40 55 247 122 clear_buffer 0;
-#X obj 54 79 vasp.update;
-#X obj 54 56 vasp.= 0;
-#X obj 54 26 inlet;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X restore 547 310 pd clear_buffer;
-#X text 71 83 optional argument/right inlet: frequency in period length
-in samples;
-#X obj 415 311 dac~;
-#X obj 415 267 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X text 437 266 play;
-#X text 71 63 vasp sine wave generator;
-#X text 175 125 generate a sine wave at 1 kHz;
-#X obj 415 288 tabplay~ bufosc;
-#X msg 547 287 vasp bufosc;
-#N canvas 4 20 454 304 Hz_to_period_length 0;
-#X floatatom 139 242 0 0 0;
-#X obj 139 142 t b f;
-#X text 172 223 period length in samples (float);
-#X floatatom 139 80 0 0 0;
-#X obj 139 206 / 1;
-#X text 184 79 frequency in Hz;
-#X obj 53 142 samplerate~;
-#X obj 53 119 loadbang;
-#X floatatom 139 175 5 0 0;
-#X connect 1 0 8 0;
-#X connect 1 1 4 1;
-#X connect 3 0 1 0;
-#X connect 4 0 0 0;
-#X connect 6 0 8 0;
-#X connect 7 0 6 0;
-#X connect 8 0 4 0;
-#X restore 81 311 pd Hz_to_period_length;
-#X obj 77 217 vasp.update;
-#X obj 77 194 vasp.* 0.5;
-#X msg 77 127 vasp bufosc;
-#X obj 77 171 vasp.osc 44.1;
-#X obj 66 380 VASP-HELP;
-#X connect 6 0 10 0;
-#X connect 10 0 5 0;
-#X connect 10 0 5 1;
-#X connect 11 0 3 0;
-#X connect 14 0 13 0;
-#X connect 15 0 16 0;
-#X connect 16 0 14 0;
diff --git a/externals/grill/vasp/pd-help/vasp_part.pd b/externals/grill/vasp/pd-help/vasp_part.pd
deleted file mode 100644
index 45a49b5e..00000000
--- a/externals/grill/vasp/pd-help/vasp_part.pd
+++ /dev/null
@@ -1,34 +0,0 @@
-#N canvas 218 99 717 545 10;
-#X text 69 160 right outlet: a vasp with remaining length (if there
-is one) of the input vasp;
-#X text 69 144 left outlet: the new vasps one after the other;
-#X obj 71 47 cnv 15 15 15 empty empty vasp.part 0 10 1 14 -262144 -1
-0;
-#X obj 199 275 print rest;
-#X obj 78 274 print;
-#X obj 78 242 vasp.part 100 100 100;
-#X text 189 206 vasp.part generates 3 new vasps and a rest vasp;
-#X msg 78 207 vasp bufpart1;
-#X obj 125 430 print rest;
-#X obj 76 430 print;
-#X msg 284 360 100 200 300 500 100 200;
-#X obj 76 392 vasp.part;
-#X text 272 323 the input vasp defines the maximum lengths of the vasps
-at the output;
-#X msg 76 328 vasp 1100 bufpart1 bufpart2;
-#X text 202 430 so there are just 4 vasps and no rest.... watch pd
-window;
-#X obj 66 498 VASP-HELP;
-#X text 67 101 left inlet: a vasp to define the buffername and the
-maximum length;
-#X obj 441 477 table bufpart1 2000;
-#X obj 441 499 table bufpart2 2000;
-#X text 67 84 generates vasps with certain lengths;
-#X text 67 131 argument/ right inlet: vasps lengths (list);
-#X connect 5 0 4 0;
-#X connect 5 1 3 0;
-#X connect 7 0 5 0;
-#X connect 10 0 11 1;
-#X connect 11 0 9 0;
-#X connect 11 1 8 0;
-#X connect 13 0 11 0;
diff --git a/externals/grill/vasp/pd-help/vasp_peaks.pd b/externals/grill/vasp/pd-help/vasp_peaks.pd
deleted file mode 100644
index 7cfc0fd0..00000000
--- a/externals/grill/vasp/pd-help/vasp_peaks.pd
+++ /dev/null
@@ -1,89 +0,0 @@
-#N canvas 152 40 822 598 10;
-#X obj 71 32 cnv 15 15 15 empty empty vasp.peaks 0 10 1 14 -262144
--1 0;
-#X obj 71 131 filelist \$0;
-#N canvas 40 55 281 170 clear_buffers 0;
-#X obj 54 79 vasp.update;
-#X obj 54 56 vasp.= 0;
-#X obj 54 26 inlet;
-#X obj 54 108 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 3 0;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X restore 479 495 pd clear_buffers;
-#X obj 60 292 vasp.update;
-#X obj 58 433 vasp.update;
-#X obj 58 453 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X obj 60 312 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X obj 337 495 dac~;
-#X obj 337 457 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X text 358 455 play;
-#X text 70 66 argument/right inlet: density value 0-1;
-#X text 172 231 copy to new buffer \, find valleys;
-#X floatatom 151 307 12 0 0;
-#X obj 151 328 * 88200;
-#X floatatom 151 350 5 0 0;
-#X obj 58 412 vasp.opt;
-#X text 679 99 source;
-#X text 69 52 find the local maxima of a buffer content;
-#X text 69 81 outlet: current density value;
-#X msg 60 227 vasp bufpeaks2;
-#X obj 337 475 tabplay~ bufpeaks1;
-#X msg 479 475 vasp bufpeaks1 bufpeaks2;
-#X obj 399 117 wavedisplay-simple bufpeaks1 \$0;
-#X obj 399 271 wavedisplay-simple bufpeaks2 \$0;
-#N canvas 92 108 428 393 inside 0;
-#X obj 66 169 soundfiler;
-#X obj 84 253 s \$0-sample-length;
-#X obj 66 223 s \$0-draw_display;
-#X msg 214 221 resize \$1;
-#X obj 66 47 loadbang;
-#X obj 66 193 t b f f;
-#X obj 66 113 filelisthandler \$0;
-#X msg 66 91 2;
-#X obj 66 69 t b b;
-#X msg 99 91 88200;
-#X obj 214 243 s bufpeaks1;
-#X obj 225 264 s bufpeaks2;
-#X msg 66 145 read \$1 bufpeaks1;
-#X connect 0 0 5 0;
-#X connect 3 0 10 0;
-#X connect 3 0 11 0;
-#X connect 4 0 8 0;
-#X connect 5 0 2 0;
-#X connect 5 1 1 0;
-#X connect 5 2 3 0;
-#X connect 6 0 12 0;
-#X connect 7 0 6 0;
-#X connect 8 0 7 0;
-#X connect 8 1 9 0;
-#X connect 9 0 5 0;
-#X connect 12 0 0 0;
-#X restore 668 495 pd inside;
-#X msg 58 389 vasp bufpeaks2;
-#X text 673 252 peaks;
-#X text 191 348 peak count;
-#X text 230 306 actual peak density;
-#X text 166 273 target peak density as argument;
-#X text 171 390 optimize the buffer content;
-#X obj 60 251 vasp.= bufpeaks1;
-#X obj 60 272 vasp.peaks 0.001;
-#X obj 49 531 VASP-HELP;
-#X connect 3 0 6 0;
-#X connect 4 0 5 0;
-#X connect 8 0 20 0;
-#X connect 12 0 13 0;
-#X connect 13 0 14 0;
-#X connect 15 0 4 0;
-#X connect 19 0 31 0;
-#X connect 20 0 7 0;
-#X connect 20 0 7 1;
-#X connect 21 0 2 0;
-#X connect 25 0 15 0;
-#X connect 31 0 32 0;
-#X connect 32 0 3 0;
-#X connect 32 1 12 0;
diff --git a/externals/grill/vasp/pd-help/vasp_phasor.pd b/externals/grill/vasp/pd-help/vasp_phasor.pd
deleted file mode 100644
index 38695a08..00000000
--- a/externals/grill/vasp/pd-help/vasp_phasor.pd
+++ /dev/null
@@ -1,67 +0,0 @@
-#N canvas 47 54 871 435 10;
-#N canvas 4 20 454 304 Hz_to_period_length 1;
-#X floatatom 138 238 0 0 0;
-#X obj 138 142 t b f;
-#X text 138 259 period length in samples (float);
-#X floatatom 138 80 0 0 0;
-#X obj 138 206 / 1;
-#X text 183 79 frequency in Hz;
-#X obj 53 142 samplerate~;
-#X obj 53 119 loadbang;
-#X floatatom 138 175 5 0 0;
-#X connect 1 0 8 0;
-#X connect 1 1 4 1;
-#X connect 3 0 1 0;
-#X connect 4 0 0 0;
-#X connect 6 0 8 0;
-#X connect 7 0 6 0;
-#X connect 8 0 4 0;
-#X restore 78 302 pd Hz_to_period_length;
-#X obj 71 32 cnv 15 15 15 empty empty vasp.phasor 0 10 1 14 -262144
--1 0;
-#N canvas 40 55 247 122 clear_buffer 0;
-#X obj 54 79 vasp.update;
-#X obj 54 56 vasp.= 0;
-#X obj 54 26 inlet;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X restore 547 310 pd clear_buffer;
-#X text 71 83 optional argument/right inlet: frequency in period length
-in samples;
-#X obj 415 311 dac~;
-#X obj 415 267 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X text 437 266 play;
-#X text 71 63 vasp saw tooth ramp generator;
-#X obj 415 288 tabplay~ bufphasor;
-#X msg 547 287 vasp bufphasor;
-#X obj 414 124 wavedisplay-simple bufphasor \$0;
-#N canvas 92 108 276 288 inside 0;
-#X obj 63 149 s \$0-sample-length;
-#X msg 103 103 resize \$1;
-#X obj 103 56 loadbang;
-#X msg 103 77 88200;
-#X obj 103 124 s bufphasor;
-#X connect 1 0 4 0;
-#X connect 2 0 3 0;
-#X connect 3 0 1 0;
-#X connect 3 0 0 0;
-#X restore 680 311 pd inside;
-#X obj 77 217 vasp.update;
-#X obj 77 194 vasp.* 0.5;
-#X msg 77 127 vasp bufphasor;
-#X text 188 124 generate saw tooth at 20 Hz;
-#X floatatom 168 151 5 0 0;
-#X obj 77 239 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X obj 77 171 vasp.phasor 2205;
-#X obj 77 371 VASP-HELP;
-#X connect 5 0 8 0;
-#X connect 8 0 4 0;
-#X connect 8 0 4 1;
-#X connect 9 0 2 0;
-#X connect 12 0 17 0;
-#X connect 13 0 12 0;
-#X connect 14 0 18 0;
-#X connect 16 0 18 1;
-#X connect 18 0 13 0;
diff --git a/externals/grill/vasp/pd-help/vasp_polar.pd b/externals/grill/vasp/pd-help/vasp_polar.pd
deleted file mode 100644
index e5314f9f..00000000
--- a/externals/grill/vasp/pd-help/vasp_polar.pd
+++ /dev/null
@@ -1,90 +0,0 @@
-#N canvas 28 7 948 670 10;
-#N canvas 92 108 559 430 inside 0;
-#X obj 66 154 soundfiler;
-#X obj 84 238 s \$0-sample-length;
-#X obj 66 208 s \$0-draw_display;
-#X msg 214 206 resize \$1;
-#X obj 214 159 loadbang;
-#X obj 67 53 loadbang;
-#X msg 214 180 88200;
-#X obj 66 178 t b f f;
-#X obj 67 101 filelisthandler \$0;
-#X msg 67 79 4;
-#X obj 214 228 s bufpol1;
-#X obj 224 252 s bufpol2;
-#X msg 67 133 read \$1 bufpol1;
-#X obj 236 278 s bufpola;
-#X obj 246 302 s bufpolp;
-#X obj 226 123 s \$0-bounds;
-#X msg 226 101 ylabel 315 -3.14 0 3.14 \, bounds 0 3.5 300 -3.5;
-#X connect 0 0 7 0;
-#X connect 3 0 10 0;
-#X connect 3 0 11 0;
-#X connect 3 0 13 0;
-#X connect 3 0 14 0;
-#X connect 4 0 6 0;
-#X connect 5 0 9 0;
-#X connect 5 0 16 0;
-#X connect 6 0 3 0;
-#X connect 6 0 1 0;
-#X connect 7 0 2 0;
-#X connect 7 1 1 0;
-#X connect 7 2 3 0;
-#X connect 8 0 12 0;
-#X connect 9 0 8 0;
-#X connect 12 0 0 0;
-#X connect 16 0 15 0;
-#X restore 360 610 pd inside;
-#X obj 75 32 cnv 15 15 15 empty empty vasp.polar 0 10 1 14 -262144
--1 0;
-#X obj 72 91 filelist \$0;
-#X obj 59 223 vasp.cfft;
-#X obj 59 244 vasp.update;
-#X obj 59 267 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X text 551 318 0 Hz;
-#X text 687 317 sr/2;
-#X text 206 474 <-- click to open;
-#X text 816 319 44.1 kHz;
-#N canvas 0 0 413 295 clear_buffers 0;
-#X obj 49 73 vasp.= 0;
-#X obj 49 49 inlet;
-#X obj 49 97 vasp.u;
-#X obj 49 118 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 2 0;
-#X connect 1 0 0 0;
-#X connect 2 0 3 0;
-#X restore 254 610 pd clear_buffers;
-#X text 254 565 clear;
-#X msg 59 200 vasp bufpol1 bufpol2;
-#X obj 546 51 wavedisplay-simple bufpol1 \$0;
-#X obj 546 194 wavedisplay-simple bufpol2 \$0;
-#X text 71 53 cartesian to polar coordinate conversion;
-#X text 202 201 transform into real and imaginary part;
-#X text 229 313 real/imaginary -> amplitude/phase;
-#X obj 59 473 phase-random_example;
-#X obj 59 380 vasp.update;
-#X obj 59 403 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X msg 59 314 vasp bufpol1 bufpol2;
-#X obj 59 357 vasp.polar;
-#X obj 56 622 VASP-HELP;
-#X obj 546 365 wavedisplay-simple bufpola \$0;
-#X obj 546 518 wavedisplay-simple bufpolp \$0;
-#X obj 59 335 vasp.c-> bufpola bufpolp;
-#X msg 254 587 vasp bufpol1 bufpol2 bufpola bufpolp;
-#X obj 546 497 r \$0-bounds;
-#X text 788 31 real part;
-#X text 759 173 imaginary part;
-#X text 791 345 amplitude;
-#X text 812 497 phase;
-#X connect 3 0 4 0;
-#X connect 4 0 5 0;
-#X connect 12 0 3 0;
-#X connect 19 0 20 0;
-#X connect 21 0 26 0;
-#X connect 22 0 19 0;
-#X connect 26 1 22 0;
-#X connect 27 0 10 0;
-#X connect 28 0 25 0;
diff --git a/externals/grill/vasp/pd-help/vasp_pow.pd b/externals/grill/vasp/pd-help/vasp_pow.pd
deleted file mode 100644
index 1ee54241..00000000
--- a/externals/grill/vasp/pd-help/vasp_pow.pd
+++ /dev/null
@@ -1,44 +0,0 @@
-#N canvas 47 54 867 462 10;
-#X obj 71 32 cnv 15 15 15 empty empty vasp.pow 0 10 1 14 -262144 -1
-0;
-#N canvas 0 0 410 286 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 4410 10 \; \$1 xlabel 1.1 0 22050 44100
-66150 88200 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 94000 -1 -0.5 0 0.5
-1;
-#X msg 33 45 symbol bufpow;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 608 330 pd init;
-#N canvas 40 55 247 122 clear_buffer 0;
-#X obj 54 79 vasp.update;
-#X obj 54 56 vasp.= 0;
-#X obj 54 26 inlet;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X restore 463 330 pd clear_buffer;
-#X obj 77 197 vasp.update;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufpow 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 341 144 graph;
-#X text 72 81 vasp power function;
-#X text 71 93 argument/right inlet: exponent;
-#X msg 77 127 vasp bufpow;
-#X msg 463 308 vasp bufpow;
-#X obj 77 150 vasp.osc 44100;
-#X obj 77 172 vasp.* 0.2;
-#X text 71 63 sample ^ x;
-#X obj 77 329 vasp.update;
-#X msg 77 246 vasp bufpow;
-#X obj 77 303 vasp.pow 0.1;
-#X floatatom 144 279 5 0 0;
-#X text 202 278 exponent;
-#X obj 79 397 VASP-HELP;
-#X connect 7 0 9 0;
-#X connect 8 0 2 0;
-#X connect 9 0 10 0;
-#X connect 10 0 3 0;
-#X connect 13 0 14 0;
-#X connect 14 0 12 0;
-#X connect 15 0 14 1;
diff --git a/externals/grill/vasp/pd-help/vasp_qamax.pd b/externals/grill/vasp/pd-help/vasp_qamax.pd
deleted file mode 100644
index 00c47f4b..00000000
--- a/externals/grill/vasp/pd-help/vasp_qamax.pd
+++ /dev/null
@@ -1,75 +0,0 @@
-#N canvas 57 40 901 555 10;
-#X obj 71 32 cnv 15 15 15 empty empty vasp.amax? 0 10 1 14 -262144
--1 0;
-#X obj 492 462 dac~;
-#X obj 492 418 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X text 514 417 play;
-#N canvas 40 55 281 170 clear_buffer 0;
-#X obj 54 79 vasp.update;
-#X obj 54 56 vasp.= 0;
-#X obj 54 26 inlet;
-#X obj 54 108 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 3 0;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X restore 624 462 pd clear_buffer;
-#X obj 74 116 filelist \$0;
-#N canvas 92 108 400 365 inside 0;
-#X obj 66 154 soundfiler;
-#X obj 84 238 s \$0-sample-length;
-#X obj 66 208 s \$0-draw_display;
-#X msg 214 206 resize \$1;
-#X obj 66 50 loadbang;
-#X obj 66 178 t b f f;
-#X obj 66 98 filelisthandler \$0;
-#X msg 66 76 3;
-#X msg 66 130 read -resize \$1 bufamax;
-#X obj 214 228 s bufamax;
-#X connect 0 0 5 0;
-#X connect 3 0 9 0;
-#X connect 4 0 7 0;
-#X connect 5 0 2 0;
-#X connect 5 1 1 0;
-#X connect 5 2 3 0;
-#X connect 6 0 8 0;
-#X connect 7 0 6 0;
-#X connect 8 0 0 0;
-#X restore 755 462 pd inside;
-#X text 70 75 right outlet: calculated value;
-#X text 72 58 max-value of the absolute values of a vasp;
-#X obj 492 439 tabplay~ bufamax;
-#X msg 624 439 vasp bufamax;
-#X obj 484 219 wavedisplay-simple bufamax \$0;
-#X msg 72 405 vasp bufamax;
-#X obj 72 451 vasp.update;
-#X obj 72 476 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X obj 72 428 vasp.opt;
-#X text 173 402 or use vasp.opt which does the same;
-#X floatatom 128 272 5 0 0;
-#X msg 73 215 vasp bufamax;
-#X obj 73 238 vasp.amax?;
-#X text 166 216 find the absolute maximum of this soundfile;
-#X msg 73 305 vasp bufamax;
-#X obj 73 328 vasp./;
-#X obj 73 351 vasp.update;
-#X obj 73 376 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X text 171 271 -> current absolute maximum;
-#X obj 63 520 VASP-HELP;
-#X text 169 327 use it to optimize buffer content;
-#X connect 2 0 9 0;
-#X connect 9 0 1 0;
-#X connect 9 0 1 1;
-#X connect 10 0 4 0;
-#X connect 12 0 15 0;
-#X connect 13 0 14 0;
-#X connect 15 0 13 0;
-#X connect 17 0 22 1;
-#X connect 18 0 19 0;
-#X connect 19 1 17 0;
-#X connect 21 0 22 0;
-#X connect 22 0 23 0;
-#X connect 23 0 24 0;
diff --git a/externals/grill/vasp/pd-help/vasp_qamin.pd b/externals/grill/vasp/pd-help/vasp_qamin.pd
deleted file mode 100644
index 6635dd85..00000000
--- a/externals/grill/vasp/pd-help/vasp_qamin.pd
+++ /dev/null
@@ -1,53 +0,0 @@
-#N canvas 57 40 879 499 10;
-#X obj 71 32 cnv 15 15 15 empty empty vasp.amin? 0 10 1 14 -262144
--1 0;
-#N canvas 40 55 281 170 clear_buffer 0;
-#X obj 54 79 vasp.update;
-#X obj 54 56 vasp.= 0;
-#X obj 54 26 inlet;
-#X obj 54 108 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 3 0;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X restore 616 427 pd clear_buffer;
-#X text 72 58 min-value of the absolute values of a vasp;
-#X text 70 75 right outlet: calculated value;
-#X msg 616 404 vasp bufamin;
-#X msg 50 192 vasp bufamin;
-#X obj 50 215 vasp.amin?;
-#X floatatom 105 249 5 0 0;
-#X text 148 248 -> current absolute minimum;
-#X obj 48 429 VASP-HELP;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufamin 100 float 0;
-#X coords 0 1 99 -1 300 100 1;
-#X restore 535 123 graph;
-#N canvas 0 0 398 274 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 1 10 \; \$1 xlabel 1.1 0 20 40 60 80 100
-\; \$1 yticks 0 0.25 2 \; \$1 ylabel 105 -1 -0.5 0 0.5 1;
-#X msg 33 45 symbol bufamin;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 772 429 pd init;
-#X obj 48 311 vasp.abs;
-#X msg 48 290 vasp bufamin;
-#X obj 48 332 vasp.u;
-#X obj 51 128 vasp.noise;
-#X msg 51 106 vasp bufamin;
-#X text 148 106 1 create random values;
-#X obj 51 149 vasp.u;
-#X text 150 193 2 find the absolute minimum of this soundfile;
-#X text 139 291 3 to control the result display the absolute values
-;
-#X text 55 387 related objects;
-#X obj 172 386 vasp.min;
-#X obj 246 386 vasp.min?;
-#X connect 4 0 1 0;
-#X connect 5 0 6 0;
-#X connect 6 1 7 0;
-#X connect 12 0 14 0;
-#X connect 13 0 12 0;
-#X connect 15 0 18 0;
-#X connect 16 0 15 0;
diff --git a/externals/grill/vasp/pd-help/vasp_qchannel.pd b/externals/grill/vasp/pd-help/vasp_qchannel.pd
deleted file mode 100644
index 8bb34876..00000000
--- a/externals/grill/vasp/pd-help/vasp_qchannel.pd
+++ /dev/null
@@ -1,10 +0,0 @@
-#N canvas 35 145 460 376 10;
-#X obj 58 31 cnv 15 15 15 empty empty vasp.channel? 0 10 1 14 -262144
--1 0;
-#X text 58 212 related object;
-#X text 53 125 (MaxMSP version of vasp);
-#X obj 60 165 vasp.channel?;
-#X text 58 71 get channel index of 0th vector in vasp;
-#X text 55 107 only useful for interleaved stereo-files;
-#X obj 162 211 vasp.channel;
-#X obj 61 280 VASP-HELP;
diff --git a/externals/grill/vasp/pd-help/vasp_qframes.pd b/externals/grill/vasp/pd-help/vasp_qframes.pd
deleted file mode 100644
index bfc0535c..00000000
--- a/externals/grill/vasp/pd-help/vasp_qframes.pd
+++ /dev/null
@@ -1,27 +0,0 @@
-#N canvas 207 210 709 402 10;
-#X obj 58 31 cnv 15 15 15 empty empty vasp.frames? 0 10 1 14 -262144
--1 0;
-#X text 372 130 get the maximum vasp length of both buffers;
-#X floatatom 372 211 0 0 0;
-#X obj 372 181 vasp.frames?;
-#X floatatom 212 211 0 0 0;
-#X obj 212 181 vasp.frames?;
-#X text 212 130 get the buffer length;
-#X msg 372 155 vasp bufframq bufframq1;
-#X msg 212 155 vasp bufframq;
-#X obj 418 273 table bufframq 88200;
-#X obj 418 296 table bufframq1 44100;
-#X floatatom 45 210 0 0 0;
-#X obj 45 180 vasp.frames?;
-#X msg 45 154 vasp 400 bufframq 300;
-#X text 106 312 abbreviation;
-#X obj 49 312 vasp.f?;
-#X obj 41 357 VASP-HELP;
-#X text 44 64 get a vasp's frame count (length) in frames;
-#X text 45 129 get the vasp's length;
-#X connect 3 0 2 0;
-#X connect 5 0 4 0;
-#X connect 7 0 3 0;
-#X connect 8 0 5 0;
-#X connect 12 0 11 0;
-#X connect 13 0 12 0;
diff --git a/externals/grill/vasp/pd-help/vasp_qmax.pd b/externals/grill/vasp/pd-help/vasp_qmax.pd
deleted file mode 100644
index 43226edc..00000000
--- a/externals/grill/vasp/pd-help/vasp_qmax.pd
+++ /dev/null
@@ -1,44 +0,0 @@
-#N canvas 57 40 757 367 10;
-#X obj 71 32 cnv 15 15 15 empty empty vasp.max? 0 10 1 14 -262144 -1
-0;
-#N canvas 40 55 281 170 clear_buffer 0;
-#X obj 54 79 vasp.update;
-#X obj 54 56 vasp.= 0;
-#X obj 54 26 inlet;
-#X obj 54 108 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 3 0;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X restore 468 280 pd clear_buffer;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufqmax 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 339 115 graph;
-#N canvas 0 0 396 272 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 4410 10 \; \$1 xlabel 1.1 0 22050 44100
-66150 88200 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 94000 -1 -0.5 0 0.5
-1;
-#X msg 33 43 symbol bufqmax;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 615 284 pd init;
-#X text 70 75 right outlet: max value;
-#X obj 73 144 vasp.osc 44100;
-#X obj 73 165 vasp.* 0.5;
-#X obj 73 186 vasp.update;
-#X msg 73 123 vasp bufqmax;
-#X text 68 58 get maximum sample value of a vasp;
-#X msg 468 257 vasp bufqmax;
-#X floatatom 124 285 5 0 0;
-#X msg 75 230 vasp bufqmax;
-#X obj 75 251 vasp.max?;
-#X text 167 282 >>>> maximum value;
-#X obj 64 339 VASP-HELP;
-#X connect 5 0 6 0;
-#X connect 6 0 7 0;
-#X connect 8 0 5 0;
-#X connect 10 0 1 0;
-#X connect 12 0 13 0;
-#X connect 13 1 11 0;
diff --git a/externals/grill/vasp/pd-help/vasp_qmin.pd b/externals/grill/vasp/pd-help/vasp_qmin.pd
deleted file mode 100644
index f205f105..00000000
--- a/externals/grill/vasp/pd-help/vasp_qmin.pd
+++ /dev/null
@@ -1,44 +0,0 @@
-#N canvas 57 40 817 436 10;
-#X obj 71 32 cnv 15 15 15 empty empty vasp.min? 0 10 1 14 -262144 -1
-0;
-#N canvas 40 55 281 170 clear_buffer 0;
-#X obj 54 79 vasp.update;
-#X obj 54 56 vasp.= 0;
-#X obj 54 26 inlet;
-#X obj 54 108 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 3 0;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X restore 468 280 pd clear_buffer;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufqmin 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 339 115 graph;
-#N canvas 0 0 394 270 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 4410 10 \; \$1 xlabel 1.1 0 22050 44100
-66150 88200 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 94000 -1 -0.5 0 0.5
-1;
-#X msg 33 45 symbol bufqmin;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 615 284 pd init;
-#X text 68 58 get minimum sample value of a vasp;
-#X text 70 75 right outlet: max value;
-#X msg 468 257 vasp bufqmin;
-#X msg 73 123 vasp bufqmin;
-#X obj 73 144 vasp.osc 44100;
-#X obj 73 165 vasp.* 0.5;
-#X obj 73 186 vasp.update;
-#X floatatom 124 285 5 0 0;
-#X obj 75 251 vasp.min?;
-#X msg 75 230 vasp bufqmin;
-#X text 167 282 >>>> minimum value;
-#X obj 56 344 VASP-HELP;
-#X connect 6 0 1 0;
-#X connect 7 0 8 0;
-#X connect 8 0 9 0;
-#X connect 9 0 10 0;
-#X connect 12 1 11 0;
-#X connect 13 0 12 0;
diff --git a/externals/grill/vasp/pd-help/vasp_qoffset.pd b/externals/grill/vasp/pd-help/vasp_qoffset.pd
deleted file mode 100644
index 22c6575c..00000000
--- a/externals/grill/vasp/pd-help/vasp_qoffset.pd
+++ /dev/null
@@ -1,19 +0,0 @@
-#N canvas 307 266 648 378 10;
-#X obj 44 28 cnv 15 15 15 empty empty vasp.offset? 0 10 1 14 -262144
--1 0;
-#X text 42 59 get a single vectored vasp's offset;
-#X text 52 278 abbreviation;
-#X obj 150 278 vasp.o?;
-#X obj 411 295 table buffoffsetq 88200;
-#X floatatom 45 162 0 0 0;
-#X obj 45 131 vasp.offset?;
-#X msg 45 106 vasp 200 buffoffsetq 300;
-#X floatatom 226 163 0 0 0;
-#X obj 226 132 vasp.offset?;
-#X msg 226 107 vasp buffoffsetq 220 buffoffsetq 300;
-#X text 228 88 more than 1 vector. watch pd window!;
-#X obj 45 325 VASP-HELP;
-#X connect 6 0 5 0;
-#X connect 7 0 6 0;
-#X connect 9 0 8 0;
-#X connect 10 0 9 0;
diff --git a/externals/grill/vasp/pd-help/vasp_qrmax.pd b/externals/grill/vasp/pd-help/vasp_qrmax.pd
deleted file mode 100644
index 3018e79b..00000000
--- a/externals/grill/vasp/pd-help/vasp_qrmax.pd
+++ /dev/null
@@ -1,99 +0,0 @@
-#N canvas 36 36 881 653 10;
-#X obj 71 32 cnv 15 15 15 empty empty vasp.rmax? 0 10 1 14 -262144
--1 0;
-#X obj 289 135 filelist \$0;
-#N canvas 92 108 410 375 inside 0;
-#X obj 63 217 soundfiler;
-#X obj 184 273 s \$0-sample-length;
-#X obj 63 271 s \$0-draw_display;
-#X msg 214 206 resize \$1;
-#X obj 63 49 loadbang;
-#X obj 63 161 filelisthandler \$0;
-#X msg 63 139 2;
-#X obj 214 228 s bufqrmax1;
-#X obj 225 250 s bufqrmax2;
-#X msg 63 193 read \$1 bufqrmax1;
-#X obj 63 76 t b b;
-#X msg 214 134 88200;
-#X obj 63 241 t b;
-#X connect 0 0 12 0;
-#X connect 3 0 7 0;
-#X connect 3 0 8 0;
-#X connect 4 0 10 0;
-#X connect 5 0 9 0;
-#X connect 6 0 5 0;
-#X connect 9 0 0 0;
-#X connect 10 0 6 0;
-#X connect 10 1 11 0;
-#X connect 11 0 3 0;
-#X connect 11 0 1 0;
-#X connect 12 0 2 0;
-#X restore 719 546 pd inside;
-#X text 70 75 right outlet: calculated value;
-#X text 70 92 needs two vectors;
-#N canvas 40 55 281 170 clear_buffers 0;
-#X obj 54 79 vasp.update;
-#X obj 54 56 vasp.= 0;
-#X obj 54 26 inlet;
-#X obj 54 108 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 3 0;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X restore 520 545 pd clear_buffers;
-#X obj 373 544 dac~;
-#X obj 373 501 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X text 395 498 play;
-#X text 72 58 maximum value of the radius values of a complex vasp
-;
-#X obj 465 130 wavedisplay-simple bufqrmax1 \$0;
-#X obj 465 267 wavedisplay-simple bufqrmax2 \$0;
-#X msg 520 522 vasp bufqrmax1 bufqrmax2;
-#X obj 51 538 vasp.update;
-#X obj 51 558 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X obj 53 162 vasp.cfft;
-#X obj 53 182 vasp.update;
-#X obj 53 202 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X msg 53 142 vasp bufqrmax1 bufqrmax2;
-#X obj 53 432 vasp.update;
-#X obj 53 452 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X msg 53 392 vasp bufqrmax1 bufqrmax2;
-#X obj 53 412 vasp.c!fft;
-#X text 49 482 or use vasp.ropt which does the same;
-#X msg 51 498 vasp bufqrmax1 bufqrmax2;
-#X obj 51 518 vasp.ropt;
-#X obj 373 521 tabplay~ bufqrmax1;
-#X floatatom 108 309 5 0 0;
-#X obj 53 327 vasp./;
-#X obj 53 347 vasp.update;
-#X obj 53 367 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X obj 53 254 vasp.rmax?;
-#X text 150 308 -> current maximum;
-#X text 136 346 use it to optimise radius;
-#X msg 53 234 vasp bufqrmax1 bufqrmax2;
-#X msg 53 282 vasp bufqrmax1 bufqrmax2;
-#X obj 50 618 VASP-HELP;
-#X connect 7 0 26 0;
-#X connect 12 0 5 0;
-#X connect 13 0 14 0;
-#X connect 15 0 16 0;
-#X connect 16 0 17 0;
-#X connect 18 0 15 0;
-#X connect 19 0 20 0;
-#X connect 21 0 22 0;
-#X connect 22 0 19 0;
-#X connect 24 0 25 0;
-#X connect 25 0 13 0;
-#X connect 26 0 6 0;
-#X connect 26 0 6 1;
-#X connect 27 0 28 1;
-#X connect 28 0 29 0;
-#X connect 29 0 30 0;
-#X connect 31 1 27 0;
-#X connect 34 0 31 0;
-#X connect 35 0 28 0;
diff --git a/externals/grill/vasp/pd-help/vasp_qrmin.pd b/externals/grill/vasp/pd-help/vasp_qrmin.pd
deleted file mode 100644
index 6b3a6b96..00000000
--- a/externals/grill/vasp/pd-help/vasp_qrmin.pd
+++ /dev/null
@@ -1,59 +0,0 @@
-#N canvas 57 40 879 562 10;
-#X obj 71 32 cnv 15 15 15 empty empty vasp.rmin? 0 10 1 14 -262144
--1 0;
-#X obj 70 140 filelist \$0;
-#N canvas 92 108 402 367 inside 0;
-#X obj 66 154 soundfiler;
-#X obj 84 238 s \$0-sample-length;
-#X obj 66 208 s \$0-draw_display;
-#X msg 214 206 resize \$1;
-#X obj 66 50 loadbang;
-#X obj 66 178 t b f f;
-#X obj 66 98 filelisthandler \$0;
-#X msg 66 130 read -resize \$1 bufqrmin1;
-#X obj 214 228 s bufqrmin1;
-#X obj 225 250 s bufqrmin2;
-#X msg 66 76 4;
-#X connect 0 0 5 0;
-#X connect 3 0 8 0;
-#X connect 3 0 9 0;
-#X connect 4 0 10 0;
-#X connect 5 0 2 0;
-#X connect 5 1 1 0;
-#X connect 5 2 3 0;
-#X connect 6 0 7 0;
-#X connect 7 0 0 0;
-#X connect 10 0 6 0;
-#X restore 678 426 pd inside;
-#X text 70 75 right outlet: calculated value;
-#X text 72 58 min-value of the radius values of a complex vasp;
-#X text 70 95 needs two vectors;
-#X obj 434 93 wavedisplay-simple bufqrmin1 \$0;
-#X obj 434 238 wavedisplay-simple bufqrmin2 \$0;
-#X obj 60 280 vasp.cfft;
-#X obj 60 302 vasp.update;
-#X obj 60 325 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X msg 60 258 vasp bufqrmin1 bufqrmin2;
-#N canvas 40 55 281 170 clear_buffers 0;
-#X obj 54 79 vasp.update;
-#X obj 54 56 vasp.= 0;
-#X obj 54 26 inlet;
-#X obj 54 108 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 3 0;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X restore 436 422 pd clear_buffers;
-#X msg 436 399 vasp bufqrmin1 bufqrmin2;
-#X floatatom 110 417 12 0 0;
-#X text 112 435 -> current absolute minimum;
-#X obj 55 383 vasp.rmin?;
-#X msg 55 360 vasp bufqrmin1 bufqrmin2;
-#X obj 41 508 VASP-HELP;
-#X connect 8 0 9 0;
-#X connect 9 0 10 0;
-#X connect 11 0 8 0;
-#X connect 13 0 12 0;
-#X connect 16 1 14 0;
-#X connect 17 0 16 0;
diff --git a/externals/grill/vasp/pd-help/vasp_qsize.pd b/externals/grill/vasp/pd-help/vasp_qsize.pd
deleted file mode 100644
index 2ea1b884..00000000
--- a/externals/grill/vasp/pd-help/vasp_qsize.pd
+++ /dev/null
@@ -1,31 +0,0 @@
-#N canvas 85 111 907 542 10;
-#X obj 58 31 cnv 15 15 15 empty empty vasp.size? 0 10 1 14 -262144
--1 0;
-#N canvas 0 0 408 284 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 2 5 \; \$1 xlabel 1.1 0 10 20 30 40 50
-\; \$1 yticks 0 0.25 2;
-#X msg 33 45 symbol bufqsize;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 714 408 pd init;
-#X text 119 374 abbreviation;
-#X obj 62 225 vasp.size 100;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufqsize 100 float 0;
-#X coords 0 1 99 -1 300 100 1;
-#X restore 453 153 graph;
-#X floatatom 135 200 5 0 0;
-#X obj 175 417 vasp.frames;
-#X text 62 415 related objects:;
-#X msg 62 152 vasp bufqsize;
-#X obj 62 266 vasp.size?;
-#X floatatom 62 302 5 0 0;
-#X obj 63 374 vasp.s?;
-#X obj 256 417 vasp.size;
-#X obj 62 463 VASP-HELP;
-#X text 57 69 get the size of a referenced buffer/array;
-#X connect 3 0 9 0;
-#X connect 5 0 3 1;
-#X connect 8 0 3 0;
-#X connect 9 0 10 0;
diff --git a/externals/grill/vasp/pd-help/vasp_qsum.pd b/externals/grill/vasp/pd-help/vasp_qsum.pd
deleted file mode 100644
index 691e07b2..00000000
--- a/externals/grill/vasp/pd-help/vasp_qsum.pd
+++ /dev/null
@@ -1,50 +0,0 @@
-#N canvas 80 113 823 442 10;
-#X obj 71 32 cnv 15 15 15 empty empty vasp.sum? 0 10 1 14 -262144 -1
-0;
-#N canvas 40 55 281 170 clear_buffer 0;
-#X obj 54 79 vasp.update;
-#X obj 54 56 vasp.= 0;
-#X obj 54 26 inlet;
-#X obj 54 108 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 3 0;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X restore 468 280 pd clear_buffer;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufqsum 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 339 115 graph;
-#N canvas 0 0 396 272 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 4410 10 \; \$1 xlabel 1.1 0 22050 44100
-66150 88200 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 94000 -1 -0.5 0 0.5
-1;
-#X msg 33 45 symbol bufqsum;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 615 284 pd init;
-#X obj 73 144 vasp.osc 44100;
-#X obj 73 165 vasp.* 0.5;
-#X obj 73 191 vasp.update;
-#X floatatom 99 309 7 0 0 0 - - -;
-#X obj 76 387 VASP-HELP;
-#X text 68 58 get sum of sample values of a vasp;
-#X text 70 75 right outlet: sum of sample values;
-#X msg 73 123 vasp bufqsum;
-#X msg 468 257 vasp bufqsum;
-#X msg 75 258 vasp bufqsum;
-#X obj 75 278 vasp.sum?;
-#X text 150 309 >>>> sum;
-#X floatatom 281 310 7 0 0 0 - - -;
-#X msg 281 261 vasp bufqsum;
-#X text 330 308 >>>> RMS value;
-#X obj 280 285 vasp.rms;
-#X connect 4 0 5 0;
-#X connect 5 0 6 0;
-#X connect 11 0 4 0;
-#X connect 12 0 1 0;
-#X connect 13 0 14 0;
-#X connect 14 1 7 0;
-#X connect 17 0 19 0;
-#X connect 19 0 16 0;
diff --git a/externals/grill/vasp/pd-help/vasp_qvector.pd b/externals/grill/vasp/pd-help/vasp_qvector.pd
deleted file mode 100644
index 67c681da..00000000
--- a/externals/grill/vasp/pd-help/vasp_qvector.pd
+++ /dev/null
@@ -1,13 +0,0 @@
-#N canvas 257 69 511 284 10;
-#X text 52 66 get the number of vectors of a vasp;
-#X obj 51 19 cnv 15 15 15 empty empty vasp.n? 0 10 1 14 -262144 -1
-0;
-#X obj 57 169 cnv 15 44 17 empty empty empty 20 12 0 14 -258699 -66577
-0;
-#X floatatom 57 218 0 0 0;
-#X obj 57 169 vasp.n?;
-#X msg 57 112 vasp bufqn1;
-#X msg 137 112 vasp bufqn1 bufqn2 bufqn3;
-#X connect 4 0 3 0;
-#X connect 5 0 4 0;
-#X connect 6 0 4 0;
diff --git a/externals/grill/vasp/pd-help/vasp_qvectors.pd b/externals/grill/vasp/pd-help/vasp_qvectors.pd
deleted file mode 100644
index d4725441..00000000
--- a/externals/grill/vasp/pd-help/vasp_qvectors.pd
+++ /dev/null
@@ -1,17 +0,0 @@
-#N canvas 261 89 556 365 10;
-#X text 52 66 get the number of vectors of a vasp;
-#X obj 51 19 cnv 15 15 15 empty empty vasp.n? 0 10 1 14 -262144 -1
-0;
-#X floatatom 57 218 0 0 0;
-#X obj 57 169 vasp.n?;
-#X msg 57 112 vasp bufqn1;
-#X msg 147 113 vasp bufqn1 bufqn2 bufqn3;
-#X obj 54 318 VASP-HELP;
-#X obj 438 86 table bufqn1;
-#X obj 438 107 table bufqn2;
-#X obj 438 128 table bufqn3;
-#X obj 151 277 vasp.n?;
-#X text 53 279 abbreviation:;
-#X connect 3 0 2 0;
-#X connect 4 0 3 0;
-#X connect 5 0 3 0;
diff --git a/externals/grill/vasp/pd-help/vasp_radd.pd b/externals/grill/vasp/pd-help/vasp_radd.pd
deleted file mode 100644
index f28aebc8..00000000
--- a/externals/grill/vasp/pd-help/vasp_radd.pd
+++ /dev/null
@@ -1,84 +0,0 @@
-#N canvas 63 27 894 612 10;
-#N canvas 415 205 410 337 inside 0;
-#X obj 66 154 soundfiler;
-#X obj 222 207 s \$0-sample-length;
-#X obj 66 208 s \$0-draw_display;
-#X msg 259 138 resize \$1;
-#X obj 259 91 loadbang;
-#X obj 67 53 loadbang;
-#X msg 259 112 88200;
-#X obj 67 101 filelisthandler \$0;
-#X msg 67 79 4;
-#X msg 67 133 read -resize \$1 bufradd1;
-#X obj 259 160 s bufradd1;
-#X obj 269 183 s bufradd2;
-#X obj 66 178 t b;
-#X connect 0 0 12 0;
-#X connect 3 0 10 0;
-#X connect 3 0 11 0;
-#X connect 4 0 6 0;
-#X connect 5 0 8 0;
-#X connect 6 0 3 0;
-#X connect 6 0 1 0;
-#X connect 7 0 9 0;
-#X connect 8 0 7 0;
-#X connect 9 0 0 0;
-#X connect 12 0 2 0;
-#X restore 772 512 pd inside;
-#X obj 75 32 cnv 15 15 15 empty empty vasp.r+ 0 10 1 14 -262144 -1
-0;
-#X obj 73 134 filelist \$0;
-#X obj 65 512 vasp.update;
-#X obj 65 535 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X obj 65 489 vasp.c!fft;
-#X obj 65 260 vasp.cfft;
-#X obj 65 281 vasp.update;
-#X obj 65 302 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X obj 343 514 dac~;
-#N canvas 0 0 413 295 clear_buffers 0;
-#X obj 49 73 vasp.= 0;
-#X obj 49 49 inlet;
-#X obj 49 97 vasp.u;
-#X obj 49 118 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 2 0;
-#X connect 1 0 0 0;
-#X connect 2 0 3 0;
-#X restore 477 514 pd clear_buffers;
-#X obj 343 471 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X text 365 468 play;
-#X text 477 469 clear;
-#X text 71 53 add avalue to a radius;
-#X text 71 65 argument/right inlet: value (offset);
-#X text 72 82 needs two vectors;
-#X obj 522 272 wavedisplay-simple bufradd2 \$0;
-#X obj 521 116 wavedisplay-simple bufradd1 \$0;
-#X msg 65 239 vasp bufradd1 bufradd2;
-#X msg 65 465 vasp bufradd1 bufradd2;
-#X obj 343 491 tabplay~ bufradd1;
-#X msg 477 491 vasp bufradd1 bufradd2;
-#X obj 65 405 vasp.update;
-#X obj 65 426 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X msg 65 325 vasp bufradd1 bufradd2;
-#X obj 65 379 vasp.r+ 0.05;
-#X floatatom 132 352 5 0 0;
-#X text 183 350 value;
-#X obj 59 579 VASP-HELP;
-#X connect 3 0 4 0;
-#X connect 5 0 3 0;
-#X connect 6 0 7 0;
-#X connect 7 0 8 0;
-#X connect 11 0 21 0;
-#X connect 19 0 6 0;
-#X connect 20 0 5 0;
-#X connect 21 0 9 0;
-#X connect 21 0 9 1;
-#X connect 22 0 10 0;
-#X connect 23 0 24 0;
-#X connect 25 0 26 0;
-#X connect 26 0 23 0;
-#X connect 27 0 26 1;
diff --git a/externals/grill/vasp/pd-help/vasp_radio.pd b/externals/grill/vasp/pd-help/vasp_radio.pd
deleted file mode 100644
index 0f26c220..00000000
--- a/externals/grill/vasp/pd-help/vasp_radio.pd
+++ /dev/null
@@ -1,28 +0,0 @@
-#N canvas 128 36 361 454 10;
-#X obj 71 32 cnv 15 15 15 empty empty vasp.radio 0 10 1 14 -262144
--1 0;
-#X obj 66 406 VASP-HELP;
-#X text 71 63 filters radio messages;
-#X floatatom 208 126 5 0 0;
-#X msg 208 146 vasp buf;
-#X msg 51 126 radio prior 1;
-#X msg 208 172 env 0 1 2;
-#X msg 208 195 5 5;
-#X obj 74 267 vasp.radio;
-#X msg 51 150 radio loglvl 3;
-#X obj 74 298 prepend set;
-#X obj 177 300 prepend set;
-#X text 73 350 radio;
-#X text 177 351 other;
-#X msg 74 323;
-#X msg 177 327;
-#X connect 3 0 8 0;
-#X connect 4 0 8 0;
-#X connect 5 0 8 0;
-#X connect 6 0 8 0;
-#X connect 7 0 8 0;
-#X connect 8 0 10 0;
-#X connect 8 1 11 0;
-#X connect 9 0 8 0;
-#X connect 10 0 14 0;
-#X connect 11 0 15 0;
diff --git a/externals/grill/vasp/pd-help/vasp_rect.pd b/externals/grill/vasp/pd-help/vasp_rect.pd
deleted file mode 100644
index 77f74d9f..00000000
--- a/externals/grill/vasp/pd-help/vasp_rect.pd
+++ /dev/null
@@ -1,87 +0,0 @@
-#N canvas 15 40 916 673 10;
-#N canvas 92 108 375 293 inside 0;
-#X obj 66 154 soundfiler;
-#X obj 184 208 s \$0-sample-length;
-#X obj 66 208 s \$0-draw_display;
-#X msg 221 138 resize \$1;
-#X obj 221 91 loadbang;
-#X obj 67 53 loadbang;
-#X msg 221 112 88200;
-#X obj 67 101 filelisthandler \$0;
-#X msg 67 79 4;
-#X obj 221 160 s bufrect1;
-#X obj 231 184 s bufrect2;
-#X msg 67 133 read \$1 bufrect1;
-#X obj 66 178 t b;
-#X connect 0 0 12 0;
-#X connect 3 0 9 0;
-#X connect 3 0 10 0;
-#X connect 4 0 6 0;
-#X connect 5 0 8 0;
-#X connect 6 0 3 0;
-#X connect 6 0 1 0;
-#X connect 7 0 11 0;
-#X connect 8 0 7 0;
-#X connect 11 0 0 0;
-#X connect 12 0 2 0;
-#X restore 777 531 pd inside;
-#X obj 75 32 cnv 15 15 15 empty empty vasp.rect 0 10 1 14 -262144 -1
-0;
-#X obj 72 91 filelist \$0;
-#X obj 59 327 vasp.update;
-#X obj 59 347 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X obj 59 220 vasp.cfft;
-#X obj 59 240 vasp.update;
-#X obj 59 260 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X text 205 573 <-- click to open;
-#N canvas 0 0 413 295 clear_buffers 0;
-#X obj 49 73 vasp.= 0;
-#X obj 49 49 inlet;
-#X obj 49 97 vasp.u;
-#X obj 49 118 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 2 0;
-#X connect 1 0 0 0;
-#X connect 2 0 3 0;
-#X restore 567 527 pd clear_buffers;
-#X text 567 482 clear;
-#X obj 59 306 vasp.polar;
-#X text 229 283 real/imaginary -> amplitude/phase;
-#X obj 59 573 phase-random_example;
-#X text 71 53 polar to cartesian coordinate conversion;
-#X obj 512 116 wavedisplay-simple bufrect1 \$0;
-#X obj 514 261 wavedisplay-simple bufrect2 \$0;
-#X text 738 94 real/amplitude;
-#X text 729 240 imaginary/phase;
-#X msg 59 200 vasp bufrect1 bufrect2;
-#X text 230 201 transform with cfft to real/imaginary;
-#X obj 59 418 vasp.update;
-#X obj 59 438 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X obj 59 496 vasp.cfft;
-#X obj 59 516 vasp.update;
-#X obj 59 536 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X msg 59 476 vasp bufrect1 bufrect2;
-#X obj 59 397 vasp.rect;
-#X text 223 374 amplitude/phase -> real/imaginary;
-#X text 231 477 transform with inverse cfft to time domain;
-#X msg 567 504 vasp bufrect1 bufrect2;
-#X msg 59 285 vasp bufrect1 bufrect2;
-#X msg 59 376 vasp bufrect1 bufrect2;
-#X obj 58 622 VASP-HELP;
-#X connect 3 0 4 0;
-#X connect 5 0 6 0;
-#X connect 6 0 7 0;
-#X connect 11 0 3 0;
-#X connect 19 0 5 0;
-#X connect 21 0 22 0;
-#X connect 23 0 24 0;
-#X connect 24 0 25 0;
-#X connect 26 0 23 0;
-#X connect 27 0 21 0;
-#X connect 30 0 9 0;
-#X connect 31 0 11 0;
-#X connect 32 0 27 0;
diff --git a/externals/grill/vasp/pd-help/vasp_rfft.pd b/externals/grill/vasp/pd-help/vasp_rfft.pd
deleted file mode 100644
index d7bbb31f..00000000
--- a/externals/grill/vasp/pd-help/vasp_rfft.pd
+++ /dev/null
@@ -1,74 +0,0 @@
-#N canvas 24 75 893 495 10;
-#X obj 75 32 cnv 15 15 15 empty empty vasp.rfft 0 10 1 14 -262144 -1
-0;
-#N canvas 92 108 371 312 inside 0;
-#X obj 66 154 soundfiler;
-#X obj 180 207 s \$0-sample-length;
-#X obj 66 208 s \$0-draw_display;
-#X msg 234 164 resize \$1;
-#X obj 234 117 loadbang;
-#X obj 67 53 loadbang;
-#X msg 234 138 88200;
-#X obj 67 101 filelisthandler \$0;
-#X msg 67 79 3;
-#X obj 234 186 s bufrfft;
-#X msg 67 133 read \$1 bufrfft;
-#X obj 66 178 t b;
-#X connect 0 0 11 0;
-#X connect 3 0 9 0;
-#X connect 4 0 6 0;
-#X connect 5 0 8 0;
-#X connect 6 0 3 0;
-#X connect 6 0 1 0;
-#X connect 7 0 10 0;
-#X connect 8 0 7 0;
-#X connect 10 0 0 0;
-#X connect 11 0 2 0;
-#X restore 761 385 pd inside;
-#X obj 329 388 dac~;
-#X obj 329 345 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X text 351 342 play;
-#X text 463 343 clear;
-#X obj 69 121 filelist \$0;
-#X msg 463 365 vasp bufrfft;
-#N canvas 0 0 413 295 clear_buffer 0;
-#X obj 49 73 vasp.= 0;
-#X obj 49 49 inlet;
-#X obj 49 97 vasp.u;
-#X obj 49 118 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 2 0;
-#X connect 1 0 0 0;
-#X connect 2 0 3 0;
-#X restore 463 388 pd clear_buffer;
-#X obj 329 365 tabplay~ bufrfft;
-#X obj 519 137 wavedisplay-simple bufrfft \$0;
-#X text 157 345 inverse real fft;
-#X obj 68 371 vasp.update;
-#X obj 68 394 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X msg 68 320 vasp bufrfft;
-#X obj 68 345 vasp.r!fft;
-#X text 71 60 real fft;
-#X text 72 73 in opposite to cfft there is only one real input buffer
-;
-#X text 73 86 imaginary part of the fft is assumed to be zero;
-#X text 157 239 real fft;
-#X obj 68 265 vasp.update;
-#X obj 68 288 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X msg 68 214 vasp bufrfft;
-#X obj 68 239 vasp.rfft;
-#X obj 61 456 VASP-HELP;
-#X text 103 456 - vasp overview;
-#X connect 3 0 9 0;
-#X connect 7 0 8 0;
-#X connect 9 0 2 0;
-#X connect 9 0 2 1;
-#X connect 12 0 13 0;
-#X connect 14 0 15 0;
-#X connect 15 0 12 0;
-#X connect 20 0 21 0;
-#X connect 22 0 23 0;
-#X connect 23 0 20 0;
diff --git a/externals/grill/vasp/pd-help/vasp_rframes.pd b/externals/grill/vasp/pd-help/vasp_rframes.pd
deleted file mode 100644
index f20ada29..00000000
--- a/externals/grill/vasp/pd-help/vasp_rframes.pd
+++ /dev/null
@@ -1,63 +0,0 @@
-#N canvas 80 119 908 535 10;
-#X obj 62 323 vasp.osc 22050;
-#X obj 58 31 cnv 15 15 15 empty empty vasp.frames/ 0 10 1 14 -262144
--1 0;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufrfram1 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 530 149 graph;
-#N canvas 0 0 404 280 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 4410 10 \; \$1 xlabel 1.1 0 22050 44100
-66150 88200 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 94000 -1 -0.5 0 0.5
-1;
-#X msg 33 45 symbol bufrfram1;
-#X msg 140 45 symbol bufrfram2;
-#X connect 0 0 2 0;
-#X connect 0 0 3 0;
-#X connect 2 0 1 0;
-#X connect 3 0 1 0;
-#X restore 813 459 pd init;
-#X obj 62 355 vasp.update;
-#X text 117 412 abbreviation;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufrfram2 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 530 268 graph;
-#X text 54 103 !!!all vectors of a vasp have the same framesize/length!!!
-;
-#X obj 77 274 prepend set;
-#X obj 233 323 vasp.osc 22050;
-#X obj 233 355 vasp.update;
-#X text 58 83 argument/right inlet: value;
-#X obj 62 187 vasp.-> bufrfram2;
-#X msg 77 297 vasp 66150 bufrfram1 0 0;
-#X obj 255 271 prepend set;
-#X msg 255 294 vasp 33075 bufrfram2 0 0;
-#N canvas 40 55 247 122 clear_buffer 0;
-#X obj 54 79 vasp.update;
-#X obj 54 56 vasp.= 0;
-#X obj 54 26 inlet;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X restore 528 439 pd clear_buffer;
-#X msg 528 418 vasp bufrfram1 bufrfram2;
-#X obj 161 453 vasp.frames;
-#X text 53 454 related objects:;
-#X obj 243 453 vasp.frames+;
-#X text 59 66 divide the number of frames of a vasp by a value;
-#X msg 62 153 vasp 66150 bufrfram1;
-#X obj 233 239 vasp.frames/ 2;
-#X obj 61 411 vasp.f/;
-#X obj 59 495 VASP-HELP;
-#X connect 0 0 4 0;
-#X connect 8 0 13 0;
-#X connect 9 0 10 0;
-#X connect 12 0 8 0;
-#X connect 12 0 0 0;
-#X connect 12 1 23 0;
-#X connect 14 0 15 0;
-#X connect 17 0 16 0;
-#X connect 22 0 12 0;
-#X connect 23 0 14 0;
-#X connect 23 0 9 0;
diff --git a/externals/grill/vasp/pd-help/vasp_rgate.pd b/externals/grill/vasp/pd-help/vasp_rgate.pd
deleted file mode 100644
index cee131b5..00000000
--- a/externals/grill/vasp/pd-help/vasp_rgate.pd
+++ /dev/null
@@ -1,86 +0,0 @@
-#N canvas 36 36 808 624 10;
-#X obj 72 26 cnv 15 15 15 empty empty vasp.rgate 0 10 1 14 -262144
--1 0;
-#X obj 76 157 filelist \$0;
-#N canvas 40 55 281 170 clear_buffers 0;
-#X obj 54 79 vasp.update;
-#X obj 54 56 vasp.= 0;
-#X obj 54 26 inlet;
-#X obj 54 108 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 3 0;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X restore 481 518 pd clear_buffers;
-#X obj 63 291 vasp.update;
-#X obj 63 311 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X obj 401 162 wavedisplay-simple bufrgate1 \$0;
-#X obj 402 319 wavedisplay-simple bufrgate2 \$0;
-#X msg 63 251 vasp bufrgate1 bufrgate2;
-#X obj 63 271 vasp.cfft;
-#X obj 63 504 vasp.update;
-#X obj 63 524 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X msg 63 464 vasp bufrgate1 bufrgate2;
-#X obj 63 484 vasp.c!fft;
-#X obj 296 518 dac~;
-#X obj 296 480 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X text 317 483 play;
-#X obj 296 498 tabplay~ bufrgate1;
-#X msg 481 498 vasp bufrgate1 bufrgate2;
-#X text 71 49 gate the radius of a complex buffer content with a value
-;
-#X text 72 96 needs two buffers (real/imaginary);
-#X text 71 66 argument/right inlet: value (usually from 0-1) to gate
-the radius;
-#N canvas 384 183 438 403 inside 0;
-#X obj 66 169 soundfiler;
-#X obj 184 290 s \$0-sample-length;
-#X obj 66 223 s \$0-draw_display;
-#X msg 214 221 resize \$1;
-#X obj 66 47 loadbang;
-#X obj 66 113 filelisthandler \$0;
-#X obj 214 243 s bufrgate1;
-#X obj 225 264 s bufrgate2;
-#X msg 66 91 2;
-#X msg 95 91 88200;
-#X obj 66 68 t b b;
-#X msg 66 145 read \$1 bufrgate1;
-#X obj 66 193 t b;
-#X connect 0 0 12 0;
-#X connect 3 0 6 0;
-#X connect 3 0 7 0;
-#X connect 3 0 1 0;
-#X connect 4 0 10 0;
-#X connect 5 0 11 0;
-#X connect 8 0 5 0;
-#X connect 9 0 3 0;
-#X connect 10 0 8 0;
-#X connect 10 1 9 0;
-#X connect 11 0 0 0;
-#X connect 12 0 2 0;
-#X restore 670 518 pd inside;
-#X obj 63 413 vasp.update;
-#X obj 63 433 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X msg 63 329 vasp bufrgate1 bufrgate2;
-#X obj 63 393 vasp.rgate 0.2;
-#X floatatom 142 367 5 0 0;
-#X text 192 366 value;
-#X obj 56 582 VASP-HELP;
-#X connect 3 0 4 0;
-#X connect 7 0 8 0;
-#X connect 8 0 3 0;
-#X connect 9 0 10 0;
-#X connect 11 0 12 0;
-#X connect 12 0 9 0;
-#X connect 14 0 16 0;
-#X connect 16 0 13 0;
-#X connect 16 0 13 1;
-#X connect 17 0 2 0;
-#X connect 22 0 23 0;
-#X connect 24 0 25 0;
-#X connect 25 0 22 0;
-#X connect 26 0 25 1;
diff --git a/externals/grill/vasp/pd-help/vasp_rifft.pd b/externals/grill/vasp/pd-help/vasp_rifft.pd
deleted file mode 100644
index 037981a2..00000000
--- a/externals/grill/vasp/pd-help/vasp_rifft.pd
+++ /dev/null
@@ -1,75 +0,0 @@
-#N canvas 24 75 823 495 10;
-#X obj 75 32 cnv 15 15 15 empty empty vasp.r!fft 0 10 1 14 -262144
--1 0;
-#N canvas 92 108 373 314 inside 0;
-#X obj 66 154 soundfiler;
-#X obj 187 209 s \$0-sample-length;
-#X obj 66 208 s \$0-draw_display;
-#X msg 235 166 resize \$1;
-#X obj 235 119 loadbang;
-#X obj 67 53 loadbang;
-#X msg 235 140 88200;
-#X obj 67 101 filelisthandler \$0;
-#X msg 67 79 4;
-#X msg 67 133 read \$1 bufrifft;
-#X obj 235 188 s bufrifft;
-#X obj 66 178 t b;
-#X connect 0 0 11 0;
-#X connect 3 0 10 0;
-#X connect 4 0 6 0;
-#X connect 5 0 8 0;
-#X connect 6 0 3 0;
-#X connect 6 0 1 0;
-#X connect 7 0 9 0;
-#X connect 8 0 7 0;
-#X connect 9 0 0 0;
-#X connect 11 0 2 0;
-#X restore 627 390 pd inside;
-#X obj 329 388 dac~;
-#X obj 329 345 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X text 351 342 play;
-#X text 463 343 clear;
-#X obj 69 121 filelist \$0;
-#N canvas 0 0 413 295 clear_buffer 0;
-#X obj 49 73 vasp.= 0;
-#X obj 49 49 inlet;
-#X obj 49 97 vasp.u;
-#X obj 49 118 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 2 0;
-#X connect 1 0 0 0;
-#X connect 2 0 3 0;
-#X restore 463 388 pd clear_buffer;
-#X text 157 239 real fft;
-#X obj 68 265 vasp.update;
-#X obj 68 288 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X obj 68 238 vasp.rfft;
-#X text 72 73 in opposite to cfft there is only one real input buffer
-;
-#X text 73 86 imaginary part of the fft is assumed to be zero;
-#X text 71 60 inverse real fft;
-#X msg 463 365 vasp bufrifft;
-#X obj 329 365 tabplay~ bufrifft;
-#X msg 68 214 vasp bufrifft;
-#X obj 372 144 wavedisplay-simple bufrifft \$0;
-#X text 645 127 source;
-#X text 157 345 inverse real fft;
-#X obj 68 371 vasp.update;
-#X obj 68 394 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X obj 68 345 vasp.r!fft;
-#X msg 68 320 vasp bufrifft;
-#X obj 61 461 VASP-HELP;
-#X text 103 461 - vasp overview;
-#X connect 3 0 16 0;
-#X connect 9 0 10 0;
-#X connect 11 0 9 0;
-#X connect 15 0 7 0;
-#X connect 16 0 2 0;
-#X connect 16 0 2 1;
-#X connect 17 0 11 0;
-#X connect 21 0 22 0;
-#X connect 23 0 21 0;
-#X connect 24 0 23 0;
diff --git a/externals/grill/vasp/pd-help/vasp_rmax.pd b/externals/grill/vasp/pd-help/vasp_rmax.pd
deleted file mode 100644
index 6a05cd58..00000000
--- a/externals/grill/vasp/pd-help/vasp_rmax.pd
+++ /dev/null
@@ -1,81 +0,0 @@
-#N canvas 36 36 881 625 10;
-#X obj 71 32 cnv 15 15 15 empty empty vasp.rmax 0 10 1 14 -262144 -1
-0;
-#X obj 71 131 filelist \$0;
-#N canvas 92 108 410 375 inside 0;
-#X obj 66 154 soundfiler;
-#X obj 177 275 s \$0-sample-length;
-#X obj 66 208 s \$0-draw_display;
-#X msg 214 206 resize \$1;
-#X obj 66 50 loadbang;
-#X obj 66 98 filelisthandler \$0;
-#X msg 66 76 2;
-#X msg 214 146 88200;
-#X msg 66 130 read \$1 bufrmax1;
-#X obj 214 228 s bufrmax1;
-#X obj 225 250 s bufrmax2;
-#X obj 66 178 t b;
-#X connect 0 0 11 0;
-#X connect 3 0 9 0;
-#X connect 3 0 10 0;
-#X connect 4 0 7 0;
-#X connect 4 0 6 0;
-#X connect 5 0 8 0;
-#X connect 6 0 5 0;
-#X connect 7 0 3 0;
-#X connect 7 0 1 0;
-#X connect 8 0 0 0;
-#X connect 11 0 2 0;
-#X restore 700 501 pd inside;
-#X text 70 92 needs two vectors;
-#N canvas 40 55 281 170 clear_buffers 0;
-#X obj 54 79 vasp.update;
-#X obj 54 56 vasp.= 0;
-#X obj 54 26 inlet;
-#X obj 54 108 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 3 0;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X restore 501 500 pd clear_buffers;
-#X obj 354 499 dac~;
-#X obj 354 456 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X text 376 453 play;
-#X obj 60 252 vasp.cfft;
-#X obj 60 272 vasp.update;
-#X obj 60 484 vasp.update;
-#X obj 60 504 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X obj 60 464 vasp.c!fft;
-#X text 72 58 set radius to a maximum value;
-#X text 70 75 argument/right inlet: value;
-#X msg 60 232 vasp bufrmax1 bufrmax2;
-#X obj 448 136 wavedisplay-simple bufrmax1 \$0;
-#X obj 449 281 wavedisplay-simple bufrmax2 \$0;
-#X msg 60 444 vasp bufrmax1 bufrmax2;
-#X obj 354 476 tabplay~ bufrmax1;
-#X msg 501 477 vasp bufrmax1 bufrmax2;
-#X obj 60 292 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X msg 60 324 vasp bufrmax1 bufrmax2;
-#X obj 60 391 vasp.update;
-#X obj 60 371 vasp.rmax 0.2;
-#X floatatom 133 348 5 0 0;
-#X obj 60 411 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X obj 50 564 VASP-HELP;
-#X connect 6 0 19 0;
-#X connect 8 0 9 0;
-#X connect 9 0 21 0;
-#X connect 10 0 11 0;
-#X connect 12 0 10 0;
-#X connect 15 0 8 0;
-#X connect 18 0 12 0;
-#X connect 19 0 5 0;
-#X connect 19 0 5 1;
-#X connect 20 0 4 0;
-#X connect 22 0 24 0;
-#X connect 23 0 26 0;
-#X connect 24 0 23 0;
-#X connect 25 0 24 1;
diff --git a/externals/grill/vasp/pd-help/vasp_rmin.pd b/externals/grill/vasp/pd-help/vasp_rmin.pd
deleted file mode 100644
index 6eb7fc75..00000000
--- a/externals/grill/vasp/pd-help/vasp_rmin.pd
+++ /dev/null
@@ -1,84 +0,0 @@
-#N canvas 36 36 802 593 10;
-#X obj 71 32 cnv 15 15 15 empty empty vasp.rmin 0 10 1 14 -262144 -1
-0;
-#X obj 71 131 filelist \$0;
-#N canvas 92 108 416 329 inside 0;
-#X obj 66 169 soundfiler;
-#X obj 179 223 s \$0-sample-length;
-#X obj 66 223 s \$0-draw_display;
-#X msg 214 153 resize \$1;
-#X obj 66 38 loadbang;
-#X obj 66 113 filelisthandler \$0;
-#X msg 66 91 2;
-#X msg 214 95 88200;
-#X obj 214 175 s bufrmin1;
-#X obj 225 196 s bufrmin2;
-#X msg 66 145 read \$1 bufrmin1;
-#X obj 66 63 t b b;
-#X obj 66 193 t b;
-#X connect 0 0 12 0;
-#X connect 3 0 8 0;
-#X connect 3 0 9 0;
-#X connect 4 0 11 0;
-#X connect 5 0 10 0;
-#X connect 6 0 5 0;
-#X connect 7 0 3 0;
-#X connect 7 0 1 0;
-#X connect 10 0 0 0;
-#X connect 11 0 6 0;
-#X connect 11 1 7 0;
-#X connect 12 0 2 0;
-#X restore 640 502 pd inside;
-#X text 71 83 needs two vectors;
-#N canvas 40 55 281 170 clear_buffers 0;
-#X obj 54 79 vasp.update;
-#X obj 54 56 vasp.= 0;
-#X obj 54 26 inlet;
-#X obj 54 108 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 3 0;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X restore 480 500 pd clear_buffers;
-#X obj 334 499 dac~;
-#X obj 334 461 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X text 355 459 play;
-#X obj 60 252 vasp.cfft;
-#X obj 60 272 vasp.update;
-#X obj 60 484 vasp.update;
-#X obj 60 504 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X obj 60 464 vasp.c!fft;
-#X text 71 66 argument/right inlet: value;
-#X obj 60 292 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X text 71 49 set radius to a minimum value;
-#X msg 60 232 vasp bufrmin1 bufrmin2;
-#X msg 60 444 vasp bufrmin1 bufrmin2;
-#X obj 374 257 wavedisplay-simple bufrmin2 \$0;
-#X obj 334 479 tabplay~ bufrmin1;
-#X msg 480 480 vasp bufrmin1 bufrmin2;
-#X obj 374 119 wavedisplay-simple bufrmin1 \$0;
-#X obj 60 391 vasp.update;
-#X floatatom 139 352 5 0 0;
-#X obj 60 411 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X msg 60 324 vasp bufrmin1 bufrmin2;
-#X obj 60 371 vasp.rmin 0.05;
-#X obj 55 559 VASP-HELP;
-#X text 97 559 - vasp overview;
-#X connect 6 0 19 0;
-#X connect 8 0 9 0;
-#X connect 9 0 14 0;
-#X connect 10 0 11 0;
-#X connect 12 0 10 0;
-#X connect 16 0 8 0;
-#X connect 17 0 12 0;
-#X connect 19 0 5 0;
-#X connect 19 0 5 1;
-#X connect 20 0 4 0;
-#X connect 22 0 24 0;
-#X connect 23 0 26 1;
-#X connect 25 0 26 0;
-#X connect 26 0 22 0;
diff --git a/externals/grill/vasp/pd-help/vasp_ropt.pd b/externals/grill/vasp/pd-help/vasp_ropt.pd
deleted file mode 100644
index c1975b8e..00000000
--- a/externals/grill/vasp/pd-help/vasp_ropt.pd
+++ /dev/null
@@ -1,86 +0,0 @@
-#N canvas 36 36 806 598 10;
-#X obj 72 26 cnv 15 15 15 empty empty vasp.ropt 0 10 1 14 -262144 -1
-0;
-#X obj 76 131 filelist \$0;
-#N canvas 40 55 281 170 clear_buffers 0;
-#X obj 54 79 vasp.update;
-#X obj 54 56 vasp.= 0;
-#X obj 54 26 inlet;
-#X obj 54 108 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 3 0;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X restore 507 536 pd clear_buffers;
-#X obj 63 291 vasp.update;
-#X obj 63 311 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X obj 442 164 wavedisplay-simple bufropt1 \$0;
-#X obj 443 321 wavedisplay-simple bufropt2 \$0;
-#X msg 63 251 vasp bufropt1 bufropt2;
-#X obj 63 271 vasp.cfft;
-#X obj 63 504 vasp.update;
-#X obj 63 524 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X msg 63 464 vasp bufropt1 bufropt2;
-#X obj 63 484 vasp.c!fft;
-#X obj 344 538 dac~;
-#X obj 344 500 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X text 365 503 play;
-#X obj 344 518 tabplay~ bufropt1;
-#X msg 507 516 vasp bufropt1 bufropt2;
-#N canvas 92 108 436 386 inside 0;
-#X obj 66 169 soundfiler;
-#X obj 84 253 s \$0-sample-length;
-#X obj 66 223 s \$0-draw_display;
-#X msg 214 221 resize \$1;
-#X obj 66 47 loadbang;
-#X obj 66 193 t b f f;
-#X obj 66 113 filelisthandler \$0;
-#X obj 214 243 s bufropt1;
-#X obj 225 264 s bufropt2;
-#X msg 95 91 88200;
-#X obj 66 68 t b b;
-#X msg 66 145 read \$1 bufropt1;
-#X msg 66 91 3;
-#X connect 0 0 5 0;
-#X connect 3 0 7 0;
-#X connect 3 0 8 0;
-#X connect 4 0 10 0;
-#X connect 5 0 2 0;
-#X connect 5 1 1 0;
-#X connect 5 2 3 0;
-#X connect 6 0 11 0;
-#X connect 9 0 5 0;
-#X connect 10 0 12 0;
-#X connect 10 1 9 0;
-#X connect 11 0 0 0;
-#X connect 12 0 6 0;
-#X restore 696 536 pd inside;
-#X text 71 49 optimise the radius of a complex buffer content;
-#X text 71 66 right outlet: the previous maximum;
-#X text 72 84 needs two vectors;
-#X text 227 345 optimise;
-#X text 224 251 transform to frequency domain;
-#X text 224 462 transform to time domain;
-#X obj 63 393 vasp.update;
-#X obj 63 413 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X msg 63 346 vasp bufropt1 bufropt2;
-#X obj 63 373 vasp.ropt 0.2;
-#X obj 51 569 VASP-HELP;
-#X text 93 569 - vasp overview;
-#X connect 3 0 4 0;
-#X connect 7 0 8 0;
-#X connect 8 0 3 0;
-#X connect 9 0 10 0;
-#X connect 11 0 12 0;
-#X connect 12 0 9 0;
-#X connect 14 0 16 0;
-#X connect 16 0 13 0;
-#X connect 16 0 13 1;
-#X connect 17 0 2 0;
-#X connect 25 0 26 0;
-#X connect 27 0 28 0;
-#X connect 28 0 25 0;
diff --git a/externals/grill/vasp/pd-help/vasp_rot.pd b/externals/grill/vasp/pd-help/vasp_rot.pd
deleted file mode 100644
index b7aaec0f..00000000
--- a/externals/grill/vasp/pd-help/vasp_rot.pd
+++ /dev/null
@@ -1,48 +0,0 @@
-#N canvas 24 75 850 525 10;
-#X obj 75 32 cnv 15 15 15 empty empty vasp.rot 0 10 1 14 -262144 -1
-0;
-#X text 463 343 clear;
-#N canvas 0 0 413 295 clear_buffer 0;
-#X obj 49 73 vasp.= 0;
-#X obj 49 49 inlet;
-#X obj 49 97 vasp.u;
-#X obj 49 118 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 2 0;
-#X connect 1 0 0 0;
-#X connect 2 0 3 0;
-#X restore 463 388 pd clear_buffer;
-#X text 72 73 optional argument/right inlet: value;
-#X text 71 60 rotate buffer content;
-#X msg 463 365 vasp bufrot;
-#X obj 68 333 vasp.update;
-#X floatatom 123 280 0 0 0;
-#X msg 68 246 vasp bufrot;
-#X obj 59 467 VASP-HELP;
-#X obj 72 192 vasp.u;
-#X obj 72 170 vasp.= env 0 0 1 20 -1 100;
-#X obj 180 427 vasp.shift;
-#X obj 260 427 vasp.xrot;
-#X text 55 426 related objects:;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufrot 100 float 0;
-#X coords 0 1 99 -1 300 100 1;
-#X restore 443 130 graph;
-#N canvas 0 0 398 274 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 1 10 \; \$1 xlabel 1.1 0 20 40 60 80 100
-\; \$1 yticks 0 0.25 2 \; \$1 ylabel 105 -1 -0.5 0 0.5 1;
-#X msg 33 45 symbol bufrot;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 698 395 pd init;
-#X msg 72 145 vasp bufrot;
-#X obj 68 305 vasp.rot 7;
-#X text 193 139 1 create envelope;
-#X text 193 245 2 rotate buffer content;
-#X connect 5 0 2 0;
-#X connect 7 0 18 1;
-#X connect 8 0 18 0;
-#X connect 11 0 10 0;
-#X connect 17 0 11 0;
-#X connect 18 0 6 0;
diff --git a/externals/grill/vasp/pd-help/vasp_rpeaks.pd b/externals/grill/vasp/pd-help/vasp_rpeaks.pd
deleted file mode 100644
index 5891e6d1..00000000
--- a/externals/grill/vasp/pd-help/vasp_rpeaks.pd
+++ /dev/null
@@ -1,94 +0,0 @@
-#N canvas 36 36 814 590 10;
-#X obj 72 26 cnv 15 15 15 empty empty vasp.rpeaks 0 10 1 14 -262144
--1 0;
-#X obj 76 131 filelist \$0;
-#N canvas 40 55 281 170 clear_buffers 0;
-#X obj 54 79 vasp.update;
-#X obj 54 56 vasp.= 0;
-#X obj 54 26 inlet;
-#X obj 54 108 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 3 0;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X restore 500 505 pd clear_buffers;
-#X obj 65 264 vasp.update;
-#X obj 65 284 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X obj 411 132 wavedisplay-simple bufrpeaks1 \$0;
-#X obj 412 289 wavedisplay-simple bufrpeaks2 \$0;
-#X msg 65 224 vasp bufrpeaks1 bufrpeaks2;
-#X obj 65 244 vasp.cfft;
-#X obj 65 510 vasp.update;
-#X obj 65 530 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X msg 65 426 vasp bufrpeaks1 bufrpeaks2;
-#X obj 65 446 vasp.c!fft;
-#X obj 337 507 dac~;
-#X obj 337 469 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X text 358 472 play;
-#X obj 337 487 tabplay~ bufrpeaks1;
-#X msg 500 485 vasp bufrpeaks1 bufrpeaks2;
-#N canvas 92 108 442 392 inside 0;
-#X obj 66 169 soundfiler;
-#X obj 135 260 s \$0-sample-length;
-#X obj 66 223 s \$0-draw_display;
-#X msg 247 217 resize \$1;
-#X obj 66 47 loadbang;
-#X obj 66 113 filelisthandler \$0;
-#X obj 247 239 s bufrpeaks1;
-#X obj 258 260 s bufrpeaks2;
-#X msg 247 183 88200;
-#X obj 66 68 t b b;
-#X msg 66 145 read \$1 bufrpeaks1;
-#X obj 66 193 t b;
-#X msg 66 91 2;
-#X connect 0 0 11 0;
-#X connect 3 0 6 0;
-#X connect 3 0 7 0;
-#X connect 4 0 9 0;
-#X connect 5 0 10 0;
-#X connect 8 0 1 0;
-#X connect 8 0 3 0;
-#X connect 9 0 12 0;
-#X connect 9 1 8 0;
-#X connect 10 0 0 0;
-#X connect 11 0 2 0;
-#X connect 12 0 5 0;
-#X restore 689 505 pd inside;
-#X text 71 65 argument/right inlet: density (0-1);
-#X text 72 97 needs two vectors (real and imaginary);
-#X obj 65 467 vasp.opt;
-#X obj 65 489 vasp.* 0.5;
-#X text 71 49 find radius peaks of a complex vasp;
-#X text 71 81 right outlet: current peaks density;
-#X obj 65 374 vasp.update;
-#X obj 65 394 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X msg 65 308 vasp bufrpeaks1 bufrpeaks2;
-#X floatatom 156 331 5 0 0;
-#X floatatom 156 398 12 0 0;
-#X obj 65 354 vasp.rpeaks 0.05;
-#X text 206 329 density;
-#X obj 156 376 * 88200;
-#X text 242 396 current peaks;
-#X obj 46 559 VASP-HELP;
-#X connect 3 0 4 0;
-#X connect 7 0 8 0;
-#X connect 8 0 3 0;
-#X connect 9 0 10 0;
-#X connect 11 0 12 0;
-#X connect 12 0 21 0;
-#X connect 14 0 16 0;
-#X connect 16 0 13 0;
-#X connect 16 0 13 1;
-#X connect 17 0 2 0;
-#X connect 21 0 22 0;
-#X connect 22 0 9 0;
-#X connect 25 0 26 0;
-#X connect 27 0 30 0;
-#X connect 28 0 30 1;
-#X connect 30 0 25 0;
-#X connect 30 1 32 0;
-#X connect 32 0 29 0;
diff --git a/externals/grill/vasp/pd-help/vasp_rpow.pd b/externals/grill/vasp/pd-help/vasp_rpow.pd
deleted file mode 100644
index cbfb4bc6..00000000
--- a/externals/grill/vasp/pd-help/vasp_rpow.pd
+++ /dev/null
@@ -1,83 +0,0 @@
-#N canvas 28 51 932 647 10;
-#N canvas 92 108 417 419 inside 0;
-#X obj 66 154 soundfiler;
-#X obj 84 238 s \$0-sample-length;
-#X obj 66 208 s \$0-draw_display;
-#X msg 214 206 resize \$1;
-#X obj 67 53 loadbang;
-#X obj 66 178 t b f f;
-#X obj 67 101 filelisthandler \$0;
-#X msg 67 79 1;
-#X msg 67 133 read -resize \$1 bufrpow1;
-#X obj 214 228 s bufrpow1;
-#X obj 224 252 s bufrpow2;
-#X connect 0 0 5 0;
-#X connect 3 0 9 0;
-#X connect 3 0 10 0;
-#X connect 4 0 7 0;
-#X connect 5 0 2 0;
-#X connect 5 1 1 0;
-#X connect 5 2 3 0;
-#X connect 6 0 8 0;
-#X connect 7 0 6 0;
-#X connect 8 0 0 0;
-#X restore 685 477 pd inside;
-#X obj 75 32 cnv 15 15 15 empty empty vasp.rpow 0 10 1 14 -262144 -1
-0;
-#X obj 77 139 filelist \$0;
-#X obj 59 508 vasp.update;
-#X obj 59 528 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X obj 59 487 vasp.c!fft;
-#X obj 59 264 vasp.cfft;
-#X obj 59 284 vasp.update;
-#X obj 59 304 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X obj 352 474 dac~;
-#N canvas 0 0 413 295 clear_buffers 0;
-#X obj 49 73 vasp.= 0;
-#X obj 49 49 inlet;
-#X obj 49 97 vasp.u;
-#X obj 49 118 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 2 0;
-#X connect 1 0 0 0;
-#X connect 2 0 3 0;
-#X restore 486 474 pd clear_buffers;
-#X obj 352 431 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X text 374 428 play;
-#X text 486 429 clear;
-#X text 73 60 radius ^ x;
-#X text 73 75 power function for the radius values of a complex vasp
-;
-#X text 73 92 argument/right inlet: exponent;
-#X text 73 107 needs two vectors;
-#X msg 59 244 vasp bufrpow1 bufrpow2;
-#X msg 59 467 vasp bufrpow1 bufrpow2;
-#X obj 364 130 wavedisplay-simple bufrpow1 \$0;
-#X obj 365 276 wavedisplay-simple bufrpow2 \$0;
-#X obj 352 451 tabplay~ bufrpow1;
-#X msg 486 451 vasp bufrpow1 bufrpow2;
-#X obj 59 413 vasp.update;
-#X obj 59 433 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X msg 59 339 vasp bufrpow1 bufrpow2;
-#X obj 59 393 vasp.rpow 2;
-#X floatatom 120 366 5 0 0 0 - - -;
-#X text 170 363 exponent;
-#X obj 51 591 VASP-HELP;
-#X connect 3 0 4 0;
-#X connect 5 0 3 0;
-#X connect 6 0 7 0;
-#X connect 7 0 8 0;
-#X connect 11 0 22 0;
-#X connect 18 0 6 0;
-#X connect 19 0 5 0;
-#X connect 22 0 9 0;
-#X connect 22 0 9 1;
-#X connect 23 0 10 0;
-#X connect 24 0 25 0;
-#X connect 26 0 27 0;
-#X connect 27 0 24 0;
-#X connect 28 0 27 1;
diff --git a/externals/grill/vasp/pd-help/vasp_rsize.pd b/externals/grill/vasp/pd-help/vasp_rsize.pd
deleted file mode 100644
index ad7d8da3..00000000
--- a/externals/grill/vasp/pd-help/vasp_rsize.pd
+++ /dev/null
@@ -1,37 +0,0 @@
-#N canvas 85 111 909 544 10;
-#X obj 58 31 cnv 15 15 15 empty empty vasp.size/ 0 10 1 14 -262144
--1 0;
-#N canvas 0 0 410 286 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 2 5 \; \$1 xlabel 1.1 0 10 20 30 40 50
-\; \$1 yticks 0 0.25 2;
-#X msg 33 45 symbol bufrsize;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 714 408 pd init;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufrsize 100 float 0;
-#X coords 0 1 99 -1 300 100 1;
-#X restore 453 152 graph;
-#X obj 175 416 vasp.frames;
-#X text 62 415 related objects:;
-#X floatatom 120 319 5 0 0;
-#X obj 256 416 vasp.size;
-#X obj 256 374 vasp.s/;
-#X msg 62 152 vasp bufrsize;
-#X msg 177 152 vasp bufrsize;
-#X obj 62 217 vasp.size* 2;
-#X obj 177 217 vasp.size/ 2;
-#X obj 193 31 cnv 15 15 15 empty empty vasp.size* 0 10 1 14 -262144
--1 0;
-#X text 57 69 divide and multiplicate the size of a buffer/array;
-#X text 59 371 abbreviations:;
-#X obj 175 375 vasp.s*;
-#X obj 120 289 vasp.size?;
-#X obj 331 416 vasp.size?;
-#X obj 62 463 VASP-HELP;
-#X connect 8 0 10 0;
-#X connect 9 0 11 0;
-#X connect 10 0 16 0;
-#X connect 11 0 16 0;
-#X connect 16 0 5 0;
diff --git a/externals/grill/vasp/pd-help/vasp_rvalleys.pd b/externals/grill/vasp/pd-help/vasp_rvalleys.pd
deleted file mode 100644
index 20170c20..00000000
--- a/externals/grill/vasp/pd-help/vasp_rvalleys.pd
+++ /dev/null
@@ -1,91 +0,0 @@
-#N canvas 36 36 837 642 10;
-#X obj 72 26 cnv 15 15 15 empty empty vasp.rval 0 10 1 14 -262144 -1
-0;
-#X obj 76 131 filelist \$0;
-#N canvas 40 55 281 170 clear_buffers 0;
-#X obj 54 79 vasp.update;
-#X obj 54 56 vasp.= 0;
-#X obj 54 26 inlet;
-#X obj 54 108 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 3 0;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X restore 500 505 pd clear_buffers;
-#X obj 65 263 vasp.update;
-#X obj 65 283 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X obj 411 132 wavedisplay-simple bufrval1 \$0;
-#X obj 412 289 wavedisplay-simple bufrval2 \$0;
-#X msg 65 223 vasp bufrval1 bufrval2;
-#X obj 65 243 vasp.cfft;
-#X obj 65 510 vasp.update;
-#X obj 65 530 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X msg 65 426 vasp bufrval1 bufrval2;
-#X obj 65 446 vasp.c!fft;
-#X obj 337 507 dac~;
-#X obj 337 469 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X text 358 472 play;
-#X obj 337 487 tabplay~ bufrval1;
-#X msg 500 485 vasp bufrval1 bufrval2;
-#N canvas 92 108 440 390 inside 0;
-#X obj 66 169 soundfiler;
-#X obj 135 260 s \$0-sample-length;
-#X obj 66 223 s \$0-draw_display;
-#X msg 247 217 resize \$1;
-#X obj 66 47 loadbang;
-#X obj 66 113 filelisthandler \$0;
-#X obj 247 239 s bufrval1;
-#X obj 258 260 s bufrval2;
-#X msg 247 183 88200;
-#X obj 66 68 t b b;
-#X msg 66 145 read \$1 bufrval1;
-#X msg 66 91 3;
-#X obj 66 193 t b;
-#X connect 0 0 12 0;
-#X connect 3 0 6 0;
-#X connect 3 0 7 0;
-#X connect 4 0 9 0;
-#X connect 5 0 10 0;
-#X connect 8 0 1 0;
-#X connect 8 0 3 0;
-#X connect 9 0 11 0;
-#X connect 9 1 8 0;
-#X connect 10 0 0 0;
-#X connect 11 0 5 0;
-#X connect 12 0 2 0;
-#X restore 689 505 pd inside;
-#X text 71 49 find radius valleys of a complex vasp;
-#X text 71 65 argument/right inlet: density (0-1);
-#X text 72 97 needs two vectors (real and imaginary);
-#X obj 65 467 vasp.opt;
-#X obj 65 489 vasp.* 0.5;
-#X text 71 81 right outlet: the current density;
-#X obj 65 382 vasp.update;
-#X obj 65 402 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X msg 65 308 vasp bufrval1 bufrval2;
-#X floatatom 168 342 5 0 0;
-#X floatatom 168 383 12 0 0;
-#X text 257 382 current density;
-#X obj 65 362 vasp.rvalleys 0.05;
-#X obj 54 595 VASP-HELP;
-#X connect 3 0 4 0;
-#X connect 7 0 8 0;
-#X connect 8 0 3 0;
-#X connect 9 0 10 0;
-#X connect 11 0 12 0;
-#X connect 12 0 22 0;
-#X connect 14 0 16 0;
-#X connect 16 0 13 0;
-#X connect 16 0 13 1;
-#X connect 17 0 2 0;
-#X connect 22 0 23 0;
-#X connect 23 0 9 0;
-#X connect 25 0 26 0;
-#X connect 27 0 31 0;
-#X connect 28 0 31 1;
-#X connect 31 0 25 0;
-#X connect 31 1 29 0;
diff --git a/externals/grill/vasp/pd-help/vasp_set.pd b/externals/grill/vasp/pd-help/vasp_set.pd
deleted file mode 100644
index cda19360..00000000
--- a/externals/grill/vasp/pd-help/vasp_set.pd
+++ /dev/null
@@ -1,93 +0,0 @@
-#N canvas 21 60 891 586 10;
-#X obj 61 33 cnv 15 15 15 empty empty vasp.= 0 10 1 14 -262144 -1 0
-;
-#X text 56 66 set a vasp to a value;
-#X text 55 81 optional argument/right inlet: value/vasp;
-#X msg 56 166 vasp bufset;
-#X obj 56 188 vasp.noise;
-#X obj 56 211 vasp.* 0.5;
-#X text 142 164 generate noise;
-#X obj 56 232 vasp.update;
-#X obj 56 254 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X obj 56 385 vasp.= 0;
-#X obj 112 342 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X obj 56 406 vasp.update;
-#X obj 56 426 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X text 446 103 select a region by drawing inside the wavedisplay:
-mouse+spacebar (select) or mouse+"s" (shift).;
-#N canvas 109 162 310 376 tovaspdata 0;
-#X obj 107 305 outlet;
-#X obj 107 92 unpack;
-#X obj 107 232 runden;
-#X obj 107 210 - 0;
-#X text 191 251 offset;
-#X obj 107 156 t b f;
-#X obj 107 185 0;
-#X text 111 250 length;
-#X obj 188 233 runden;
-#X obj 107 274 pack;
-#X obj 107 72 change2;
-#X obj 107 115 t f f;
-#X obj 107 47 inlet;
-#X connect 1 0 11 0;
-#X connect 1 1 6 1;
-#X connect 2 0 9 0;
-#X connect 3 0 2 0;
-#X connect 5 0 6 0;
-#X connect 5 1 3 1;
-#X connect 6 0 3 0;
-#X connect 8 0 9 1;
-#X connect 9 0 0 0;
-#X connect 10 0 1 0;
-#X connect 11 0 5 0;
-#X connect 11 1 8 0;
-#X connect 12 0 10 0;
-#X restore 447 302 pd tovaspdata;
-#X msg 447 330 set vasp \$1 bufset \$2;
-#X obj 447 145 wavedisplay-select bufset \$0;
-#X msg 56 315 vasp bufset;
-#X text 134 314 set all samples to zero;
-#X text 136 339 set selected samples to zero;
-#N canvas 0 0 261 214 clear_buffer 0;
-#X obj 49 73 vasp.= 0;
-#X obj 49 49 inlet;
-#X obj 49 97 vasp.u;
-#X obj 49 118 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 2 0;
-#X connect 1 0 0 0;
-#X connect 2 0 3 0;
-#X restore 559 465 pd clear_buffer;
-#X msg 559 439 vasp bufset;
-#X text 177 472 <-- click to open more examples;
-#X text 57 138 use vasp.= to clear a buffer;
-#X obj 53 473 vaspset_examples;
-#X obj 51 533 VASP-HELP;
-#N canvas 280 291 370 218 inside 0;
-#X obj 138 155 s \$0-sample-length;
-#X msg 163 110 resize \$1;
-#X obj 138 43 loadbang;
-#X msg 138 64 88200;
-#X obj 163 132 s bufset;
-#X obj 138 89 t f f;
-#X connect 1 0 4 0;
-#X connect 2 0 3 0;
-#X connect 3 0 5 0;
-#X connect 5 0 0 0;
-#X connect 5 1 1 0;
-#X restore 709 420 pd inside;
-#X connect 3 0 4 0;
-#X connect 4 0 5 0;
-#X connect 5 0 7 0;
-#X connect 7 0 8 0;
-#X connect 9 0 11 0;
-#X connect 10 0 9 0;
-#X connect 11 0 12 0;
-#X connect 14 0 15 0;
-#X connect 15 0 9 0;
-#X connect 16 0 14 0;
-#X connect 17 0 9 0;
-#X connect 21 0 20 0;
diff --git a/externals/grill/vasp/pd-help/vasp_sframes.pd b/externals/grill/vasp/pd-help/vasp_sframes.pd
deleted file mode 100644
index 6e7ee2d1..00000000
--- a/externals/grill/vasp/pd-help/vasp_sframes.pd
+++ /dev/null
@@ -1,191 +0,0 @@
-#N canvas 39 37 931 626 10;
-#X obj 58 31 cnv 15 15 15 empty empty vasp.frames= 0 10 1 14 -262144
--1 0;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufsfram1 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 544 107 graph;
-#N canvas 0 0 392 216 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 4410 10 \; \$1 xlabel 1.1 0 22050 44100
-66150 88200 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 94000 -1 -0.5 0 0.5
-1;
-#X msg 33 45 symbol bufsfram1;
-#X msg 140 45 symbol bufsfram2;
-#X connect 0 0 2 0;
-#X connect 0 0 3 0;
-#X connect 2 0 1 0;
-#X connect 3 0 1 0;
-#X restore 798 533 pd init;
-#X obj 57 402 vasp.update;
-#X text 113 443 abbreviation;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufsfram2 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 545 227 graph;
-#X text 56 87 argument/right inlet: value in samples;
-#X obj 57 442 vasp.f+;
-#X obj 55 559 VASP-HELP;
-#X obj 57 378 vasp.noise;
-#X obj 58 200 vasp.update;
-#X msg 58 153 vasp bufsfram1;
-#X msg 57 261 vasp bufsfram1;
-#X obj 57 284 vasp.frames= 0.7;
-#X obj 58 176 vasp.= env -1 0 1 44100 -1 88200;
-#X floatatom 148 305 12 0 0 0 - - -;
-#X text 57 104 right outlet: frames relatively to the starting point
-of the search;
-#X text 147 319 since the search runs from the end to the left \, this
-value is negative;
-#X obj 57 356 vasp.-> bufsfram2;
-#X obj 57 502 vasp.o=;
-#X obj 190 148 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
--1;
-#X text 222 148 1 generate a ramp;
-#X obj 190 260 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
--1;
-#X text 218 274 the value 0.7 appears in the ramp;
-#X obj 540 400 cnv 15 15 15 empty empty --> 0 10 0 14 -262144 -24198
-0;
-#X msg 562 499 vasp bufsfram2;
-#N canvas 249 259 328 183 clear 0;
-#X obj 74 54 inlet;
-#X obj 74 77 vasp.= 0;
-#X obj 74 100 vasp.u;
-#X obj 168 53 r \$0-clear;
-#X msg 168 76 vasp bufsfram2;
-#X obj 168 99 vasp.= 0;
-#X connect 0 0 1 0;
-#X connect 1 0 2 0;
-#X connect 3 0 4 0;
-#X connect 4 0 5 0;
-#X restore 562 525 pd clear;
-#X text 537 376 3 more features!;
-#X text 56 56 search for a value (starting at the end) and set the
-length of the vasp according to it;
-#X text 55 482 related objects:;
-#X obj 139 502 vasp.f;
-#X obj 204 502 vasp.s;
-#N canvas 77 60 522 606 dir_and_slope 0;
-#X text 46 56 forward;
-#X text 48 154 backward;
-#X text 31 22 search direction;
-#X text 58 369 both;
-#X text 28 401 negative;
-#X text 58 337 positive;
-#X text 28 314 target slope;
-#X text 46 99 both (nearest);
-#X obj 185 228 vasp.noise;
-#X obj 185 249 vasp.u;
-#X msg 110 156 dir -1;
-#X msg 111 121 dir 0;
-#X msg 110 59 dir 1;
-#X obj 185 90 t a b;
-#X obj 210 111 bng 15 250 50 0 \$0-clear empty empty 0 -6 1152 8 -262144
--1 -1;
-#X text 228 111 (clear);
-#X floatatom 224 177 12 0 0 0 - - -;
-#X msg 126 336 slope 1;
-#X msg 110 367 slope 0;
-#X msg 97 399 slope -1;
-#X obj 239 355 t a b;
-#X obj 264 376 bng 15 250 50 0 \$0-clear empty empty 0 -6 1152 8 -262144
--1 -1;
-#X text 282 376 (clear);
-#X floatatom 283 426 12 0 0 0 - - -;
-#X text 29 290 find values with positive and/or negative slope;
-#X obj 185 197 vasp.-> bufsfram2;
-#X obj 239 481 vasp.noise;
-#X obj 239 502 vasp.u;
-#X obj 239 450 vasp.-> bufsfram2;
-#X obj 239 400 vasp.f= 0.2;
-#X obj 185 153 vasp.f= 0;
-#X msg 185 71 vasp 44101 bufsfram1;
-#X msg 239 336 vasp 0 bufsfram1;
-#X text 40 438 query;
-#X msg 109 436 getslope;
-#X obj 369 424 prepend set;
-#X msg 368 445;
-#X obj 317 175 prepend set;
-#X msg 316 196;
-#X text 50 191 query;
-#X msg 109 191 getdir;
-#X connect 8 0 9 0;
-#X connect 10 0 30 0;
-#X connect 11 0 30 0;
-#X connect 12 0 30 0;
-#X connect 13 0 30 0;
-#X connect 13 1 14 0;
-#X connect 17 0 29 0;
-#X connect 18 0 29 0;
-#X connect 19 0 29 0;
-#X connect 20 0 29 0;
-#X connect 20 1 21 0;
-#X connect 25 1 8 0;
-#X connect 26 0 27 0;
-#X connect 28 1 26 0;
-#X connect 29 0 28 0;
-#X connect 29 1 23 0;
-#X connect 29 2 35 0;
-#X connect 30 0 25 0;
-#X connect 30 1 16 0;
-#X connect 30 2 37 0;
-#X connect 31 0 13 0;
-#X connect 32 0 20 0;
-#X connect 34 0 29 0;
-#X connect 35 0 36 0;
-#X connect 37 0 38 0;
-#X connect 40 0 30 0;
-#X restore 588 403 pd dir_and_slope;
-#X text 218 259 2 generate noise up to the position where;
-#N canvas 80 75 458 321 incl 0;
-#X obj 168 260 vasp.noise;
-#X obj 168 281 vasp.u;
-#X obj 168 214 vasp.o?;
-#X obj 170 135 t a b;
-#X obj 195 161 bng 15 250 50 0 \$0-clear empty empty 0 -6 1152 8 -262144
--1 -1;
-#X text 213 161 (clear);
-#X floatatom 261 211 5 0 0 0 - - -;
-#X text 24 17 include current sample;
-#X obj 170 109 vasp.u;
-#X msg 68 93 incl 0;
-#X msg 68 143 incl 1;
-#X text 21 73 don't include (default);
-#X text 20 126 do include;
-#X text 21 188 query;
-#X msg 68 189 getincl;
-#X obj 300 210 prepend set;
-#X msg 170 61 vasp bufsfram1;
-#X msg 168 239 vasp bufsfram2 \$1;
-#X obj 170 86 vasp.= env 0.5 40000 -0.5 60000;
-#X msg 301 231;
-#X obj 170 185 vasp.frames= -0.5;
-#X connect 0 0 1 0;
-#X connect 2 0 17 0;
-#X connect 3 0 20 0;
-#X connect 3 1 4 0;
-#X connect 8 0 3 0;
-#X connect 9 0 20 0;
-#X connect 10 0 20 0;
-#X connect 14 0 20 0;
-#X connect 15 0 19 0;
-#X connect 16 0 18 0;
-#X connect 17 0 0 0;
-#X connect 18 0 8 0;
-#X connect 20 0 2 0;
-#X connect 20 1 6 0;
-#X connect 20 2 15 0;
-#X restore 588 428 pd incl;
-#X obj 540 430 cnv 15 15 15 empty empty --> 0 10 0 14 -262144 -24198
-0;
-#X connect 9 0 3 0;
-#X connect 11 0 14 0;
-#X connect 12 0 13 0;
-#X connect 13 0 18 0;
-#X connect 13 1 15 0;
-#X connect 14 0 10 0;
-#X connect 18 1 9 0;
-#X connect 20 0 11 0;
-#X connect 22 0 12 0;
-#X connect 25 0 26 0;
diff --git a/externals/grill/vasp/pd-help/vasp_shift.pd b/externals/grill/vasp/pd-help/vasp_shift.pd
deleted file mode 100644
index 46b2e408..00000000
--- a/externals/grill/vasp/pd-help/vasp_shift.pd
+++ /dev/null
@@ -1,57 +0,0 @@
-#N canvas 24 75 875 494 10;
-#X obj 75 32 cnv 15 15 15 empty empty vasp.shift 0 10 1 14 -262144
--1 0;
-#X text 520 322 clear;
-#N canvas 0 0 413 295 clear_buffer 0;
-#X obj 49 73 vasp.= 0;
-#X obj 49 49 inlet;
-#X obj 49 97 vasp.u;
-#X obj 49 118 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 2 0;
-#X connect 1 0 0 0;
-#X connect 2 0 3 0;
-#X restore 520 367 pd clear_buffer;
-#X text 71 60 shifts buffer content to a sample index;
-#X text 72 73 optional argument/right inlet: value;
-#X msg 520 344 vasp bufshift;
-#X obj 70 354 vasp.update;
-#X msg 70 228 vasp bufshift;
-#X floatatom 143 259 0 0 0 0 - - -;
-#X obj 59 430 VASP-HELP;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufshift 100 float 0;
-#X coords 0 1 99 -1 300 100 1;
-#X restore 436 125 graph;
-#N canvas 0 0 396 272 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 1 10 \; \$1 xlabel 1.1 0 20 40 60 80 100
-\; \$1 yticks 0 0.25 2 \; \$1 ylabel 105 -1 -0.5 0 0.5 1;
-#X msg 33 45 symbol bufshift;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 673 368 pd init;
-#X obj 70 327 vasp.shift 10;
-#X obj 70 178 vasp.u;
-#X msg 70 133 vasp bufshift;
-#X text 187 132 1 draw envelope;
-#X text 184 230 2 shift content;
-#X obj 262 397 vasp.xrot;
-#X text 57 396 related objects:;
-#X obj 182 397 vasp.xshift;
-#X msg 199 260 fill 0;
-#X msg 199 280 fill 1;
-#X msg 199 300 fill 2;
-#X text 245 260 no filling;
-#X text 244 300 fill with edge-value;
-#X text 245 280 zero filling (default);
-#X obj 70 156 vasp.= env 0.5 0 1 20 -1 100;
-#X connect 5 0 2 0;
-#X connect 7 0 12 0;
-#X connect 8 0 12 1;
-#X connect 12 0 6 0;
-#X connect 14 0 26 0;
-#X connect 20 0 12 0;
-#X connect 21 0 12 0;
-#X connect 22 0 12 0;
-#X connect 26 0 13 0;
diff --git a/externals/grill/vasp/pd-help/vasp_sign.pd b/externals/grill/vasp/pd-help/vasp_sign.pd
deleted file mode 100644
index 83062d7e..00000000
--- a/externals/grill/vasp/pd-help/vasp_sign.pd
+++ /dev/null
@@ -1,42 +0,0 @@
-#N canvas 95 158 858 400 10;
-#X obj 71 32 cnv 15 15 15 empty empty vasp.sign 0 10 1 14 -262144 -1
-0;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufsign 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 465 124 graph;
-#N canvas 0 0 396 272 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 4410 10 \; \$1 xlabel 1.1 0 22050 44100
-66150 88200 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 94000 -1 -0.5 0 0.5
-1;
-#X msg 33 45 symbol bufsign;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 737 285 pd init;
-#N canvas 40 55 247 122 clear_buffer 0;
-#X obj 54 79 vasp.update;
-#X obj 54 56 vasp.= 0;
-#X obj 54 26 inlet;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X restore 521 284 pd clear_buffer;
-#X text 178 134 generate a sinewave;
-#X obj 77 178 vasp.u;
-#X text 70 77 samples == 0 stay 0;
-#X text 70 95 samples < 0 become -1;
-#X text 70 61 samples > 0 become 1;
-#X msg 77 135 vasp bufsign;
-#X obj 77 156 vasp.osc 44100;
-#X msg 521 263 vasp bufsign;
-#X obj 77 322 vasp.update;
-#X obj 77 291 vasp.sign;
-#X msg 77 260 vasp bufsign;
-#X text 79 237 use sign to generate a square wave out of a sine wave
-;
-#X obj 46 370 VASP-HELP;
-#X connect 9 0 10 0;
-#X connect 10 0 5 0;
-#X connect 11 0 3 0;
-#X connect 13 0 12 0;
-#X connect 14 0 13 0;
diff --git a/externals/grill/vasp/pd-help/vasp_size.pd b/externals/grill/vasp/pd-help/vasp_size.pd
deleted file mode 100644
index 11fbf1c8..00000000
--- a/externals/grill/vasp/pd-help/vasp_size.pd
+++ /dev/null
@@ -1,43 +0,0 @@
-#N canvas 85 111 842 540 10;
-#X obj 58 31 cnv 15 15 15 empty empty vasp.size 0 10 1 14 -262144 -1
-0;
-#N canvas 0 0 406 282 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 45 symbol bufsize;
-#X msg 33 73 \; \$1 xticks 0 2 5 \; \$1 xlabel 1.1 0 10 20 30 40 50
-\; \$1 yticks 0 0.25 2;
-#X connect 0 0 1 0;
-#X connect 1 0 2 0;
-#X restore 714 408 pd init;
-#X text 119 392 abbreviation;
-#X obj 62 335 vasp.update;
-#X obj 90 258 prepend set;
-#X msg 62 196 vasp bufsize;
-#X obj 62 225 vasp.size 100;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufsize 133 float 0;
-#X coords 0 1 132 -1 300 100 1;
-#X restore 453 153 graph;
-#X text 57 69 change the size of a buffer/array;
-#X obj 62 303 vasp.osc 16;
-#X obj 63 392 vasp.s;
-#X text 62 433 related objects:;
-#X obj 343 460 vasp.frames;
-#X obj 183 460 vasp.size?;
-#X obj 183 436 vasp.s+;
-#X obj 259 460 vasp.size*;
-#X obj 259 437 vasp.size/;
-#X obj 62 504 VASP-HELP;
-#X obj 62 157 nbx 5 14 -1e+037 1e+037 0 0 empty empty empty 0 -6 0
-10 -24198 -1 -1 133 256;
-#X obj 62 175 t b f;
-#X msg 90 280;
-#X text 58 83 argument/right inlet: value in frames;
-#X connect 4 0 20 0;
-#X connect 5 0 6 0;
-#X connect 6 0 4 0;
-#X connect 6 0 9 0;
-#X connect 9 0 3 0;
-#X connect 18 0 19 0;
-#X connect 19 0 5 0;
-#X connect 19 1 6 1;
diff --git a/externals/grill/vasp/pd-help/vasp_soffset.pd b/externals/grill/vasp/pd-help/vasp_soffset.pd
deleted file mode 100644
index 6b77de7c..00000000
--- a/externals/grill/vasp/pd-help/vasp_soffset.pd
+++ /dev/null
@@ -1,211 +0,0 @@
-#N canvas 23 9 968 641 10;
-#X text 54 77 argument/right inlet: value;
-#X obj 58 27 cnv 15 15 15 empty empty vasp.offset= 0 10 1 14 -262144
--1 0;
-#X text 68 587 abbreviation;
-#X obj 75 272 prepend set;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufsoffs1 1000 float 0;
-#X coords 0 1 999 -1 300 100 1;
-#X restore 551 88 graph;
-#N canvas 466 356 391 255 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 45 symbol bufsoffs1;
-#X msg 151 45 symbol bufsoffs2;
-#X msg 33 71 \; \$1 xticks 0 100 10 \; \$1 xlabel 1.1 0 200 300 500
-700 800 1000 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 1100 -1 -0.5 0 0.5
-1;
-#X connect 0 0 1 0;
-#X connect 0 0 2 0;
-#X connect 1 0 3 0;
-#X connect 2 0 3 0;
-#X restore 802 556 pd init;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufsoffs2 1000 float 0;
-#X coords 0 1 999 -1 300 100 1;
-#X restore 551 207 graph;
-#X obj 64 177 vasp.u;
-#X msg 63 130 vasp bufsoffs1;
-#X msg 64 221 vasp bufsoffs1;
-#X msg 75 293 vasp 701 bufsoffs1 299 0;
-#X obj 64 367 vasp.noise;
-#X obj 64 388 vasp.u;
-#X obj 159 591 vasp.o=;
-#X obj 259 592 VASP-HELP;
-#X text 54 95 right outlet: relative offset position in frames;
-#X text 201 128 1 generate a ramp;
-#X text 199 220 2 generate noise \, and start at the point \,;
-#X obj 64 325 vasp.o?;
-#X msg 64 346 vasp bufsoffs2 \$1;
-#X text 54 59 search for a value set it as offset;
-#X floatatom 161 271 5 0 0 0 - - -;
-#X obj 170 130 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
--1;
-#X obj 170 221 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
--1;
-#N canvas 0 0 261 214 clear_buffer 0;
-#X obj 49 73 vasp.= 0;
-#X obj 49 49 inlet;
-#X obj 49 97 vasp.u;
-#X obj 49 118 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 2 0;
-#X connect 1 0 0 0;
-#X connect 2 0 3 0;
-#X restore 633 556 pd clear_buffer;
-#X msg 633 535 vasp bufsoffs2;
-#X text 653 515 clear second buffer;
-#X obj 633 516 bng 15 250 50 0 empty \$0-clear empty 0 -6 576 8 -262144
--1 -1;
-#X obj 147 445 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
--1;
-#X obj 64 151 vasp.= env -1 0 1 500 -1 1000;
-#X obj 102 496 t a b;
-#X obj 127 517 bng 15 250 50 0 \$0-clear empty empty 0 -6 1152 8 -262144
--1 -1;
-#X text 145 517 (clear);
-#X obj 612 391 cnv 15 15 15 empty empty --> 0 10 0 14 -262144 -24198
-0;
-#X text 214 232 where the ramp is at 0.2;
-#X obj 64 242 vasp.offset= 0.2;
-#X text 174 444 3 start searching at frame 501;
-#X msg 102 475 vasp bufsoffs1 501;
-#X text 133 419 the search always starts at the offset point;
-#N canvas 80 75 454 317 incl 0;
-#X obj 168 260 vasp.noise;
-#X obj 168 281 vasp.u;
-#X msg 168 239 vasp bufsoffs2 \$1;
-#X obj 168 214 vasp.o?;
-#X obj 170 135 t a b;
-#X obj 195 161 bng 15 250 50 0 \$0-clear empty empty 0 -6 1152 8 -262144
--1 -1;
-#X text 213 161 (clear);
-#X floatatom 261 211 5 0 0 0 - - -;
-#X text 24 17 include current sample;
-#X msg 170 61 vasp bufsoffs1;
-#X obj 170 185 vasp.offset= 0.5;
-#X obj 170 109 vasp.u;
-#X obj 170 86 vasp.= env 0.5 500 -0.5 700;
-#X msg 68 93 incl 0;
-#X msg 68 143 incl 1;
-#X text 21 73 don't include (default);
-#X text 20 126 do include;
-#X text 21 188 query;
-#X msg 68 189 getincl;
-#X obj 300 210 prepend set;
-#X msg 301 231;
-#X connect 0 0 1 0;
-#X connect 2 0 0 0;
-#X connect 3 0 2 0;
-#X connect 4 0 10 0;
-#X connect 4 1 5 0;
-#X connect 9 0 12 0;
-#X connect 10 0 3 0;
-#X connect 10 1 7 0;
-#X connect 10 2 19 0;
-#X connect 11 0 4 0;
-#X connect 12 0 11 0;
-#X connect 13 0 10 0;
-#X connect 14 0 10 0;
-#X connect 18 0 10 0;
-#X connect 19 0 20 0;
-#X restore 660 421 pd incl;
-#X obj 612 423 cnv 15 15 15 empty empty --> 0 10 0 14 -262144 -24198
-0;
-#N canvas 77 60 447 584 dir_and_slope 0;
-#X text 46 56 forward;
-#X text 48 154 backward;
-#X text 31 22 search direction;
-#X text 56 371 both;
-#X text 26 403 negative;
-#X text 56 339 positive;
-#X text 26 316 target slope;
-#X text 46 99 both (nearest);
-#X obj 183 210 vasp.noise;
-#X obj 183 231 vasp.u;
-#X msg 183 189 vasp bufsoffs2 \$1;
-#X msg 110 156 dir -1;
-#X msg 111 121 dir 0;
-#X msg 110 59 dir 1;
-#X obj 183 164 vasp.o?;
-#X obj 185 90 t a b;
-#X obj 210 111 bng 15 250 50 0 \$0-clear empty empty 0 -6 1152 8 -262144
--1 -1;
-#X text 228 111 (clear);
-#X obj 185 135 vasp.offset= 0.1;
-#X msg 185 71 vasp bufsoffs1 500;
-#X floatatom 276 161 5 0 0 0 - - -;
-#X msg 124 338 slope 1;
-#X msg 108 369 slope 0;
-#X msg 95 401 slope -1;
-#X obj 237 486 vasp.noise;
-#X obj 237 507 vasp.u;
-#X msg 237 465 vasp bufsoffs2 \$1;
-#X obj 237 440 vasp.o?;
-#X obj 237 357 t a b;
-#X obj 262 378 bng 15 250 50 0 \$0-clear empty empty 0 -6 1152 8 -262144
--1 -1;
-#X text 280 378 (clear);
-#X obj 237 402 vasp.offset= 0.1;
-#X floatatom 308 430 5 0 0 0 - - -;
-#X text 27 292 find values with positive and/or negative slope;
-#X msg 237 338 vasp bufsoffs1;
-#X text 47 197 query;
-#X msg 104 197 getdir;
-#X text 50 434 query;
-#X msg 109 437 getslope;
-#X obj 315 158 prepend set;
-#X msg 314 180;
-#X obj 315 158 prepend set;
-#X msg 314 180;
-#X obj 354 431 prepend set;
-#X msg 355 452;
-#X connect 8 0 9 0;
-#X connect 10 0 8 0;
-#X connect 11 0 18 0;
-#X connect 12 0 18 0;
-#X connect 13 0 18 0;
-#X connect 14 0 10 0;
-#X connect 15 0 18 0;
-#X connect 15 1 16 0;
-#X connect 18 0 14 0;
-#X connect 18 1 20 0;
-#X connect 18 2 39 0;
-#X connect 19 0 15 0;
-#X connect 21 0 31 0;
-#X connect 22 0 31 0;
-#X connect 23 0 31 0;
-#X connect 24 0 25 0;
-#X connect 26 0 24 0;
-#X connect 27 0 26 0;
-#X connect 28 0 31 0;
-#X connect 28 1 29 0;
-#X connect 31 0 27 0;
-#X connect 31 1 32 0;
-#X connect 31 2 43 0;
-#X connect 34 0 28 0;
-#X connect 36 0 18 0;
-#X connect 38 0 31 0;
-#X connect 39 0 40 0;
-#X connect 41 0 42 0;
-#X connect 43 0 44 0;
-#X restore 660 394 pd dir_and_slope;
-#X text 614 375 3 more features!;
-#X connect 3 0 10 0;
-#X connect 8 0 29 0;
-#X connect 9 0 35 0;
-#X connect 11 0 12 0;
-#X connect 18 0 19 0;
-#X connect 19 0 11 0;
-#X connect 22 0 8 0;
-#X connect 23 0 9 0;
-#X connect 25 0 24 0;
-#X connect 27 0 25 0;
-#X connect 28 0 37 0;
-#X connect 29 0 7 0;
-#X connect 30 0 35 0;
-#X connect 30 1 31 0;
-#X connect 35 0 18 0;
-#X connect 35 0 3 0;
-#X connect 35 1 21 0;
-#X connect 37 0 30 0;
diff --git a/externals/grill/vasp/pd-help/vasp_spit.pd b/externals/grill/vasp/pd-help/vasp_spit.pd
deleted file mode 100644
index be3d60a1..00000000
--- a/externals/grill/vasp/pd-help/vasp_spit.pd
+++ /dev/null
@@ -1,46 +0,0 @@
-#N canvas 190 73 663 567 10;
-#X text 62 76 spit out vectors of a vasp (one vector after the other)
-;
-#X text 62 92 argument: number of outlets (if more than 1 \, outputs
-from right to left);
-#X obj 57 19 cnv 15 15 15 empty empty vasp.spit 0 10 1 14 -262144 -1
-0;
-#X text 211 304 spits out one vector after the other from right to
-left;
-#X obj 119 335 print b;
-#X obj 63 335 print a;
-#X obj 63 305 vasp.spit 3;
-#X msg 63 271 vasp bufspit1 bufspit2;
-#X obj 178 335 print c;
-#X obj 234 335 print ready;
-#X obj 118 220 print b;
-#X obj 63 220 print a;
-#X text 63 118 most right outlet: bang when ready;
-#X msg 63 160 vasp bufspit1 bufspit2 bufspit3;
-#X obj 63 188 vasp.spit;
-#X text 144 189 spits out one vector after the other out of 1 outlet
-;
-#X msg 237 271 vasp bufspit1 bufspit2 bufspit3;
-#X text 171 428 if more vectors than outlets \, see what it does!;
-#X obj 118 459 print b;
-#X obj 63 459 print a;
-#X msg 63 399 vasp bufspit1 bufspit2 bufspit3;
-#X obj 63 429 vasp.spit 2;
-#X obj 174 459 print ready;
-#X obj 50 519 VASP-HELP;
-#X obj 487 483 table bufspit1;
-#X obj 487 504 table bufspit2;
-#X obj 487 525 table bufspit3;
-#X connect 6 0 5 0;
-#X connect 6 1 4 0;
-#X connect 6 2 8 0;
-#X connect 6 3 9 0;
-#X connect 7 0 6 0;
-#X connect 13 0 14 0;
-#X connect 14 0 11 0;
-#X connect 14 1 10 0;
-#X connect 16 0 6 0;
-#X connect 20 0 21 0;
-#X connect 21 0 19 0;
-#X connect 21 1 18 0;
-#X connect 21 2 22 0;
diff --git a/externals/grill/vasp/pd-help/vasp_split.pd b/externals/grill/vasp/pd-help/vasp_split.pd
deleted file mode 100644
index 44f3f70b..00000000
--- a/externals/grill/vasp/pd-help/vasp_split.pd
+++ /dev/null
@@ -1,27 +0,0 @@
-#N canvas 221 195 631 478 10;
-#X text 56 100 most right outlet: rest (if there is one) of vectors
-in a new vasp \, otherwise: bang;
-#X text 56 70 split a vasp into its vectors;
-#X text 56 85 argument: number of vectors to split;
-#X obj 57 38 cnv 15 15 15 empty empty vasp.split 0 10 1 14 -262144
--1 0;
-#X obj 130 215 prepend set;
-#X obj 63 310 prepend set;
-#X obj 63 278 vasp.join 2;
-#X msg 241 153 vasp bufsplit1 bufsplit2 bufsplit3;
-#X obj 63 187 vasp.split 2;
-#X msg 63 153 vasp bufsplit1 bufsplit2;
-#X obj 53 410 VASP-HELP;
-#X obj 340 367 table bufsplit1;
-#X obj 340 391 table bufsplit2;
-#X obj 340 413 table bufsplit3;
-#X msg 63 339;
-#X msg 130 239;
-#X connect 4 0 15 0;
-#X connect 5 0 14 0;
-#X connect 6 0 5 0;
-#X connect 7 0 8 0;
-#X connect 8 0 6 0;
-#X connect 8 1 6 1;
-#X connect 8 2 4 0;
-#X connect 9 0 8 0;
diff --git a/externals/grill/vasp/pd-help/vasp_sqr.pd b/externals/grill/vasp/pd-help/vasp_sqr.pd
deleted file mode 100644
index 74f84aed..00000000
--- a/externals/grill/vasp/pd-help/vasp_sqr.pd
+++ /dev/null
@@ -1,38 +0,0 @@
-#N canvas 47 54 800 409 10;
-#X obj 71 32 cnv 15 15 15 empty empty vasp.sqr 0 10 1 14 -262144 -1
-0;
-#N canvas 0 0 412 288 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 4410 10 \; \$1 xlabel 1.1 0 22050 44100
-66150 88200 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 94000 -1 -0.5 0 0.5
-1;
-#X msg 33 45 symbol bufsqr;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 622 327 pd init;
-#N canvas 40 55 247 122 clear_buffer 0;
-#X obj 54 79 vasp.update;
-#X obj 54 56 vasp.= 0;
-#X obj 54 26 inlet;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X restore 362 325 pd clear_buffer;
-#X obj 77 173 vasp.update;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufsqr 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 363 170 graph;
-#X obj 77 150 vasp.osc 44100;
-#X text 71 63 sample ^ 2;
-#X msg 77 127 vasp bufsqr;
-#X text 184 124 generate a 1 Hz sinewave;
-#X msg 362 303 vasp bufsqr;
-#X obj 77 297 vasp.update;
-#X obj 77 271 vasp.sqr;
-#X msg 77 246 vasp bufsqr;
-#X obj 45 375 VASP-HELP;
-#X connect 5 0 3 0;
-#X connect 7 0 5 0;
-#X connect 9 0 2 0;
-#X connect 11 0 10 0;
-#X connect 12 0 11 0;
diff --git a/externals/grill/vasp/pd-help/vasp_sqrt.pd b/externals/grill/vasp/pd-help/vasp_sqrt.pd
deleted file mode 100644
index 3f940f25..00000000
--- a/externals/grill/vasp/pd-help/vasp_sqrt.pd
+++ /dev/null
@@ -1,38 +0,0 @@
-#N canvas 47 54 800 409 10;
-#X obj 71 32 cnv 15 15 15 empty empty vasp.sqrt 0 10 1 14 -262144 -1
-0;
-#N canvas 0 0 414 290 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 4410 10 \; \$1 xlabel 1.1 0 22050 44100
-66150 88200 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 94000 -1 -0.5 0 0.5
-1;
-#X msg 33 45 symbol bufsqrt;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 622 327 pd init;
-#N canvas 40 55 247 122 clear_buffer 0;
-#X obj 54 79 vasp.update;
-#X obj 54 56 vasp.= 0;
-#X obj 54 26 inlet;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X restore 362 325 pd clear_buffer;
-#X obj 77 173 vasp.update;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufsqrt 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 363 170 graph;
-#X obj 77 150 vasp.osc 44100;
-#X text 184 124 generate a 1 Hz sinewave;
-#X text 71 63 vasp square root;
-#X msg 77 127 vasp bufsqrt;
-#X msg 362 303 vasp bufsqrt;
-#X obj 77 297 vasp.update;
-#X msg 77 246 vasp bufsqrt;
-#X obj 77 271 vasp.sqrt;
-#X obj 65 354 VASP-HELP;
-#X connect 5 0 3 0;
-#X connect 8 0 5 0;
-#X connect 9 0 2 0;
-#X connect 11 0 12 0;
-#X connect 12 0 10 0;
diff --git a/externals/grill/vasp/pd-help/vasp_ssqr.pd b/externals/grill/vasp/pd-help/vasp_ssqr.pd
deleted file mode 100644
index 71630451..00000000
--- a/externals/grill/vasp/pd-help/vasp_ssqr.pd
+++ /dev/null
@@ -1,96 +0,0 @@
-#N canvas 47 54 816 469 10;
-#X obj 71 32 cnv 15 15 15 empty empty vasp.ssqr 0 10 1 14 -262144 -1
-0;
-#N canvas 0 0 416 292 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 4410 10 \; \$1 xlabel 1.1 0 22050 44100
-66150 88200 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 94000 -1 -0.5 0 0.5
-1;
-#X msg 33 45 symbol bufssqr;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 622 327 pd init;
-#N canvas 40 55 247 122 clear_buffer 0;
-#X obj 54 79 vasp.update;
-#X obj 54 56 vasp.= 0;
-#X obj 54 26 inlet;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X restore 362 325 pd clear_buffer;
-#X obj 77 173 vasp.update;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufssqr 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 363 170 graph;
-#X obj 77 150 vasp.osc 44100;
-#X text 184 124 generate a 1 Hz sinewave;
-#X msg 77 127 vasp bufssqr;
-#X msg 362 303 vasp bufssqr;
-#X text 71 63 signed sample ^ 2;
-#N canvas 4 20 834 463 listen_to_ssqr 0;
-#X obj 71 32 cnv 15 15 15 empty empty listen_to_ssqr 0 10 1 14 -262144
--1 0;
-#X obj 391 309 dac~;
-#X obj 391 265 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X text 413 264 play;
-#N canvas 40 55 281 170 clear_buffer 0;
-#X obj 54 79 vasp.update;
-#X obj 54 56 vasp.= 0;
-#X obj 54 26 inlet;
-#X obj 54 108 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 3 0;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X restore 523 309 pd clear_buffer;
-#X obj 79 99 filelist \$0;
-#N canvas 92 108 394 359 inside 0;
-#X obj 66 154 soundfiler;
-#X obj 84 238 s \$0-sample-length;
-#X obj 66 208 s \$0-draw_display;
-#X msg 214 206 resize \$1;
-#X obj 66 50 loadbang;
-#X obj 66 178 t b f f;
-#X obj 66 98 filelisthandler \$0;
-#X msg 66 76 4;
-#X msg 66 130 read -resize \$1 bufssqr1;
-#X obj 214 228 s bufssqr1;
-#X connect 0 0 5 0;
-#X connect 3 0 9 0;
-#X connect 4 0 7 0;
-#X connect 5 0 2 0;
-#X connect 5 1 1 0;
-#X connect 5 2 3 0;
-#X connect 6 0 8 0;
-#X connect 7 0 6 0;
-#X connect 8 0 0 0;
-#X restore 682 310 pd inside;
-#X obj 373 112 wavedisplay-simple bufssqr1 \$0;
-#X obj 391 286 tabplay~ bufssqr1;
-#X msg 523 286 vasp bufssqr1;
-#X obj 73 283 vasp.update;
-#X obj 73 306 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X obj 73 238 vasp.ssqr;
-#X obj 73 259 vasp.opt;
-#X msg 73 215 vasp bufssqr1;
-#X connect 2 0 8 0;
-#X connect 8 0 1 0;
-#X connect 8 0 1 1;
-#X connect 9 0 4 0;
-#X connect 10 0 11 0;
-#X connect 12 0 13 0;
-#X connect 13 0 10 0;
-#X connect 14 0 12 0;
-#X restore 75 352 pd listen_to_ssqr;
-#X text 199 352 <-- click to open;
-#X obj 77 297 vasp.update;
-#X msg 77 247 vasp bufssqr;
-#X obj 77 271 vasp.ssqr;
-#X obj 66 422 VASP-HELP;
-#X connect 5 0 3 0;
-#X connect 7 0 5 0;
-#X connect 8 0 2 0;
-#X connect 13 0 14 0;
-#X connect 14 0 12 0;
diff --git a/externals/grill/vasp/pd-help/vasp_ssqrt.pd b/externals/grill/vasp/pd-help/vasp_ssqrt.pd
deleted file mode 100644
index c94cfd12..00000000
--- a/externals/grill/vasp/pd-help/vasp_ssqrt.pd
+++ /dev/null
@@ -1,96 +0,0 @@
-#N canvas 47 54 818 471 10;
-#X obj 71 32 cnv 15 15 15 empty empty vasp.ssqrt 0 10 1 14 -262144
--1 0;
-#N canvas 0 0 418 294 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 4410 10 \; \$1 xlabel 1.1 0 22050 44100
-66150 88200 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 94000 -1 -0.5 0 0.5
-1;
-#X msg 33 45 symbol bufssqrt;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 622 327 pd init;
-#N canvas 40 55 247 122 clear_buffer 0;
-#X obj 54 79 vasp.update;
-#X obj 54 56 vasp.= 0;
-#X obj 54 26 inlet;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X restore 362 325 pd clear_buffer;
-#X obj 77 173 vasp.update;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufssqrt 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 363 170 graph;
-#X obj 77 150 vasp.osc 44100;
-#X text 184 124 generate a 1 Hz sinewave;
-#X text 208 352 <-- click to open;
-#X text 71 63 signed square root;
-#X msg 77 127 vasp bufssqrt;
-#N canvas 4 20 840 469 listen_to_ssqrt 0;
-#X obj 71 32 cnv 15 15 15 empty empty listen_to_ssqrt 0 10 1 14 -262144
--1 0;
-#X obj 391 309 dac~;
-#X obj 391 265 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X text 413 264 play;
-#N canvas 40 55 281 170 clear_buffer 0;
-#X obj 54 79 vasp.update;
-#X obj 54 56 vasp.= 0;
-#X obj 54 26 inlet;
-#X obj 54 108 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 3 0;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X restore 523 309 pd clear_buffer;
-#X obj 79 99 filelist \$0;
-#N canvas 96 128 398 363 inside 0;
-#X obj 66 154 soundfiler;
-#X obj 84 238 s \$0-sample-length;
-#X obj 66 208 s \$0-draw_display;
-#X msg 214 206 resize \$1;
-#X obj 66 50 loadbang;
-#X obj 66 178 t b f f;
-#X obj 66 98 filelisthandler \$0;
-#X msg 66 76 4;
-#X msg 66 130 read -resize \$1 bufssqrt1;
-#X obj 214 228 s bufssqrt1;
-#X connect 0 0 5 0;
-#X connect 3 0 9 0;
-#X connect 4 0 7 0;
-#X connect 5 0 2 0;
-#X connect 5 1 1 0;
-#X connect 5 2 3 0;
-#X connect 6 0 8 0;
-#X connect 7 0 6 0;
-#X connect 8 0 0 0;
-#X restore 682 310 pd inside;
-#X obj 391 286 tabplay~ bufssqrt1;
-#X msg 523 286 vasp bufssqrt1;
-#X obj 361 111 wavedisplay-simple bufssqrt1 \$0;
-#X obj 73 283 vasp.update;
-#X obj 73 306 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X obj 73 259 vasp.opt;
-#X msg 73 215 vasp bufssqrt1;
-#X obj 73 238 vasp.ssqrt;
-#X connect 2 0 7 0;
-#X connect 7 0 1 0;
-#X connect 7 0 1 1;
-#X connect 8 0 4 0;
-#X connect 10 0 11 0;
-#X connect 12 0 10 0;
-#X connect 13 0 14 0;
-#X connect 14 0 12 0;
-#X restore 75 352 pd listen_to_ssqrt;
-#X msg 362 303 vasp bufssqrt;
-#X obj 77 297 vasp.update;
-#X msg 77 246 vasp bufssqrt;
-#X obj 77 271 vasp.ssqrt;
-#X obj 73 413 VASP-HELP;
-#X connect 5 0 3 0;
-#X connect 9 0 5 0;
-#X connect 11 0 2 0;
-#X connect 13 0 14 0;
-#X connect 14 0 12 0;
diff --git a/externals/grill/vasp/pd-help/vasp_sub.pd b/externals/grill/vasp/pd-help/vasp_sub.pd
deleted file mode 100644
index 2d074d31..00000000
--- a/externals/grill/vasp/pd-help/vasp_sub.pd
+++ /dev/null
@@ -1,54 +0,0 @@
-#N canvas 28 239 963 381 10;
-#N canvas 44 75 276 122 clear_buffer 0;
-#X obj 54 79 vasp.update;
-#X obj 54 56 vasp.= 0;
-#X obj 54 26 inlet;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X restore 738 292 pd clear_buffer;
-#X text 376 62 optional argument/right inlet: right operand;
-#X text 376 45 subtracts a value or a vasp from a vasp;
-#X text 62 62 optional argument/right inlet: right operand;
-#X text 62 45 adds a value or a vasp to a vasp;
-#X obj 62 19 cnv 15 15 15 empty empty vasp.+ 0 10 1 14 -262144 -1 0
-;
-#X obj 378 20 cnv 15 15 15 empty empty vasp.- 0 10 1 14 -262144 -1
-0;
-#N canvas 0 0 450 300 graph167 0;
-#X array bufsub 88200 float 0;
-#X coords 0 1 88199 -1 300 120 1;
-#X restore 629 93 graph;
-#X text 139 190 shift all values + 0.5;
-#X text 141 167 half the amplitude;
-#X obj 65 212 vasp.update;
-#X obj 65 189 vasp.+ 0.5;
-#X obj 65 144 vasp.osc 44100;
-#X obj 65 166 vasp.* 0.5;
-#X text 169 145 generate a 1Hz sine wave;
-#X msg 65 112 vasp bufsub;
-#X msg 738 271 vasp bufsub;
-#N canvas 0 0 396 272 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 4410 10 \; \$1 xlabel 1.1 0 22050 44100
-66150 88200 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 94000 -1 -0.5 0 0.5
-1;
-#X msg 33 45 symbol bufsub;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 881 291 pd init;
-#X text 455 189 shift all values - 0.5;
-#X obj 380 212 vasp.update;
-#X obj 380 189 vasp.- 0.5;
-#X obj 380 144 vasp.osc 44100;
-#X obj 380 166 vasp.* 0.5;
-#X msg 380 112 vasp bufsub;
-#X obj 61 313 VASP-HELP;
-#X connect 11 0 10 0;
-#X connect 12 0 13 0;
-#X connect 13 0 11 0;
-#X connect 15 0 12 0;
-#X connect 16 0 0 0;
-#X connect 20 0 19 0;
-#X connect 21 0 22 0;
-#X connect 22 0 20 0;
-#X connect 23 0 21 0;
diff --git a/externals/grill/vasp/pd-help/vasp_subr.pd b/externals/grill/vasp/pd-help/vasp_subr.pd
deleted file mode 100644
index 42a6c5c1..00000000
--- a/externals/grill/vasp/pd-help/vasp_subr.pd
+++ /dev/null
@@ -1,48 +0,0 @@
-#N canvas 193 184 770 390 10;
-#N canvas 40 55 247 122 clear_buffer 0;
-#X obj 45 79 vasp.update;
-#X obj 45 56 vasp.= 0;
-#X obj 45 26 inlet;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X restore 514 282 pd clear_buffer;
-#X text 49 91 optional argument/right inlet: right operand;
-#X text 49 76 subtracts a value or a vasp from a vasp;
-#X text 49 60 reverse subtraction;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufsubr 88200 float 0;
-#X coords 0 1 88199 -1 300 120 1;
-#X restore 370 102 graph;
-#N canvas 0 0 396 272 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 4410 10 \; \$1 xlabel 1.1 0 22050 44100
-66150 88200 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 94000 -1 -0.5 0 0.5
-1;
-#X msg 33 45 symbol bufsubr;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 647 283 pd init;
-#X msg 514 262 vasp bufsubr;
-#X obj 51 19 cnv 15 15 15 empty empty vasp.!- 0 10 1 14 -262144 -1
-0;
-#X obj 52 236 vasp.update;
-#X msg 52 136 vasp bufsubr;
-#X obj 50 321 VASP-HELP;
-#X obj 52 168 vasp.osc 4410;
-#X obj 182 135 nbx 5 14 -50 50 0 1 empty empty empty 0 -6 0 10 -24198
--1 -1 0 256;
-#X obj 182 154 * 0.01;
-#X obj 182 193 t b f;
-#X obj 52 213 vasp.!-;
-#X floatatom 182 175 5 0 0;
-#X obj 52 191 vasp.* 0.5;
-#X connect 6 0 0 0;
-#X connect 9 0 11 0;
-#X connect 11 0 17 0;
-#X connect 12 0 13 0;
-#X connect 13 0 16 0;
-#X connect 14 0 9 0;
-#X connect 14 1 15 1;
-#X connect 15 0 8 0;
-#X connect 16 0 14 0;
-#X connect 17 0 15 0;
diff --git a/externals/grill/vasp/pd-help/vasp_sync.pd b/externals/grill/vasp/pd-help/vasp_sync.pd
deleted file mode 100644
index 1da5d849..00000000
--- a/externals/grill/vasp/pd-help/vasp_sync.pd
+++ /dev/null
@@ -1,81 +0,0 @@
-#N canvas 95 103 854 570 10;
-#N canvas 92 108 403 405 inside 0;
-#X obj 87 206 soundfiler;
-#X obj 105 290 s \$0-sample-length;
-#X obj 87 260 s \$0-draw_display;
-#X msg 235 258 resize \$1;
-#X obj 235 211 loadbang;
-#X obj 235 280 s bufsync1;
-#X obj 245 304 s bufsync2;
-#X msg 235 232 88200;
-#X msg 87 184 read -resize \$1 bufsync1;
-#X obj 87 230 t b f f;
-#X obj 87 112 loadbang;
-#X obj 87 160 filelisthandler \$0;
-#X msg 87 138 3;
-#X connect 0 0 9 0;
-#X connect 3 0 5 0;
-#X connect 3 0 6 0;
-#X connect 4 0 7 0;
-#X connect 7 0 3 0;
-#X connect 7 0 1 0;
-#X connect 8 0 0 0;
-#X connect 9 0 2 0;
-#X connect 9 1 1 0;
-#X connect 9 2 3 0;
-#X connect 10 0 12 0;
-#X connect 11 0 8 0;
-#X connect 12 0 11 0;
-#X restore 711 485 pd inside;
-#X obj 463 297 wavedisplay-simple bufsync2 \$0;
-#X obj 463 155 wavedisplay-simple bufsync1 \$0;
-#X obj 75 32 cnv 15 15 15 empty empty vasp.sync 0 10 1 14 -262144 -1
-0;
-#X text 53 64 syncs two or more vasps;
-#X msg 61 253 vasp bufsync1 bufsync2;
-#X obj 61 284 vasp.cfft;
-#X obj 122 335 vasp.= 0;
-#X obj 334 440 tabplay~ bufsync1;
-#X obj 353 460 tabplay~ bufsync2;
-#X obj 334 484 dac~;
-#X obj 61 409 vasp.update;
-#N canvas 0 0 413 295 clear_buffers 0;
-#X obj 49 73 vasp.= 0;
-#X obj 49 49 inlet;
-#X obj 49 97 vasp.u;
-#X obj 49 118 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 2 0;
-#X connect 1 0 0 0;
-#X connect 2 0 3 0;
-#X restore 149 483 pd clear_buffers;
-#X obj 61 431 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X obj 122 313 vasp.upper;
-#X obj 61 388 vasp.c!fft;
-#X msg 149 457 vasp bufsync1 bufsync2;
-#X text 709 137 bufsync1;
-#X text 713 281 bufsync2;
-#X obj 61 366 vasp.sync 2;
-#X text 54 79 vasp.sync waits until all inlets have received a vasp
-and then outputs them and resets its status;
-#X text 143 365 outputs vasps after every inlet received one;
-#X obj 60 156 filelist \$0;
-#X obj 334 416 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X text 356 413 play;
-#X text 55 111 argument: number of vasps to be synced (default 2);
-#X obj 48 525 VASP-HELP;
-#X connect 5 0 6 0;
-#X connect 6 0 14 0;
-#X connect 6 0 19 0;
-#X connect 7 0 19 1;
-#X connect 8 0 10 0;
-#X connect 9 0 10 1;
-#X connect 11 0 13 0;
-#X connect 14 0 7 0;
-#X connect 15 0 11 0;
-#X connect 16 0 12 0;
-#X connect 19 0 15 0;
-#X connect 23 0 9 0;
-#X connect 23 0 8 0;
diff --git a/externals/grill/vasp/pd-help/vasp_tilt.pd b/externals/grill/vasp/pd-help/vasp_tilt.pd
deleted file mode 100644
index eb80e3b3..00000000
--- a/externals/grill/vasp/pd-help/vasp_tilt.pd
+++ /dev/null
@@ -1,100 +0,0 @@
-#N canvas 21 60 945 604 10;
-#X obj 55 36 cnv 15 15 15 empty empty vasp.tilt 0 10 1 14 -262144 -1
-0;
-#N canvas 0 0 261 214 clear_buffer 0;
-#X obj 49 73 vasp.= 0;
-#X obj 49 49 inlet;
-#X obj 49 97 vasp.u;
-#X obj 49 118 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 2 0;
-#X connect 1 0 0 0;
-#X connect 2 0 3 0;
-#X restore 672 527 pd clear_buffer;
-#X obj 51 533 VASP-HELP;
-#N canvas 0 0 450 300 graph1 0;
-#X array buftilt1 100 float 1;
-#A 0 0.32 0.32 0.74 0.2 -0.0400002 -0.24 -0.48 -0.0400002 0.2 0.36
-0.0199998 -0.1 -0.18 -0.24 -0.2 -0.0800002 -0.0600002 0.14 -0.0400002
--0.2 0.0399998 0.0399998 0.0399998 0.0599998 0.0799999 0.0899999 0.0999999
-0.14 0.18 0.24 0.28 0.32 0.38 0.42 0.48 0.5 0.5 0.44 0.36 0.2 0.0599998
--0.0600002 -0.2 -0.34 -0.44 -0.44 -0.46 -0.4 -0.34 -0.24 -0.12 -0.1
--0.2 -0.28 -0.36 -0.44 -0.48 -0.48 -0.48 -0.48 -0.46 -0.44 -0.52 -0.52
--0.48 -0.4 0.46 0.46 0.46 0.46 0.46 0.44 0.34 0.2 0.0999999 -1.3411e-007
--0.0800002 -0.12 -0.13 -0.14 -0.16 -0.14 -0.0600002 0.56 0.58 0.6 0.6
-0.52 0.44 0.36 0.26 -0.72 0.22 0.68 0.74 0.76 0.66 0.66 0.76 0.82;
-#X coords 0 1 99 -1 300 100 1;
-#X restore 561 61 graph;
-#N canvas 0 0 433 215 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 1 10 \; \$1 xlabel 1.1 0 20 40 60 80 100
-\; \$1 yticks 0 0.25 2 \; \$1 ylabel 105 -1 -0.5 0 0.5 1;
-#X msg 33 45 symbol buftilt1 \, symbol buftilt2;
-#X obj 295 27 loadbang;
-#X obj 295 71 s \$0-ratio;
-#X msg 295 49 1.5;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X connect 3 0 5 0;
-#X connect 5 0 4 0;
-#X restore 811 524 pd init;
-#N canvas 0 0 450 300 graph1 0;
-#X array buftilt2 100 float 0;
-#X coords 0 1 99 -1 300 100 1;
-#X restore 564 202 graph;
-#X text 501 55 SOURCE;
-#X obj 394 358 pack;
-#X obj 394 332 t b f;
-#X text 331 285 ratio;
-#X text 197 422 needs one or two args;
-#X text 198 439 ratio \, center;
-#X text 231 284 edge;
-#X text 243 168 none;
-#X text 244 195 linear;
-#X text 231 261 zero (default);
-#X text 243 220 4 point (default);
-#X text 243 141 in place (dirty);
-#X obj 127 447 vasp.u;
-#X obj 127 421 vasp.tilt;
-#X obj 394 309 nbx 5 14 -1000 1000 0 1 empty empty empty 0 -6 0 10
--24198 -1 -1 54 256;
-#X obj 331 309 nbx 5 14 -3 3 0 0 empty \$0-ratio empty 0 -6 576 10
--24198 -1 -1 1.5 256;
-#X text 394 285 center sample;
-#X msg 181 262 fill 0;
-#X msg 181 288 fill 1;
-#X msg 183 142 inter 0;
-#X msg 183 168 inter 1;
-#X msg 183 194 inter 2;
-#X msg 183 220 inter 3;
-#X obj 36 160 bng 15 250 50 0 empty \$0-trigger empty 0 -6 576 8 -262144
--1 -1;
-#X obj 394 399 bng 15 250 50 0 \$0-trigger empty empty 0 -6 1152 8
--262144 -1 -1;
-#X msg 36 179 vasp buftilt1;
-#X obj 36 205 vasp.-> buftilt2;
-#X msg 672 501 vasp buftilt2;
-#X text 55 86 optional argument/right inlet: list of ratio and center
-sample;
-#X obj 160 493 vasp.xtilt;
-#X text 56 492 related object:;
-#X text 55 63 resample buffer data around a center sample;
-#X obj 394 379 t b l;
-#X connect 7 0 38 0;
-#X connect 8 0 7 0;
-#X connect 8 1 7 1;
-#X connect 19 0 18 0;
-#X connect 20 0 8 0;
-#X connect 21 0 7 0;
-#X connect 23 0 19 0;
-#X connect 24 0 19 0;
-#X connect 25 0 19 0;
-#X connect 26 0 19 0;
-#X connect 27 0 19 0;
-#X connect 28 0 19 0;
-#X connect 29 0 31 0;
-#X connect 31 0 32 0;
-#X connect 32 1 19 0;
-#X connect 33 0 1 0;
-#X connect 38 0 30 0;
-#X connect 38 1 19 1;
diff --git a/externals/grill/vasp/pd-help/vasp_update.pd b/externals/grill/vasp/pd-help/vasp_update.pd
deleted file mode 100644
index ce47a313..00000000
--- a/externals/grill/vasp/pd-help/vasp_update.pd
+++ /dev/null
@@ -1,36 +0,0 @@
-#N canvas 213 175 703 499 10;
-#X msg 62 292 vasp bufup;
-#X obj 62 313 vasp.= 0;
-#X text 145 226 update the graphics;
-#X text 136 125 generate a sine wave;
-#X obj 62 185 vasp.osc 22050;
-#X obj 58 41 cnv 15 15 15 empty empty vasp.update 0 10 1 14 -262144
--1 0;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufup 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 347 141 graph;
-#N canvas 0 0 396 272 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 4410 10 \; \$1 xlabel 1.1 0 22050 44100
-66150 88200 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 94000 -1 -0.5 0 0.5
-1;
-#X msg 33 45 symbol bufup;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 607 383 pd init;
-#X obj 62 227 vasp.update;
-#X msg 62 125 vasp bufup;
-#X obj 62 374 vasp.u;
-#X msg 62 351 vasp bufup;
-#X obj 57 424 VASP-HELP;
-#X text 58 92 use vasp.update at the end of a chain of vasp operations
-;
-#X text 57 69 updates the graphic display of the array;
-#X text 145 291 set the buffer to zero;
-#X text 147 345 and display the changes;
-#X text 114 374 (abbreviation);
-#X connect 0 0 1 0;
-#X connect 4 0 8 0;
-#X connect 9 0 4 0;
-#X connect 11 0 10 0;
diff --git a/externals/grill/vasp/pd-help/vasp_v.pd b/externals/grill/vasp/pd-help/vasp_v.pd
deleted file mode 100644
index 6f5e1452..00000000
--- a/externals/grill/vasp/pd-help/vasp_v.pd
+++ /dev/null
@@ -1,50 +0,0 @@
-#N canvas 44 85 957 492 10;
-#X obj 58 31 cnv 15 15 15 empty empty vasp 0 10 1 14 -262144 -1 0;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufvasp1 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 594 161 graph;
-#N canvas 0 0 396 220 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 4410 10 \; \$1 xlabel 1.1 0 22050 44100
-66150 88200 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 94000 -1 -0.5 0 0.5
-1;
-#X msg 33 45 symbol bufvasp1;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 818 420 pd init;
-#X obj 57 375 vasp.update;
-#X obj 57 354 vasp.noise;
-#X text 57 66 stores and outputs a vasp;
-#X obj 58 231 vasp.update;
-#X obj 58 205 vasp.= 0.35;
-#X obj 58 174 vasp 50000 bufvasp1 10000;
-#X obj 57 332 vasp;
-#X msg 101 287 set vasp 2000 bufvasp1 66666;
-#X msg 125 310 vasp 2000 bufvasp1 11111;
-#X text 58 83 syntax: vasp [length] [name] [offset] [channel] \, etc.
-;
-#X obj 58 146 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
--1;
-#X obj 57 286 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
--1;
-#X text 231 169 output vasp referencing a buffer region;
-#X text 231 183 with length of 50000 and starting at frame 10000;
-#X text 231 208 set region to value 0.35;
-#X text 230 232 update graphics;
-#X text 231 149 <-- click to start command chain;
-#X text 292 287 1 use "set" to define region non triggering \, then
-bang;
-#X text 291 307 2 right inlet: alternatively to set message;
-#X text 230 362 bang triggers output of predefined vasp;
-#X text 56 101 (see syntax description of vasp message in VASP-HELP)
-;
-#X obj 59 429 VASP-HELP;
-#X connect 4 0 3 0;
-#X connect 7 0 6 0;
-#X connect 8 0 7 0;
-#X connect 9 0 4 0;
-#X connect 10 0 9 0;
-#X connect 11 0 9 1;
-#X connect 13 0 8 0;
-#X connect 14 0 9 0;
diff --git a/externals/grill/vasp/pd-help/vasp_valleys.pd b/externals/grill/vasp/pd-help/vasp_valleys.pd
deleted file mode 100644
index f2a11fab..00000000
--- a/externals/grill/vasp/pd-help/vasp_valleys.pd
+++ /dev/null
@@ -1,86 +0,0 @@
-#N canvas 36 36 847 582 10;
-#X obj 71 32 cnv 15 15 15 empty empty vasp.valleys 0 10 1 14 -262144
--1 0;
-#X obj 71 131 filelist \$0;
-#N canvas 92 108 424 389 inside 0;
-#X obj 66 169 soundfiler;
-#X obj 84 253 s \$0-sample-length;
-#X obj 66 223 s \$0-draw_display;
-#X msg 214 221 resize \$1;
-#X obj 66 47 loadbang;
-#X obj 66 193 t b f f;
-#X obj 66 113 filelisthandler \$0;
-#X msg 66 91 2;
-#X obj 66 69 t b b;
-#X msg 99 91 88200;
-#X msg 66 145 read \$1 bufvalleys1;
-#X obj 214 243 s bufvalleys1;
-#X obj 225 264 s bufvalleys2;
-#X connect 0 0 5 0;
-#X connect 3 0 11 0;
-#X connect 3 0 12 0;
-#X connect 4 0 8 0;
-#X connect 5 0 2 0;
-#X connect 5 1 1 0;
-#X connect 5 2 3 0;
-#X connect 6 0 10 0;
-#X connect 7 0 6 0;
-#X connect 8 0 7 0;
-#X connect 8 1 9 0;
-#X connect 9 0 5 0;
-#X connect 10 0 0 0;
-#X restore 668 495 pd inside;
-#N canvas 40 55 281 170 clear_buffers 0;
-#X obj 54 79 vasp.update;
-#X obj 54 56 vasp.= 0;
-#X obj 54 26 inlet;
-#X obj 54 108 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 3 0;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X restore 485 495 pd clear_buffers;
-#X obj 60 292 vasp.update;
-#X obj 58 433 vasp.update;
-#X obj 58 453 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X obj 60 312 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X obj 337 495 dac~;
-#X obj 337 457 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X text 358 455 play;
-#X text 69 52 find the local minima of a buffer content;
-#X text 70 66 argument/right inlet: density value 0-1;
-#X obj 446 118 wavedisplay-simple bufvalleys1 \$0;
-#X obj 60 252 vasp.= bufvalleys1;
-#X text 183 231 copy to new buffer \, find valleys;
-#X msg 60 232 vasp bufvalleys2;
-#X floatatom 163 312 12 0 0;
-#X obj 60 272 vasp.valleys 0.001;
-#X obj 163 333 * 88200;
-#X obj 337 475 tabplay~ bufvalleys1;
-#X floatatom 163 355 5 0 0;
-#X obj 447 272 wavedisplay-simple bufvalleys2 \$0;
-#X obj 58 412 vasp.opt;
-#X msg 58 391 vasp bufvalleys2;
-#X msg 485 475 vasp bufvalleys1 bufvalleys2;
-#X text 718 100 source;
-#X text 712 253 valleys;
-#X text 69 81 outlet: current density value;
-#X text 185 389 optimize the buffer content;
-#X obj 44 530 VASP-HELP;
-#X connect 4 0 7 0;
-#X connect 5 0 6 0;
-#X connect 9 0 20 0;
-#X connect 14 0 18 0;
-#X connect 16 0 14 0;
-#X connect 17 0 19 0;
-#X connect 18 0 4 0;
-#X connect 18 1 17 0;
-#X connect 19 0 21 0;
-#X connect 20 0 8 0;
-#X connect 20 0 8 1;
-#X connect 23 0 5 0;
-#X connect 24 0 23 0;
-#X connect 25 0 3 0;
diff --git a/externals/grill/vasp/pd-help/vasp_vector.pd b/externals/grill/vasp/pd-help/vasp_vector.pd
deleted file mode 100644
index 9a669067..00000000
--- a/externals/grill/vasp/pd-help/vasp_vector.pd
+++ /dev/null
@@ -1,31 +0,0 @@
-#N canvas 300 150 599 451 10;
-#X obj 51 19 cnv 15 15 15 empty empty vasp.n 0 10 1 14 -262144 -1 0
-;
-#X text 53 55 get a vector of a vasp;
-#X text 53 79 argument/right inlet: index of vector;
-#X obj 58 193 prepend set;
-#X obj 175 166 vasp.n 1;
-#X obj 175 193 prepend set;
-#X obj 54 356 VASP-HELP;
-#X text 445 161 index starts at 0;
-#X obj 315 313 table bufn1;
-#X obj 315 335 table bufn2;
-#X obj 315 357 table bufn3;
-#X msg 58 121 vasp bufn1 bufn2 bufn3;
-#X obj 58 166 vasp.n 0;
-#X obj 300 193 prepend set;
-#X msg 300 219;
-#X msg 175 219;
-#X msg 58 220;
-#X obj 300 166 vasp.n 2;
-#X obj 154 308 vasp.n;
-#X text 58 310 abbreviation:;
-#X connect 3 0 16 0;
-#X connect 4 0 5 0;
-#X connect 5 0 15 0;
-#X connect 11 0 4 0;
-#X connect 11 0 12 0;
-#X connect 11 0 17 0;
-#X connect 12 0 3 0;
-#X connect 13 0 14 0;
-#X connect 17 0 13 0;
diff --git a/externals/grill/vasp/pd-help/vasp_vectors.pd b/externals/grill/vasp/pd-help/vasp_vectors.pd
deleted file mode 100644
index e93cbbb0..00000000
--- a/externals/grill/vasp/pd-help/vasp_vectors.pd
+++ /dev/null
@@ -1,13 +0,0 @@
-#N canvas 257 69 509 282 10;
-#X text 52 66 get the number of vectors of a vasp;
-#X obj 51 19 cnv 15 15 15 empty empty vasp.n? 0 10 1 14 -262144 -1
-0;
-#X obj 57 169 cnv 15 44 17 empty empty empty 20 12 0 14 -258699 -66577
-0;
-#X floatatom 57 218 0 0 0;
-#X msg 57 112 vasp bufn?1;
-#X msg 137 112 vasp bufn?1 bufn?2 bufn?3;
-#X obj 57 169 vasp.n?;
-#X connect 4 0 6 0;
-#X connect 5 0 6 0;
-#X connect 6 0 3 0;
diff --git a/externals/grill/vasp/pd-help/vasp_window.pd b/externals/grill/vasp/pd-help/vasp_window.pd
deleted file mode 100644
index eefd92cf..00000000
--- a/externals/grill/vasp/pd-help/vasp_window.pd
+++ /dev/null
@@ -1,62 +0,0 @@
-#N canvas 44 117 891 565 10;
-#X obj 62 41 cnv 15 15 15 empty empty vasp.window 0 10 1 14 -262144
--1 0;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufwindow 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 512 119 graph;
-#N canvas 0 0 404 280 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 4410 10 \; \$1 xlabel 1.1 0 22050 44100
-66150 88200 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 94000 -1 -0.5 0 0.5
-1;
-#X msg 33 45 symbol bufwindow;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 771 320 pd init;
-#N canvas 0 0 194 221 clear_buffers 0;
-#X obj 49 73 vasp.= 0;
-#X obj 49 49 inlet;
-#X obj 49 97 vasp.u;
-#X obj 49 118 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 2 0;
-#X connect 1 0 0 0;
-#X connect 2 0 3 0;
-#X restore 569 325 pd clear_buffers;
-#X text 173 149 generate a function;
-#X obj 63 495 VASP-HELP;
-#X msg 569 301 vasp bufwindow;
-#X msg 61 149 vasp bufwindow;
-#X obj 61 278 vasp.u;
-#X floatatom 194 186 5 0 0;
-#X text 259 185 0..4;
-#X msg 231 215 lin;
-#X msg 231 240 sin;
-#X msg 231 265 hanning;
-#X msg 231 290 hamming;
-#X msg 231 315 blackman;
-#X text 275 214 0;
-#X text 275 236 1;
-#X text 295 260 2;
-#X text 300 289 3;
-#X text 300 316 4;
-#X obj 132 426 vasp.*window;
-#X obj 225 401 vasp.!window;
-#X text 60 396 see also:;
-#X obj 322 426 vasp.*xwindow;
-#X obj 225 426 vasp.*!window;
-#X obj 61 226 vasp.window lin;
-#X text 60 80 generate window functions;
-#X obj 322 401 vasp.xwindow;
-#X text 60 104 argument/right inlet: name or number of name (def linear)
-;
-#X connect 6 0 3 0;
-#X connect 7 0 26 0;
-#X connect 9 0 26 1;
-#X connect 11 0 26 1;
-#X connect 12 0 26 1;
-#X connect 13 0 26 1;
-#X connect 14 0 26 1;
-#X connect 15 0 26 1;
-#X connect 26 0 8 0;
diff --git a/externals/grill/vasp/pd-help/vasp_xmirr.pd b/externals/grill/vasp/pd-help/vasp_xmirr.pd
deleted file mode 100644
index 863ecfaa..00000000
--- a/externals/grill/vasp/pd-help/vasp_xmirr.pd
+++ /dev/null
@@ -1,86 +0,0 @@
-#N canvas 48 7 827 616 10;
-#N canvas 92 108 411 413 inside 0;
-#X obj 66 154 soundfiler;
-#X obj 84 238 s \$0-sample-length;
-#X obj 66 208 s \$0-draw_display;
-#X msg 214 206 resize \$1;
-#X obj 67 53 loadbang;
-#X obj 66 178 t b f f;
-#X obj 67 101 filelisthandler \$0;
-#X msg 67 133 read -resize \$1 bufxmirr1;
-#X obj 214 228 s bufxmirr1;
-#X obj 224 252 s bufxmirr2;
-#X msg 67 79 4;
-#X connect 0 0 5 0;
-#X connect 3 0 8 0;
-#X connect 3 0 9 0;
-#X connect 4 0 10 0;
-#X connect 5 0 2 0;
-#X connect 5 1 1 0;
-#X connect 5 2 3 0;
-#X connect 6 0 7 0;
-#X connect 7 0 0 0;
-#X connect 10 0 6 0;
-#X restore 643 547 pd inside;
-#X obj 79 100 filelist \$0;
-#X obj 69 234 vasp.cfft;
-#X obj 327 546 dac~;
-#N canvas 0 0 413 295 clear_buffers 0;
-#X obj 49 73 vasp.= 0;
-#X obj 49 49 inlet;
-#X obj 49 97 vasp.u;
-#X obj 49 118 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 2 0;
-#X connect 1 0 0 0;
-#X connect 2 0 3 0;
-#X restore 461 546 pd clear_buffers;
-#X obj 327 503 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X text 349 500 play;
-#X text 461 501 clear;
-#X obj 75 32 cnv 15 15 15 empty empty vasp.xmirr 0 10 1 14 -262144
--1 0;
-#X text 75 52 mirrors a vasp symmetrical;
-#X obj 472 303 wavedisplay-simple bufxmirr2 \$0;
-#X obj 472 150 wavedisplay-simple bufxmirr1 \$0;
-#X msg 69 213 vasp bufxmirr1 bufxmirr2;
-#X obj 69 298 vasp.update;
-#X obj 69 319 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X obj 69 277 vasp.= 0;
-#X obj 69 256 vasp.upper;
-#X msg 461 523 vasp bufxmirr1 bufxmirr2;
-#X obj 69 484 vasp.update;
-#X obj 69 507 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X msg 69 440 vasp bufxmirr1 bufxmirr2;
-#X obj 69 461 vasp.cfft;
-#X obj 327 523 tabplay~ bufxmirr1;
-#X obj 69 393 vasp.update;
-#X obj 69 414 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X msg 69 351 vasp bufxmirr1 bufxmirr2;
-#X obj 69 372 vasp.xmirr;
-#X obj 57 574 VASP-HELP;
-#X text 332 88 revert the frequency spectrum;
-#X text 332 103 of the example sound;
-#X text 249 226 and clear upper part;
-#X text 247 351 2 revert spectrum;
-#X text 245 440 3 inverse fourier transform;
-#X text 248 209 1 fourier transform;
-#X connect 2 0 16 0;
-#X connect 5 0 22 0;
-#X connect 12 0 2 0;
-#X connect 13 0 14 0;
-#X connect 15 0 13 0;
-#X connect 16 0 15 0;
-#X connect 17 0 4 0;
-#X connect 18 0 19 0;
-#X connect 20 0 21 0;
-#X connect 21 0 18 0;
-#X connect 22 0 3 0;
-#X connect 22 0 3 1;
-#X connect 23 0 24 0;
-#X connect 25 0 26 0;
-#X connect 26 0 23 0;
diff --git a/externals/grill/vasp/pd-help/vasp_xrot.pd b/externals/grill/vasp/pd-help/vasp_xrot.pd
deleted file mode 100644
index 95b0ed02..00000000
--- a/externals/grill/vasp/pd-help/vasp_xrot.pd
+++ /dev/null
@@ -1,48 +0,0 @@
-#N canvas 24 75 779 480 10;
-#X obj 75 32 cnv 15 15 15 empty empty vasp.xrot 0 10 1 14 -262144 -1
-0;
-#X text 445 307 clear;
-#N canvas 0 0 413 295 clear_buffer 0;
-#X obj 49 73 vasp.= 0;
-#X obj 49 49 inlet;
-#X obj 49 97 vasp.u;
-#X obj 49 118 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 2 0;
-#X connect 1 0 0 0;
-#X connect 2 0 3 0;
-#X restore 445 352 pd clear_buffer;
-#X text 72 73 optional argument/right inlet: value;
-#X text 71 60 rotate buffer content;
-#X msg 445 329 vasp bufxrot;
-#X obj 68 333 vasp.update;
-#X floatatom 129 281 0 0 0;
-#X msg 68 257 vasp bufxrot;
-#X obj 56 436 VASP-HELP;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufxrot 100 float 0;
-#X coords 0 1 99 -1 300 100 1;
-#X restore 436 125 graph;
-#N canvas 488 326 314 207 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 1 10 \; \$1 xlabel 1.1 0 20 40 60 80 100
-\; \$1 yticks 0 0.25 2 \; \$1 ylabel 105 -1 -0.5 0 0.5 1;
-#X msg 33 45 symbol bufxrot;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 683 355 pd init;
-#X obj 69 195 vasp.u;
-#X obj 69 172 vasp.= env 1 0 -1 10 0 50 -1 90 1 99;
-#X msg 69 150 vasp bufxrot;
-#X text 197 148 1 create envelope;
-#X obj 68 305 vasp.xrot 6;
-#X text 197 251 2 rotate symmetrically;
-#X text 54 387 related objects:;
-#X obj 179 388 vasp.xshift;
-#X obj 259 388 vasp.rot;
-#X connect 5 0 2 0;
-#X connect 7 0 16 1;
-#X connect 8 0 16 0;
-#X connect 13 0 12 0;
-#X connect 14 0 13 0;
-#X connect 16 0 6 0;
diff --git a/externals/grill/vasp/pd-help/vasp_xshift.pd b/externals/grill/vasp/pd-help/vasp_xshift.pd
deleted file mode 100644
index 121e43d2..00000000
--- a/externals/grill/vasp/pd-help/vasp_xshift.pd
+++ /dev/null
@@ -1,57 +0,0 @@
-#N canvas 24 75 858 509 10;
-#X obj 75 32 cnv 15 15 15 empty empty vasp.xshift 0 10 1 14 -262144
--1 0;
-#X text 463 343 clear;
-#N canvas 0 0 413 295 clear_buffer 0;
-#X obj 49 73 vasp.= 0;
-#X obj 49 49 inlet;
-#X obj 49 97 vasp.u;
-#X obj 49 118 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 2 0;
-#X connect 1 0 0 0;
-#X connect 2 0 3 0;
-#X restore 463 388 pd clear_buffer;
-#X text 72 73 optional argument/right inlet: value;
-#X msg 463 365 vasp bufxshift;
-#X text 71 60 shifts buffer content symmetrically;
-#X obj 68 333 vasp.update;
-#X floatatom 141 279 0 0 0;
-#X msg 68 236 vasp bufxshift;
-#X obj 59 429 VASP-HELP;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufxshift 100 float 0;
-#X coords 0 1 99 -1 300 100 1;
-#X restore 436 125 graph;
-#N canvas 488 326 312 205 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 1 10 \; \$1 xlabel 1.1 0 20 40 60 80 100
-\; \$1 yticks 0 0.25 2 \; \$1 ylabel 105 -1 -0.5 0 0.5 1;
-#X msg 33 45 symbol bufxshift;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 683 355 pd init;
-#X obj 68 305 vasp.xshift 9;
-#X obj 69 195 vasp.u;
-#X msg 69 150 vasp bufxshift;
-#X obj 69 172 vasp.= env 1 0 -1 10 0 50 -1 90 1 99;
-#X text 197 148 1 create envelope;
-#X text 196 230 2 shift symmetrically;
-#X obj 262 403 vasp.xrot;
-#X text 57 402 related objects:;
-#X obj 182 403 vasp.xshift;
-#X msg 225 278 fill 0;
-#X msg 225 298 fill 1;
-#X msg 225 318 fill 2;
-#X text 271 278 no filling;
-#X text 270 318 fill with edge-value;
-#X text 271 298 zero filling (default);
-#X connect 4 0 2 0;
-#X connect 7 0 12 1;
-#X connect 8 0 12 0;
-#X connect 12 0 6 0;
-#X connect 14 0 15 0;
-#X connect 15 0 13 0;
-#X connect 21 0 12 0;
-#X connect 22 0 12 0;
-#X connect 23 0 12 0;
diff --git a/externals/grill/vasp/pd-help/vasp_xtilt.pd b/externals/grill/vasp/pd-help/vasp_xtilt.pd
deleted file mode 100644
index c42c69e1..00000000
--- a/externals/grill/vasp/pd-help/vasp_xtilt.pd
+++ /dev/null
@@ -1,107 +0,0 @@
-#N canvas 21 60 881 576 10;
-#X obj 55 36 cnv 15 15 15 empty empty vasp.xtilt 0 10 1 14 -262144
--1 0;
-#N canvas 0 0 261 214 clear_buffer 0;
-#X obj 49 73 vasp.= 0;
-#X obj 49 49 inlet;
-#X obj 49 97 vasp.u;
-#X obj 49 118 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 2 0;
-#X connect 1 0 0 0;
-#X connect 2 0 3 0;
-#X restore 575 494 pd clear_buffer;
-#X text 177 472 <-- click to open more examples;
-#X obj 51 533 VASP-HELP;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufxtilt1 100 float 1;
-#A 0 1 -0.113512 0.171341 0.733251 -0.444804 0.13461 0.0181519 0.0751111
--0.291489 -0.0661841 0.0808672 0.10525 -0.0372648 0.00712331 0.0321534
-0.00104712 -0.0797996 -0.0100332 0.038871 -0.00962814 -0.00245443 -0.0208043
-0.0418052 -0.0442626 -0.010092 -0.000713352 0.0310329 -0.0158379 -0.0325648
-0.0180381 -0.0174225 -0.0255639 -0.0137052 0.0219752 -0.00454053 -0.0387019
--0.00129492 -0.00332361 -6.52102e-005 -0.0333087 0.00495665 0.00179575
--0.0311061 -0.0221767 -0.00117427 0.000104884 -0.033587 -0.00918416
-0.00931789 -0.0172503 -0.0146257 0.0200174 0.00741167 -9.19656e-005
--0.0248526 0.0180017 0.0184785 -0.000738001 0.00187258 0.0148586 0.0289194
--0.0124819 0.000630443 0.0266685 0.0156491 0.0058523 0.0141721 0.0336186
--0.00179237 -0.00582341 0.0232202 0.0428296 0.0249123 -0.00400539 0.0269429
-0.0367591 0.000278026 0.0241991 0.039058 0.0259654 -0.015077 0.0321762
-0.0799587 -0.035893 0.038519 0.024746 0.189796 -0.054207 -0.0128485
--0.0301806 0.0762237 0.106943 0.0307454 0.226911 -0.221356 0.172835
-0.0519878 0.4068 -0.293863 -0.035514;
-#X coords 0 1 99 -1 300 100 1;
-#X restore 481 75 graph;
-#N canvas 0 0 435 217 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 1 10 \; \$1 xlabel 1.1 0 20 40 60 80 100
-\; \$1 yticks 0 0.25 2 \; \$1 ylabel 105 -1 -0.5 0 0.5 1;
-#X obj 295 27 loadbang;
-#X obj 295 71 s \$0-ratio;
-#X msg 33 45 symbol bufxtilt1 \, symbol bufxtilt2;
-#X msg 295 49 1.5;
-#X connect 0 0 4 0;
-#X connect 2 0 5 0;
-#X connect 4 0 1 0;
-#X connect 5 0 3 0;
-#X restore 712 492 pd init;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufxtilt2 100 float 0;
-#X coords 0 1 99 -1 300 100 1;
-#X restore 483 205 graph;
-#X text 420 58 SOURCE;
-#X obj 344 357 pack;
-#X obj 344 331 t b f;
-#X text 281 284 ratio;
-#X text 201 404 needs one or two args;
-#X text 201 427 ratio \, center;
-#X text 236 264 edge;
-#X text 243 144 none;
-#X text 243 173 linear;
-#X text 236 241 zero (default);
-#X text 242 199 4 point (default);
-#X text 243 121 in place (dirty);
-#X obj 128 435 vasp.u;
-#X obj 344 308 nbx 5 14 -1000 1000 0 0 empty empty empty 0 -6 0 10
--24198 -1 -1 0 256;
-#X obj 281 308 nbx 5 14 -3 3 0 0 empty \$0-ratio empty 0 -6 576 10
--24198 -1 -1 1.5 256;
-#X text 344 284 center sample;
-#X msg 181 242 fill 0;
-#X msg 181 268 fill 1;
-#X msg 183 122 inter 0;
-#X msg 183 148 inter 1;
-#X msg 183 174 inter 2;
-#X msg 183 200 inter 3;
-#X obj 36 135 bng 15 250 50 0 empty \$0-trigger empty 0 -6 576 8 -262144
--1 -1;
-#X obj 344 401 bng 15 250 50 0 \$0-trigger empty empty 0 -6 1152 8
--262144 -1 -1;
-#X text 55 82 optional argument/right inlet: list of ratio and center
-sample;
-#X obj 53 473 xtilt_example;
-#X text 575 444 clear;
-#X msg 575 468 vasp bufxtilt2;
-#X text 55 59 resample buffer data symmetrically;
-#X msg 36 159 vasp bufxtilt1;
-#X obj 36 185 vasp.-> bufxtilt2;
-#X obj 128 409 vasp.xtilt;
-#X obj 344 379 t b l;
-#X connect 8 0 39 0;
-#X connect 9 0 8 0;
-#X connect 9 1 8 1;
-#X connect 20 0 9 0;
-#X connect 21 0 8 0;
-#X connect 23 0 38 0;
-#X connect 24 0 38 0;
-#X connect 25 0 38 0;
-#X connect 26 0 38 0;
-#X connect 27 0 38 0;
-#X connect 28 0 38 0;
-#X connect 29 0 36 0;
-#X connect 34 0 1 0;
-#X connect 36 0 37 0;
-#X connect 37 1 38 0;
-#X connect 38 0 19 0;
-#X connect 39 0 30 0;
-#X connect 39 1 38 1;
diff --git a/externals/grill/vasp/pd-help/vasp_xwindow.pd b/externals/grill/vasp/pd-help/vasp_xwindow.pd
deleted file mode 100644
index 7d6e4179..00000000
--- a/externals/grill/vasp/pd-help/vasp_xwindow.pd
+++ /dev/null
@@ -1,61 +0,0 @@
-#N canvas 58 39 897 607 10;
-#X obj 62 41 cnv 15 15 15 empty empty vasp.xwindow 0 10 1 14 -262144
--1 0;
-#N canvas 0 0 450 300 graph1 0;
-#X array bufxwindow 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 512 119 graph;
-#N canvas 0 0 406 282 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 73 \; \$1 xticks 0 4410 10 \; \$1 xlabel 1.1 0 22050 44100
-66150 88200 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 94000 -1 -0.5 0 0.5
-1;
-#X msg 33 45 symbol bufxwindow;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 771 320 pd init;
-#N canvas 0 0 194 221 clear_buffers 0;
-#X obj 49 73 vasp.= 0;
-#X obj 49 49 inlet;
-#X obj 49 97 vasp.u;
-#X obj 49 118 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 2 0;
-#X connect 1 0 0 0;
-#X connect 2 0 3 0;
-#X restore 569 326 pd clear_buffers;
-#X text 173 148 generate a function;
-#X obj 60 503 VASP-HELP;
-#X msg 61 149 vasp bufxwindow;
-#X msg 569 301 vasp bufxwindow;
-#X obj 61 278 vasp.u;
-#X floatatom 194 186 5 0 0;
-#X text 259 185 0..4;
-#X msg 231 215 lin;
-#X msg 231 240 sin;
-#X msg 231 265 hanning;
-#X msg 231 290 hamming;
-#X msg 231 315 blackman;
-#X text 275 214 0;
-#X text 275 236 1;
-#X text 295 260 2;
-#X text 300 289 3;
-#X text 300 316 4;
-#X obj 61 226 vasp.xwindow lin;
-#X obj 132 401 vasp.window;
-#X obj 132 426 vasp.*window;
-#X obj 225 401 vasp.!window;
-#X text 60 396 see also:;
-#X obj 322 426 vasp.*xwindow;
-#X obj 225 426 vasp.*!window;
-#X text 60 104 argument/right inlet: name or number of name;
-#X text 60 80 generate window functions;
-#X connect 6 0 21 0;
-#X connect 7 0 3 0;
-#X connect 9 0 21 1;
-#X connect 11 0 21 1;
-#X connect 12 0 21 1;
-#X connect 13 0 21 1;
-#X connect 14 0 21 1;
-#X connect 15 0 21 1;
-#X connect 21 0 8 0;
diff --git a/externals/grill/vasp/pd-test/granular1.pd b/externals/grill/vasp/pd-test/granular1.pd
deleted file mode 100644
index 2ef369f9..00000000
--- a/externals/grill/vasp/pd-test/granular1.pd
+++ /dev/null
@@ -1,341 +0,0 @@
-#N canvas 62 0 630 495 10;
-#N canvas 0 0 450 300 graph34 0;
-#X array insert 128 float 1;
-#A 0 1 0.995185 0.980785 0.95694 0.92388 0.881921 0.83147 0.77301 0.707107
-0.634393 0.55557 0.471397 0.382683 0.290285 0.19509 0.0980171 -3.82859e-016
--0.0980171 -0.19509 -0.290285 -0.382683 -0.471397 -0.55557 -0.634393
--0.707107 -0.77301 -0.83147 -0.881921 -0.92388 -0.95694 -0.980785 -0.995185
--1 -0.995185 -0.980785 -0.95694 -0.92388 -0.881921 -0.83147 -0.77301
--0.707107 -0.634393 -0.55557 -0.471397 -0.382683 -0.290285 -0.19509
--0.0980171 7.04487e-016 0.0980171 0.19509 0.290285 0.382683 0.471397
-0.55557 0.634393 0.707107 0.77301 0.83147 0.881921 0.92388 0.95694
-0.980785 0.995185 1 0.995185 0.980785 0.95694 0.92388 0.881921 0.83147
-0.77301 0.707107 0.634393 0.55557 0.471397 0.382683 0.290285 0.19509
-0.0980171 1.00761e-014 -0.0980171 -0.19509 -0.290285 -0.382683 -0.471397
--0.55557 -0.634393 -0.707107 -0.77301 -0.83147 -0.881921 -0.92388 -0.95694
--0.980785 -0.995185 -1 -0.995185 -0.980785 -0.95694 -0.92388 -0.881921
--0.83147 -0.77301 -0.707107 -0.634393 -0.55557 -0.471397 -0.382683
--0.290285 -0.19509 -0.0980171 -1.99685e-014 0.0980171 0.19509 0.290285
-0.382683 0.471397 0.55557 0.634393 0.707107 0.77301 0.83147 0.881921
-0.92388 0.95694 0.980785 0.995185;
-#X coords 0 1 127 -1 200 140 1;
-#X restore 78 68 graph;
-#N canvas 112 314 505 434 player 0;
-#X obj 117 137 tabplay~ schnipparray;
-#X obj 171 245 tabplay~ schnipparray;
-#X obj 250 350 tabplay~ schnipparray;
-#X obj 117 161 throw~ toex;
-#X obj 171 264 throw~ toex;
-#X obj 250 374 throw~ toex;
-#X obj 88 46 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1
-;
-#X obj 88 73 spigot;
-#X obj 85 283 s \$0-part;
-#X obj 143 200 t b b;
-#X obj 222 306 t b b;
-#X obj 88 22 inlet;
-#X msg 114 115 0 128;
-#X msg 171 225 128 128;
-#X msg 251 330 256 128;
-#X obj 89 93 t b b;
-#X msg 222 328 1;
-#X msg 143 225 3;
-#X msg 85 117 2;
-#X connect 0 0 3 0;
-#X connect 0 1 9 0;
-#X connect 1 0 4 0;
-#X connect 1 1 10 0;
-#X connect 2 0 5 0;
-#X connect 2 1 7 0;
-#X connect 6 0 7 1;
-#X connect 6 0 7 0;
-#X connect 7 0 15 0;
-#X connect 9 0 17 0;
-#X connect 9 1 13 0;
-#X connect 10 0 16 0;
-#X connect 10 1 14 0;
-#X connect 11 0 6 0;
-#X connect 12 0 0 0;
-#X connect 13 0 1 0;
-#X connect 14 0 2 0;
-#X connect 15 0 18 0;
-#X connect 15 1 12 0;
-#X connect 16 0 8 0;
-#X connect 17 0 8 0;
-#X connect 18 0 8 0;
-#X restore 204 294 pd player;
-#X obj 204 339 catch~ toex;
-#X obj 204 403 dac~;
-#X floatatom 76 311 0 0 0 0 - - -;
-#X obj 76 271 nbx 5 14 -1e+037 1e+037 0 1 empty empty empty 0 -6 0
-10 -24198 -1 -1 11 256;
-#X text 76 253 density;
-#X obj 76 333 s \$0-density;
-#X obj 204 275 tgl 15 0 empty empty start/stop 0 -6 0 8 -24198 -1 -1
-1 1;
-#X obj 76 290 * 0.001;
-#X floatatom 241 429 0 0 0 0 - - -;
-#X obj 241 407 env~ 32768;
-#N canvas 0 0 392 261 inside 0;
-#X obj 41 63 table positions;
-#N canvas 0 0 478 328 create_schippler 0;
-#X msg 155 114 vasp insert;
-#X obj 155 162 vasp.u;
-#X obj 155 138 vasp.osc 6.4;
-#X msg 66 114 vasp insert;
-#X obj 66 162 vasp.u;
-#X obj 66 138 vasp.osc 64;
-#X msg 251 115 vasp insert;
-#X obj 251 163 vasp.u;
-#X obj 251 139 vasp.osc 2;
-#X text 56 71 create various samples to insert;
-#X msg 63 216 vasp insert;
-#X obj 63 261 vasp.u;
-#X obj 63 239 vasp.window;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X connect 3 0 5 0;
-#X connect 5 0 4 0;
-#X connect 6 0 8 0;
-#X connect 8 0 7 0;
-#X connect 10 0 12 0;
-#X connect 12 0 11 0;
-#X restore 43 113 pd create_schippler;
-#N canvas 0 0 660 348 inserter 0;
-#X obj 48 84 sel 1 2 3;
-#N canvas 2 7 415 675 first_part 0;
-#X obj 48 483 tabread positions;
-#X obj 48 172 vasp.noise;
-#X obj 48 238 vasp.??;
-#X obj 48 192 vasp.abs;
-#X obj 48 215 vasp.< 0.1;
-#X obj 48 262 route list;
-#X text 58 501 insert a soundfile at certain offset-position;
-#X obj 48 547 vasp.+ vasp insert;
-#X obj 48 120 t b b;
-#X obj 126 146 vasp.= 0;
-#X obj 48 70 inlet;
-#X obj 103 192 r \$0-density;
-#X msg 162 326 \; positions resize \$1;
-#X obj 80 362 tabset positions;
-#X obj 48 387 0;
-#X obj 48 411 until;
-#X obj 90 436 + 1;
-#X obj 48 436 0;
-#X msg 72 386 0;
-#X obj 97 310 length;
-#X obj 48 460 t f f;
-#X obj 97 331 t f f;
-#X obj 48 288 t b b l l;
-#X obj 48 149 vasp.! 128;
-#X msg 48 522 vasp 128 schnipparray \$1;
-#X msg 126 125 vasp 128 schnipparray 128;
-#X connect 0 0 24 0;
-#X connect 1 0 3 0;
-#X connect 2 0 5 0;
-#X connect 3 0 4 0;
-#X connect 4 0 2 0;
-#X connect 5 0 22 0;
-#X connect 8 0 23 0;
-#X connect 8 1 25 0;
-#X connect 10 0 8 0;
-#X connect 11 0 4 1;
-#X connect 14 0 15 0;
-#X connect 15 0 17 0;
-#X connect 16 0 17 1;
-#X connect 17 0 20 0;
-#X connect 18 0 17 1;
-#X connect 19 0 21 0;
-#X connect 20 0 0 0;
-#X connect 20 1 16 0;
-#X connect 21 0 14 1;
-#X connect 21 1 12 0;
-#X connect 22 0 14 0;
-#X connect 22 1 18 0;
-#X connect 22 2 13 0;
-#X connect 22 3 19 0;
-#X connect 23 0 1 0;
-#X connect 24 0 7 0;
-#X connect 25 0 9 0;
-#X restore 48 183 pd first_part;
-#N canvas 162 22 383 663 second_part 0;
-#X obj 48 483 tabread positions;
-#X obj 48 172 vasp.noise;
-#X obj 48 238 vasp.??;
-#X obj 48 192 vasp.abs;
-#X obj 48 215 vasp.< 0.1;
-#X obj 48 262 route list;
-#X text 58 501 insert a soundfile at certain offset-position;
-#X text 124 552 fuer drei teilbereiche;
-#X obj 48 586 vasp.+ vasp insert;
-#X obj 48 120 t b b;
-#X obj 126 146 vasp.= 0;
-#X obj 48 70 inlet;
-#X obj 103 192 r \$0-density;
-#X msg 162 323 \; positions resize \$1;
-#X obj 80 359 tabset positions;
-#X obj 48 384 0;
-#X obj 48 408 until;
-#X obj 90 433 + 1;
-#X obj 48 433 0;
-#X msg 72 383 0;
-#X obj 97 307 length;
-#X obj 48 457 t f f;
-#X obj 97 328 t f f;
-#X obj 48 285 t b b l l;
-#X obj 48 148 vasp.! 128;
-#X msg 48 525 vasp 128 schnipparray \$1;
-#X obj 48 551 vasp.o+ 128;
-#X msg 126 124 vasp 128 schnipparray 256;
-#X connect 0 0 25 0;
-#X connect 1 0 3 0;
-#X connect 2 0 5 0;
-#X connect 3 0 4 0;
-#X connect 4 0 2 0;
-#X connect 5 0 23 0;
-#X connect 9 0 24 0;
-#X connect 9 1 27 0;
-#X connect 11 0 9 0;
-#X connect 12 0 4 1;
-#X connect 15 0 16 0;
-#X connect 16 0 18 0;
-#X connect 17 0 18 1;
-#X connect 18 0 21 0;
-#X connect 19 0 18 1;
-#X connect 20 0 22 0;
-#X connect 21 0 0 0;
-#X connect 21 1 17 0;
-#X connect 22 0 15 1;
-#X connect 22 1 13 0;
-#X connect 23 0 15 0;
-#X connect 23 1 19 0;
-#X connect 23 2 14 0;
-#X connect 23 3 20 0;
-#X connect 24 0 1 0;
-#X connect 25 0 26 0;
-#X connect 26 0 8 0;
-#X connect 27 0 10 0;
-#X restore 191 181 pd second_part;
-#N canvas 427 3 562 703 third_part 0;
-#X msg 155 289 \; positions resize \$1;
-#X obj 73 325 tabset positions;
-#X obj 41 350 0;
-#X obj 41 374 until;
-#X obj 83 399 + 1;
-#X obj 41 399 0;
-#X obj 41 445 tabread positions;
-#X msg 65 349 0;
-#X obj 41 134 vasp.noise;
-#X obj 41 200 vasp.??;
-#X obj 41 154 vasp.abs;
-#X obj 41 177 vasp.< 0.1;
-#X obj 90 273 length;
-#X obj 41 423 t f f;
-#X obj 41 224 route list;
-#X obj 310 641 vasp.+ vasp insert;
-#X obj 41 82 t b b;
-#X obj 119 108 vasp.= 0;
-#X obj 41 52 inlet;
-#X obj 96 154 r \$0-density;
-#X text 177 107 (clears second part);
-#X text 327 499 sample-length;
-#X obj 292 520 - 0;
-#X text 329 519 minus offset;
-#X text 292 215 this part has to write "around the corner";
-#X obj 48 636 vasp.+ vasp insert;
-#X msg 48 586 vasp \$1 schnipparray;
-#X text 446 641 insert at end;
-#X text 49 663 insert at beginning;
-#X obj 90 294 t f f;
-#X obj 41 251 t b b l l;
-#X msg 310 565 vasp \$1 schnipparray;
-#X obj 310 613 vasp.o;
-#X obj 186 609 vasp.o;
-#X msg 413 614 vasp \$1 insert;
-#X msg 186 586 vasp \$1 insert;
-#X obj 48 550 t f f;
-#X obj 48 527 - 0;
-#X obj 276 471 t b b f f;
-#X text 73 528 already at the end;
-#X obj 292 541 t f f f f;
-#X obj 41 111 vasp.! 128;
-#X obj 292 497 128;
-#X obj 48 505 128;
-#X obj 341 590 + 256;
-#X msg 119 86 vasp 128 schnipparray;
-#X connect 2 0 3 0;
-#X connect 3 0 5 0;
-#X connect 4 0 5 1;
-#X connect 5 0 13 0;
-#X connect 6 0 38 0;
-#X connect 7 0 5 1;
-#X connect 8 0 10 0;
-#X connect 9 0 14 0;
-#X connect 10 0 11 0;
-#X connect 11 0 9 0;
-#X connect 12 0 29 0;
-#X connect 13 0 6 0;
-#X connect 13 1 4 0;
-#X connect 14 0 30 0;
-#X connect 16 0 41 0;
-#X connect 16 1 45 0;
-#X connect 18 0 16 0;
-#X connect 19 0 11 1;
-#X connect 22 0 40 0;
-#X connect 26 0 25 0;
-#X connect 29 0 2 1;
-#X connect 29 1 0 0;
-#X connect 30 0 2 0;
-#X connect 30 1 7 0;
-#X connect 30 2 1 0;
-#X connect 30 3 12 0;
-#X connect 31 0 32 0;
-#X connect 32 0 15 0;
-#X connect 33 0 25 1;
-#X connect 34 0 15 1;
-#X connect 35 0 33 0;
-#X connect 36 0 26 0;
-#X connect 36 1 35 0;
-#X connect 37 0 36 0;
-#X connect 38 0 43 0;
-#X connect 38 1 42 0;
-#X connect 38 2 22 1;
-#X connect 38 3 44 0;
-#X connect 40 0 37 1;
-#X connect 40 1 33 1;
-#X connect 40 2 31 0;
-#X connect 40 3 34 0;
-#X connect 41 0 8 0;
-#X connect 42 0 22 0;
-#X connect 43 0 37 0;
-#X connect 44 0 32 1;
-#X connect 45 0 17 0;
-#X restore 336 183 pd third_part;
-#X obj 48 55 r \$0-part;
-#X text 50 33 after a sample-part is played \, next step is calculated
-;
-#X text 296 84 1) generate noise \; 2) get triggering-values \; 3)
-...save in positions-array \; 4) read samplevalues of positions \;
-5) at every trigger insert the "insert"array;
-#X connect 0 0 1 0;
-#X connect 0 1 2 0;
-#X connect 0 2 3 0;
-#X connect 4 0 0 0;
-#X restore 42 88 pd inserter;
-#X obj 40 37 table schnipparray 384;
-#X restore 516 119 pd inside;
-#X obj 322 271 vsl 15 100 0 1 0 1 empty empty volume 0 -8 0 8 -24198
--1 -1 600 1;
-#X obj 204 374 *~ 0.2;
-#X text 387 445 needs the zexy library and vasp;
-#X text 319 80 this array is inserted at triggering points;
-#X connect 2 0 14 0;
-#X connect 4 0 7 0;
-#X connect 5 0 9 0;
-#X connect 8 0 1 0;
-#X connect 9 0 4 0;
-#X connect 11 0 10 0;
-#X connect 13 0 14 1;
-#X connect 14 0 3 0;
-#X connect 14 0 3 1;
-#X connect 14 0 11 0;
diff --git a/externals/grill/vasp/pd-test/granular2.pd b/externals/grill/vasp/pd-test/granular2.pd
deleted file mode 100644
index cfea7d6c..00000000
--- a/externals/grill/vasp/pd-test/granular2.pd
+++ /dev/null
@@ -1,366 +0,0 @@
-#N canvas 30 24 708 560 10;
-#N canvas 0 0 450 300 graph34 0;
-#X array insert 128 float 0;
-#X coords 0 1 127 -1 200 140 1;
-#X restore 96 73 graph;
-#N canvas 339 256 523 452 player 0;
-#X obj 228 372 tabplay~ schnipparray;
-#X obj 228 396 throw~ toex;
-#X obj 208 45 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1
-;
-#X obj 208 76 spigot;
-#X obj 104 330 s \$0-part;
-#X obj 208 21 inlet;
-#X obj 264 251 t b b;
-#X obj 283 327 r \$0-partlen;
-#X obj 253 299 r \$0-partlen;
-#X obj 228 319 * 128;
-#X obj 228 350 pack 0 128;
-#X obj 253 147 + 1;
-#X obj 208 147 t f f;
-#X obj 143 251 t b b;
-#X obj 203 250 t b b;
-#X obj 240 192 t b b;
-#X obj 208 125 1;
-#X msg 265 212 1;
-#X obj 208 170 sel 1 2 3;
-#X msg 143 271 2;
-#X msg 168 271 0;
-#X msg 203 271 3;
-#X msg 228 271 1;
-#X msg 264 271 1;
-#X msg 289 271 2;
-#X connect 0 0 1 0;
-#X connect 0 1 3 0;
-#X connect 2 0 3 1;
-#X connect 2 0 3 0;
-#X connect 3 0 16 0;
-#X connect 5 0 2 0;
-#X connect 6 0 23 0;
-#X connect 6 1 24 0;
-#X connect 7 0 10 1;
-#X connect 8 0 9 1;
-#X connect 9 0 10 0;
-#X connect 10 0 0 0;
-#X connect 11 0 16 1;
-#X connect 12 0 18 0;
-#X connect 12 1 11 0;
-#X connect 13 0 19 0;
-#X connect 13 1 20 0;
-#X connect 14 0 21 0;
-#X connect 14 1 22 0;
-#X connect 15 0 6 0;
-#X connect 15 1 17 0;
-#X connect 16 0 12 0;
-#X connect 17 0 16 1;
-#X connect 18 0 13 0;
-#X connect 18 1 14 0;
-#X connect 18 2 15 0;
-#X connect 19 0 4 0;
-#X connect 20 0 9 0;
-#X connect 21 0 4 0;
-#X connect 22 0 9 0;
-#X connect 23 0 4 0;
-#X connect 24 0 9 0;
-#X restore 204 294 pd player;
-#X obj 204 339 catch~ toex;
-#X obj 204 403 dac~;
-#X floatatom 51 318 0 0 0 0 - - -;
-#X obj 51 278 nbx 5 14 -1e+037 1e+037 0 1 empty empty empty 0 -6 0
-10 -24198 -1 -1 80.13 256;
-#X text 51 260 density;
-#X obj 51 340 s \$0-density;
-#X obj 204 275 tgl 15 0 empty empty start/stop 0 -6 0 8 -24198 -1 -1
-1 1;
-#X floatatom 241 430 0 0 0 0 - - -;
-#X obj 241 407 env~ 32768;
-#N canvas 202 187 293 232 inside 0;
-#X obj 88 151 table positions;
-#N canvas 136 160 532 356 inserter 0;
-#X obj 48 55 r \$0-part;
-#X text 50 33 after a sample-part is played \, next step is calculated
-;
-#X obj 169 145 sel 1 2 3;
-#X msg 317 235 1;
-#X text 411 234 clear;
-#X msg 346 235 2;
-#X msg 376 235 0;
-#X obj 317 259 s \$0-clear;
-#X obj 169 260 s \$0-partfw;
-#X msg 169 233 0;
-#X msg 205 233 1;
-#X msg 238 233 2;
-#X text 244 260 (offset);
-#X obj 246 176 t b b;
-#X obj 48 78 t b f;
-#N canvas 267 0 670 675 three_steps 0;
-#X msg 139 235 \; positions resize \$1;
-#X obj 78 269 tabset positions;
-#X obj 46 291 0;
-#X obj 46 311 until;
-#X obj 88 336 + 1;
-#X obj 46 336 0;
-#X obj 46 377 tabread positions;
-#X msg 70 291 0;
-#X obj 46 100 vasp.noise;
-#X obj 46 165 vasp.??;
-#X obj 46 122 vasp.abs;
-#X obj 46 145 vasp.< 0.1;
-#X obj 95 227 length;
-#X obj 46 357 t f f;
-#X obj 345 609 vasp.+ vasp insert;
-#X obj 46 58 t b b;
-#X obj 46 37 inlet;
-#X obj 101 122 r \$0-density;
-#X text 348 452 sample-length;
-#X obj 313 473 - 0;
-#X text 350 472 minus offset;
-#X obj 46 620 vasp.+ vasp insert;
-#X msg 46 527 vasp \$1 schnipparray;
-#X text 164 621 insert at beginning;
-#X obj 95 248 t f f;
-#X obj 46 205 t b b l l;
-#X msg 345 517 vasp \$1 schnipparray;
-#X obj 345 587 vasp.o;
-#X obj 149 599 vasp.o;
-#X msg 448 588 vasp \$1 insert;
-#X msg 149 576 vasp \$1 insert;
-#X obj 46 502 t f f;
-#X obj 46 479 - 0;
-#X obj 46 400 t b b f f;
-#X text 73 478 already at the end;
-#X obj 313 494 t f f f f;
-#X obj 46 79 vasp.! 128;
-#X obj 313 450 128;
-#X obj 46 457 128;
-#X obj 399 195 r \$0-partlen;
-#X text 405 261 clear;
-#X obj 374 173 r \$0-clear;
-#X obj 329 173 vasp.f;
-#X msg 329 128 vasp schnipparray;
-#X obj 329 261 vasp.= 0;
-#X obj 374 217 * 128;
-#X obj 360 150 r \$0-partlen;
-#X obj 329 239 vasp.o;
-#X obj 101 58 r \$0-partlen;
-#X obj 470 541 r \$0-partlen;
-#X obj 399 564 * 128;
-#X obj 399 541 r \$0-partfw;
-#X obj 376 564 + 0;
-#X obj 326 428 r \$0-partlen;
-#X obj 59 433 r \$0-partlen;
-#X obj 46 595 vasp.o+;
-#X obj 149 550 r \$0-partlen;
-#X obj 83 572 * 128;
-#X obj 83 550 r \$0-clear;
-#X text 481 619 insert at end of this part;
-#X text 163 634 of next part;
-#X obj 46 185 route bang;
-#X connect 2 0 3 0;
-#X connect 3 0 5 0;
-#X connect 4 0 5 1;
-#X connect 5 0 13 0;
-#X connect 6 0 33 0;
-#X connect 7 0 5 1;
-#X connect 8 0 10 0;
-#X connect 9 0 61 0;
-#X connect 10 0 11 0;
-#X connect 11 0 9 0;
-#X connect 12 0 24 0;
-#X connect 13 0 6 0;
-#X connect 13 1 4 0;
-#X connect 15 0 36 0;
-#X connect 15 1 43 0;
-#X connect 16 0 15 0;
-#X connect 17 0 11 1;
-#X connect 19 0 35 0;
-#X connect 22 0 55 0;
-#X connect 24 0 2 1;
-#X connect 24 1 0 0;
-#X connect 25 0 2 0;
-#X connect 25 1 7 0;
-#X connect 25 2 1 0;
-#X connect 25 3 12 0;
-#X connect 26 0 27 0;
-#X connect 27 0 14 0;
-#X connect 28 0 21 1;
-#X connect 29 0 14 1;
-#X connect 30 0 28 0;
-#X connect 31 0 22 0;
-#X connect 31 1 30 0;
-#X connect 32 0 31 0;
-#X connect 33 0 38 0;
-#X connect 33 1 37 0;
-#X connect 33 2 19 1;
-#X connect 33 3 52 0;
-#X connect 35 0 32 1;
-#X connect 35 1 28 1;
-#X connect 35 2 26 0;
-#X connect 35 3 29 0;
-#X connect 36 0 8 0;
-#X connect 37 0 19 0;
-#X connect 38 0 32 0;
-#X connect 39 0 45 1;
-#X connect 41 0 45 0;
-#X connect 42 0 47 0;
-#X connect 43 0 42 0;
-#X connect 45 0 47 1;
-#X connect 46 0 42 1;
-#X connect 47 0 44 0;
-#X connect 48 0 36 1;
-#X connect 49 0 50 1;
-#X connect 50 0 52 1;
-#X connect 51 0 50 0;
-#X connect 52 0 27 1;
-#X connect 53 0 37 1;
-#X connect 54 0 38 1;
-#X connect 55 0 21 0;
-#X connect 56 0 57 1;
-#X connect 57 0 55 1;
-#X connect 58 0 57 0;
-#X connect 61 1 25 0;
-#X restore 48 259 pd three_steps;
-#X obj 209 176 t b b;
-#X obj 169 175 t b b;
-#X text 386 260 (=nextpart);
-#X connect 0 0 14 0;
-#X connect 2 0 17 0;
-#X connect 2 1 16 0;
-#X connect 2 2 13 0;
-#X connect 3 0 7 0;
-#X connect 5 0 7 0;
-#X connect 6 0 7 0;
-#X connect 9 0 8 0;
-#X connect 10 0 8 0;
-#X connect 11 0 8 0;
-#X connect 13 0 11 0;
-#X connect 13 1 6 0;
-#X connect 14 0 15 0;
-#X connect 14 1 2 0;
-#X connect 16 0 10 0;
-#X connect 16 1 5 0;
-#X connect 17 0 9 0;
-#X connect 17 1 3 0;
-#X restore 40 70 pd inserter;
-#X obj 88 129 table schnipparray 384;
-#N canvas 286 262 325 213 init 0;
-#X obj 112 77 s \$0-partlen;
-#X msg 112 100 \; insert resize \$1;
-#X msg 50 137 \; schnipparray resize \$1;
-#X obj 50 43 loadbang;
-#X msg 50 65 128;
-#X obj 50 113 * 3;
-#X connect 3 0 4 0;
-#X connect 4 0 5 0;
-#X connect 4 0 0 0;
-#X connect 4 0 1 0;
-#X connect 5 0 2 0;
-#X restore 41 95 pd init;
-#N canvas 409 43 526 376 create_schnippl 0;
-#X msg 155 114 vasp insert;
-#X obj 155 182 vasp.u;
-#X obj 155 138 vasp.osc 6.4;
-#X msg 66 114 vasp insert;
-#X obj 66 162 vasp.u;
-#X msg 293 113 vasp insert;
-#X obj 293 161 vasp.u;
-#X obj 293 137 vasp.osc 2;
-#X msg 63 216 vasp insert;
-#X obj 63 261 vasp.u;
-#X obj 63 239 vasp.window;
-#X obj 66 138 vasp.osc 128;
-#X obj 155 160 vasp.*!window lin;
-#X msg 273 230 vasp insert;
-#X obj 273 292 vasp.u;
-#X obj 273 251 vasp.osc 2;
-#X obj 273 271 vasp.*xwindow hamming;
-#X obj 355 230 nbx 5 14 -1e+037 1e+037 0 0 empty empty empty 0 -6 0
-10 -24198 -1 -1 3 256;
-#X text 56 71 create various slices to insert;
-#X msg 405 113 vasp insert;
-#X obj 405 161 vasp.u;
-#X obj 405 137 vasp.= 0;
-#X connect 0 0 2 0;
-#X connect 2 0 12 0;
-#X connect 3 0 11 0;
-#X connect 5 0 7 0;
-#X connect 7 0 6 0;
-#X connect 8 0 10 0;
-#X connect 10 0 9 0;
-#X connect 11 0 4 0;
-#X connect 12 0 1 0;
-#X connect 13 0 15 0;
-#X connect 15 0 16 0;
-#X connect 16 0 14 0;
-#X connect 17 0 15 1;
-#X connect 19 0 21 0;
-#X connect 21 0 20 0;
-#X restore 40 47 pd create_schnippl;
-#X restore 53 489 pd inside;
-#X obj 322 271 vsl 15 100 0 1 0 1 empty empty volume 0 -8 0 8 -24198
--1 -1 4400 1;
-#X obj 204 374 *~ 0.2;
-#X text 332 464 needs the zexy library and vasp;
-#X obj 51 297 * 0.0001;
-#N canvas 0 0 478 359 glaetten 0;
-#X floatatom 225 70 5 0 0 0 - - -;
-#X floatatom 242 130 5 0 0 0 - - -;
-#X obj 225 111 div 64;
-#X obj 225 148 + 1;
-#X obj 225 169 * 64;
-#X floatatom 254 193 0 0 0 0 - - -;
-#X obj 225 90 - 1;
-#X text 40 193 correct to a size dividable by 64;
-#X obj 225 215 * 3;
-#X floatatom 238 240 0 0 0 0 - - -;
-#X text 143 239 size of array;
-#X text 115 68 length of sample;
-#X text 303 194 (part-length);
-#X obj 322 257 s \$0-partlen;
-#X msg 313 285 \; insert resize \$1;
-#X msg 73 287 \; schnipparray resize \$1;
-#X obj 225 38 inlet;
-#X connect 0 0 6 0;
-#X connect 2 0 1 0;
-#X connect 2 0 3 0;
-#X connect 3 0 4 0;
-#X connect 4 0 5 0;
-#X connect 4 0 8 0;
-#X connect 5 0 13 0;
-#X connect 5 0 14 0;
-#X connect 6 0 2 0;
-#X connect 8 0 9 0;
-#X connect 8 0 15 0;
-#X connect 16 0 0 0;
-#X restore 482 362 pd glaetten;
-#X obj 482 320 soundfiler;
-#X obj 482 278 openpanel;
-#X msg 482 299 read -resize \$1 insert;
-#X obj 482 251 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
--1;
-#X floatatom 482 342 0 0 0 0 - - -;
-#X text 326 103 this array is inserted at random triggering points
-;
-#X text 506 251 load sample to insert;
-#X text 332 478 be careful with high density \, with large files costs
-a lot of cpu and glitches can appear;
-#X msg 481 211 \; pd-create_schnippl vis 1;
-#X obj 481 189 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
--1;
-#X text 509 188 create samples to insert;
-#X connect 2 0 13 0;
-#X connect 4 0 7 0;
-#X connect 5 0 15 0;
-#X connect 8 0 1 0;
-#X connect 10 0 9 0;
-#X connect 12 0 13 1;
-#X connect 13 0 3 0;
-#X connect 13 0 3 1;
-#X connect 13 0 10 0;
-#X connect 15 0 4 0;
-#X connect 17 0 21 0;
-#X connect 18 0 19 0;
-#X connect 19 0 17 0;
-#X connect 20 0 18 0;
-#X connect 21 0 16 0;
-#X connect 26 0 25 0;
diff --git a/externals/grill/vasp/pd/VASP-HELP.pd b/externals/grill/vasp/pd/VASP-HELP.pd
deleted file mode 100644
index 4e6dad90..00000000
--- a/externals/grill/vasp/pd/VASP-HELP.pd
+++ /dev/null
@@ -1,1157 +0,0 @@
-#N canvas 193 23 626 687 10;
-#X obj 104 47 cnv 15 15 15 empty empty vasp_modular 0 10 1 14 -262144
--1 0;
-#X obj 61 37 cnv 2 2 2 empty 2-1-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 63 37 cnv 2 2 2 empty 2-2-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 65 37 cnv 2 2 2 empty 2-3-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 67 37 cnv 2 2 2 empty 2-4-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 69 37 cnv 2 2 2 empty 2-5-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 71 37 cnv 2 2 2 empty 2-6-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 73 37 cnv 2 2 2 empty 2-7-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 75 37 cnv 2 2 2 empty 2-8-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 77 37 cnv 2 2 2 empty 2-9-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 79 37 cnv 2 2 2 empty 2-10-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 81 37 cnv 2 2 2 empty 2-11-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 83 37 cnv 2 2 2 empty 2-12-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 85 37 cnv 2 2 2 empty 2-13-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 87 37 cnv 2 2 2 empty 2-14-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 89 37 cnv 2 2 2 empty 2-15-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 61 39 cnv 2 2 2 empty 3-1-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 63 39 cnv 2 2 2 empty 3-2-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 65 39 cnv 2 2 2 empty 3-3-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 67 39 cnv 2 2 2 empty 3-4-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 69 39 cnv 2 2 2 empty 3-5-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 71 39 cnv 2 2 2 empty 3-6-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 73 39 cnv 2 2 2 empty 3-7-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 75 39 cnv 2 2 2 empty 3-8-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 77 39 cnv 2 2 2 empty 3-9-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 79 39 cnv 2 2 2 empty 3-10-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 81 39 cnv 2 2 2 empty 3-11-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 83 39 cnv 2 2 2 empty 3-12-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 85 39 cnv 2 2 2 empty 3-13-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 87 39 cnv 2 2 2 empty 3-14-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 89 39 cnv 2 2 2 empty 3-15-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 61 41 cnv 2 2 2 empty 4-1-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 63 41 cnv 2 2 2 empty 4-2-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 65 41 cnv 2 2 2 empty 4-3-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 67 41 cnv 2 2 2 empty 4-4-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 69 41 cnv 2 2 2 empty 4-5-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 71 41 cnv 2 2 2 empty 4-6-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 73 41 cnv 2 2 2 empty 4-7-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 75 41 cnv 2 2 2 empty 4-8-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 77 41 cnv 2 2 2 empty 4-9-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 79 41 cnv 2 2 2 empty 4-10-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 81 41 cnv 2 2 2 empty 4-11-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 83 41 cnv 2 2 2 empty 4-12-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 85 41 cnv 2 2 2 empty 4-13-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 87 41 cnv 2 2 2 empty 4-14-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 89 41 cnv 2 2 2 empty 4-15-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 61 43 cnv 2 2 2 empty 5-1-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 63 43 cnv 2 2 2 empty 5-2-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 65 43 cnv 2 2 2 empty 5-3-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 67 43 cnv 2 2 2 empty 5-4-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 69 43 cnv 2 2 2 empty 5-5-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 71 43 cnv 2 2 2 empty 5-6-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 73 43 cnv 2 2 2 empty 5-7-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 75 43 cnv 2 2 2 empty 5-8-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 77 43 cnv 2 2 2 empty 5-9-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 79 43 cnv 2 2 2 empty 5-10-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 81 43 cnv 2 2 2 empty 5-11-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 83 43 cnv 2 2 2 empty 5-12-r empty 20 12 64 14 -1 -262144 0
-;
-#X obj 85 43 cnv 2 2 2 empty 5-13-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 87 43 cnv 2 2 2 empty 5-14-r empty 20 12 64 14 -1 -262144 0
-;
-#X obj 89 43 cnv 2 2 2 empty 5-15-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 61 45 cnv 2 2 2 empty 6-1-r empty 20 12 64 14 -1 -262144 0;
-#X obj 63 45 cnv 2 2 2 empty 6-2-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 65 45 cnv 2 2 2 empty 6-3-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 67 45 cnv 2 2 2 empty 6-4-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 69 45 cnv 2 2 2 empty 6-5-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 71 45 cnv 2 2 2 empty 6-6-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 73 45 cnv 2 2 2 empty 6-7-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 75 45 cnv 2 2 2 empty 6-8-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 77 45 cnv 2 2 2 empty 6-9-r empty 20 12 64 14 -1 -262144 0;
-#X obj 79 45 cnv 2 2 2 empty 6-10-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 81 45 cnv 2 2 2 empty 6-11-r empty 20 12 64 14 -1 -262144 0
-;
-#X obj 83 45 cnv 2 2 2 empty 6-12-r empty 20 12 64 14 -1 -262144 0
-;
-#X obj 85 45 cnv 2 2 2 empty 6-13-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 87 45 cnv 2 2 2 empty 6-14-r empty 20 12 64 14 -1 -262144 0
-;
-#X obj 89 45 cnv 2 2 2 empty 6-15-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 61 47 cnv 2 2 2 empty 7-1-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 63 47 cnv 2 2 2 empty 7-2-r empty 20 12 64 14 -1 -262144 0;
-#X obj 65 47 cnv 2 2 2 empty 7-3-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 67 47 cnv 2 2 2 empty 7-4-r empty 20 12 64 14 -1 -262144 0;
-#X obj 69 47 cnv 2 2 2 empty 7-5-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 71 47 cnv 2 2 2 empty 7-6-r empty 20 12 64 14 -1 -262144 0;
-#X obj 73 47 cnv 2 2 2 empty 7-7-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 75 47 cnv 2 2 2 empty 7-8-r empty 20 12 64 14 -1 -262144 0;
-#X obj 77 47 cnv 2 2 2 empty 7-9-r empty 20 12 64 14 -1 -262144 0;
-#X obj 79 47 cnv 2 2 2 empty 7-10-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 81 47 cnv 2 2 2 empty 7-11-r empty 20 12 64 14 -1 -262144 0
-;
-#X obj 83 47 cnv 2 2 2 empty 7-12-r empty 20 12 64 14 -1 -262144 0
-;
-#X obj 85 47 cnv 2 2 2 empty 7-13-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 87 47 cnv 2 2 2 empty 7-14-r empty 20 12 64 14 -1 -262144 0
-;
-#X obj 89 47 cnv 2 2 2 empty 7-15-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 61 49 cnv 2 2 2 empty 8-1-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 63 49 cnv 2 2 2 empty 8-2-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 65 49 cnv 2 2 2 empty 8-3-r empty 20 12 64 14 -1 -262144 0;
-#X obj 67 49 cnv 2 2 2 empty 8-4-r empty 20 12 64 14 -1 -262144 0;
-#X obj 69 49 cnv 2 2 2 empty 8-5-r empty 20 12 64 14 -1 -262144 0;
-#X obj 71 49 cnv 2 2 2 empty 8-6-r empty 20 12 64 14 -1 -262144 0;
-#X obj 73 49 cnv 2 2 2 empty 8-7-r empty 20 12 64 14 -1 -262144 0;
-#X obj 75 49 cnv 2 2 2 empty 8-8-r empty 20 12 64 14 -1 -262144 0;
-#X obj 77 49 cnv 2 2 2 empty 8-9-r empty 20 12 64 14 -1 -262144 0;
-#X obj 79 49 cnv 2 2 2 empty 8-10-r empty 20 12 64 14 -1 -262144 0
-;
-#X obj 81 49 cnv 2 2 2 empty 8-11-r empty 20 12 64 14 -1 -262144 0
-;
-#X obj 83 49 cnv 2 2 2 empty 8-12-r empty 20 12 64 14 -1 -262144 0
-;
-#X obj 85 49 cnv 2 2 2 empty 8-13-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 87 49 cnv 2 2 2 empty 8-14-r empty 20 12 64 14 -1 -262144 0
-;
-#X obj 89 49 cnv 2 2 2 empty 8-15-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 61 51 cnv 2 2 2 empty 9-1-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 63 51 cnv 2 2 2 empty 9-2-r empty 20 12 64 14 -1 -262144 0;
-#X obj 65 51 cnv 2 2 2 empty 9-3-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 67 51 cnv 2 2 2 empty 9-4-r empty 20 12 64 14 -1 -262144 0;
-#X obj 69 51 cnv 2 2 2 empty 9-5-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 71 51 cnv 2 2 2 empty 9-6-r empty 20 12 64 14 -1 -262144 0;
-#X obj 73 51 cnv 2 2 2 empty 9-7-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 75 51 cnv 2 2 2 empty 9-8-r empty 20 12 64 14 -1 -262144 0;
-#X obj 77 51 cnv 2 2 2 empty 9-9-r empty 20 12 64 14 -1 -262144 0;
-#X obj 79 51 cnv 2 2 2 empty 9-10-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 81 51 cnv 2 2 2 empty 9-11-r empty 20 12 64 14 -1 -262144 0
-;
-#X obj 83 51 cnv 2 2 2 empty 9-12-r empty 20 12 64 14 -1 -262144 0
-;
-#X obj 85 51 cnv 2 2 2 empty 9-13-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 87 51 cnv 2 2 2 empty 9-14-r empty 20 12 64 14 -1 -262144 0
-;
-#X obj 89 51 cnv 2 2 2 empty 9-15-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 61 53 cnv 2 2 2 empty 10-1-r empty 20 12 64 14 -1 -262144 0
-;
-#X obj 63 53 cnv 2 2 2 empty 10-2-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 65 53 cnv 2 2 2 empty 10-3-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 67 53 cnv 2 2 2 empty 10-4-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 69 53 cnv 2 2 2 empty 10-5-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 71 53 cnv 2 2 2 empty 10-6-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 73 53 cnv 2 2 2 empty 10-7-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 75 53 cnv 2 2 2 empty 10-8-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 77 53 cnv 2 2 2 empty 10-9-r empty 20 12 64 14 -1 -262144 0
-;
-#X obj 79 53 cnv 2 2 2 empty 10-10-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 81 53 cnv 2 2 2 empty 10-11-r empty 20 12 64 14 -1 -262144 0
-;
-#X obj 83 53 cnv 2 2 2 empty 10-12-r empty 20 12 64 14 -1 -262144 0
-;
-#X obj 85 53 cnv 2 2 2 empty 10-13-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 87 53 cnv 2 2 2 empty 10-14-r empty 20 12 64 14 -1 -262144 0
-;
-#X obj 89 53 cnv 2 2 2 empty 10-15-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 61 55 cnv 2 2 2 empty 11-1-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 63 55 cnv 2 2 2 empty 11-2-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 65 55 cnv 2 2 2 empty 11-3-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 67 55 cnv 2 2 2 empty 11-4-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 69 55 cnv 2 2 2 empty 11-5-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 71 55 cnv 2 2 2 empty 11-6-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 73 55 cnv 2 2 2 empty 11-7-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 75 55 cnv 2 2 2 empty 11-8-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 77 55 cnv 2 2 2 empty 11-9-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 79 55 cnv 2 2 2 empty 11-10-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 81 55 cnv 2 2 2 empty 11-11-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 83 55 cnv 2 2 2 empty 11-12-r empty 20 12 64 14 -1 -262144 0
-;
-#X obj 85 55 cnv 2 2 2 empty 11-13-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 87 55 cnv 2 2 2 empty 11-14-r empty 20 12 64 14 -1 -262144 0
-;
-#X obj 89 55 cnv 2 2 2 empty 11-15-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 61 57 cnv 2 2 2 empty 12-1-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 63 57 cnv 2 2 2 empty 12-2-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 65 57 cnv 2 2 2 empty 12-3-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 67 57 cnv 2 2 2 empty 12-4-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 69 57 cnv 2 2 2 empty 12-5-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 71 57 cnv 2 2 2 empty 12-6-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 73 57 cnv 2 2 2 empty 12-7-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 75 57 cnv 2 2 2 empty 12-8-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 77 57 cnv 2 2 2 empty 12-9-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 79 57 cnv 2 2 2 empty 12-10-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 81 57 cnv 2 2 2 empty 12-11-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 83 57 cnv 2 2 2 empty 12-12-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 85 57 cnv 2 2 2 empty 12-13-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 87 57 cnv 2 2 2 empty 12-14-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 89 57 cnv 2 2 2 empty 12-15-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 61 59 cnv 2 2 2 empty 13-1-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 63 59 cnv 2 2 2 empty 13-2-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 65 59 cnv 2 2 2 empty 13-3-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 67 59 cnv 2 2 2 empty 13-4-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 69 59 cnv 2 2 2 empty 13-5-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 71 59 cnv 2 2 2 empty 13-6-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 73 59 cnv 2 2 2 empty 13-7-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 75 59 cnv 2 2 2 empty 13-8-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 77 59 cnv 2 2 2 empty 13-9-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 79 59 cnv 2 2 2 empty 13-10-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 81 59 cnv 2 2 2 empty 13-11-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 83 59 cnv 2 2 2 empty 13-12-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 85 59 cnv 2 2 2 empty 13-13-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 87 59 cnv 2 2 2 empty 13-14-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 89 59 cnv 2 2 2 empty 13-15-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 61 61 cnv 2 2 2 empty 14-1-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 63 61 cnv 2 2 2 empty 14-2-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 65 61 cnv 2 2 2 empty 14-3-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 67 61 cnv 2 2 2 empty 14-4-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 69 61 cnv 2 2 2 empty 14-5-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 71 61 cnv 2 2 2 empty 14-6-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 73 61 cnv 2 2 2 empty 14-7-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 75 61 cnv 2 2 2 empty 14-8-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 77 61 cnv 2 2 2 empty 14-9-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 79 61 cnv 2 2 2 empty 14-10-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 81 61 cnv 2 2 2 empty 14-11-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 83 61 cnv 2 2 2 empty 14-12-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 85 61 cnv 2 2 2 empty 14-13-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 87 61 cnv 2 2 2 empty 14-14-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 89 61 cnv 2 2 2 empty 14-15-r empty 20 12 64 14 -225271 -262144
-0;
-#X text 54 90 vasp modular - vector assembling signal processor ©2002-2007
-thomas grill;
-#X text 54 123 vasp is a library of objects for max/msp and pd \, containing
-functions to generate and modify vectors as well as buffer content
-in a non-realtime context.;
-#X text 54 169 vasp objects are using a specialized message syntax
-for all objects to refer to a buffer or a part of it.;
-#X text 55 248 some reference patches need the prepend object of the
-IEMlib;
-#X text 55 565 inspired by guenther rabl's fftbox and NMS4. find guenther
-rabl at www.canto-crudo.com;
-#X text 54 602 vasp help patches for MaxMSP by florian bogner and oliver
-grimm - ©2002 patcherboys;
-#X text 55 639 revised & extended version for PD by marius schebella
-- www.parasitaere-kapazitaeten.net/vasp;
-#X text 54 202 the help patches should give you an idea of what is
-possible. feel free to combine different patches to more complex ones.
-;
-#X text 76 291 (very) quick overview;
-#N canvas 131 125 831 564 quickstart 0;
-#X text 86 223 How to use:;
-#X obj 292 270 bng 15 250 50 0 1displays 1displayr empty 0 -6 192 8
--24198 -1 -1;
-#X text 320 269 1) Have a messagebox with the name of the array.;
-#X obj 292 317 bng 15 250 50 0 2displays 2displayr empty 0 -6 192 8
--24198 -1 -1;
-#X obj 292 400 bng 15 250 50 0 3displays 3displayr empty 0 -6 192 8
--24198 -1 -1;
-#N canvas 323 136 534 533 inside 0;
-#X obj 144 38 r 1displays;
-#X obj 176 281 delay 500;
-#X obj 144 156 r 2displays;
-#X obj 144 80 change;
-#X msg 144 59 1;
-#X obj 144 198 change;
-#X msg 144 177 1;
-#X msg 144 101 bang;
-#X msg 144 221 bang;
-#X obj 64 327 change;
-#X msg 64 306 1;
-#X obj 64 284 r 3displays;
-#X obj 64 349 t b b b;
-#X obj 315 37 table buffer1;
-#X text 314 55 (dummy-table);
-#X msg 144 122 \; pd-quickstart msg 130 270 vasp buffer1;
-#X msg 144 244 \; pd-quickstart obj 130 320 vasp.shift 100;
-#X msg 108 374 \; pd-quickstart msg 130 370 vasp buffer1;
-#X msg 82 411 \; pd-quickstart obj 130 400 vasp.update;
-#X msg 176 302 \; pd-quickstart connect 13 0 14 0;
-#X msg 64 452 \; pd-quickstart connect 15 0 16 0;
-#X connect 0 0 4 0;
-#X connect 1 0 19 0;
-#X connect 2 0 6 0;
-#X connect 3 0 7 0;
-#X connect 4 0 3 0;
-#X connect 5 0 8 0;
-#X connect 6 0 5 0;
-#X connect 7 0 15 0;
-#X connect 8 0 16 0;
-#X connect 8 0 1 0;
-#X connect 9 0 12 0;
-#X connect 10 0 9 0;
-#X connect 11 0 10 0;
-#X connect 12 0 20 0;
-#X connect 12 1 18 0;
-#X connect 12 2 17 0;
-#X restore 716 65 pd inside;
-#X text 87 54 The vasp modular system does calculation on buffers.
-;
-#X text 322 316 2) Connect it to a vasp-object-box that determines
-the processing algorithm.;
-#X text 323 374 3) At that point \, after clicking the message-box
-\, data processing is executed. To display the new vasp in the graph
-you may want to update the graphic display.;
-#X text 86 89 Vasp works "out of time" \, it does not relay on the
-usual blocksizes of Pd. A vasp algorithm can be assigned to any buffer
-size according to your own definition \, for example the whole sound-data
-of an array.;
-#X text 86 156 There is a general help-patch called "VASP-HELP" \,
-and there is a reference-patch for every vasp object.;
-#X text 233 241 (CLICK GREEN BUTTONS);
-#X text 85 481 Have a look at this help for detailed information about
-the syntax and the available objects and features.;
-#X restore 232 292 pd quickstart;
-#X text 108 324 the vasp message;
-#N canvas 10 33 986 670 syntax 0;
-#X text 76 52 the vasp message:;
-#X obj 75 20 cnv 15 15 15 empty empty vasp_syntax 0 10 1 14 -262144
--1 0;
-#N canvas 0 0 405 218 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 99 \; \$1 xticks 0 4410 5 \; \$1 xlabel 1.1 0 22050 44100
-66150 88200 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 94000 -1 -0.5 0 0.5
-1;
-#X msg 33 45 symbol buf1 \, symbol buf2 \, sysymbol buf1 \, symbol
-buf2 \, symbol buf3 \, symbol buf4 \, symbol buf5 \, symbol buf6 \,
-symbol buf7 \, symbol buf8 \, symbol buf9;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 827 44 pd init;
-#X obj 73 92 cnv 15 800 450 empty empty empty 20 12 0 14 -241339 -66577
-0;
-#X text 469 241 (default 0);
-#X text 515 185 which does the same.;
-#X msg 462 184 vasp -1;
-#X msg 222 270 vasp 44100 buf1 22050 0;
-#X text 110 271 and the channel;
-#X msg 317 241 vasp 44100 buf1 22050;
-#X text 110 243 an optional offset in samples;
-#X msg 365 214 vasp 44100 buf1;
-#X text 110 216 the name of the buffer it refers to;
-#X msg 347 158 vasp 44100;
-#X text 110 161 followed by the length in samples;
-#X msg 266 132 vasp;
-#X text 89 102 - a vasp message is structured by the following parts:
-;
-#X text 110 135 it always starts with;
-#X text 110 450 set all samples of buf1 to 0;
-#X text 110 384 generate a sine wave at 2Hz;
-#X msg 311 451 vasp buf1;
-#X obj 311 497 vasp.update;
-#X obj 311 473 vasp.= 0;
-#X obj 310 412 vasp.update;
-#X obj 310 383 vasp.osc 22050;
-#N canvas 0 0 450 300 graph1 0;
-#X array buf1 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 498 403 graph;
-#X msg 310 323 vasp 44100 buf1 22050 0;
-#X text 110 325 one vectored vasp message:;
-#X obj 73 582 cnv 15 800 480 empty empty empty 20 12 0 14 -241339 -66577
-0;
-#X text 138 890 set all samples of buf1 and buf2 to 0;
-#X msg 275 910 vasp buf2 buf3;
-#X obj 275 956 vasp.update;
-#X obj 275 932 vasp.= 0;
-#X obj 274 846 vasp.update;
-#X obj 274 816 vasp.osc 22050;
-#X text 139 993 a vasp message can contain as many vectors as you like
-\, but all vectors have the same length;
-#X msg 274 714 vasp 44100 buf2 0 0 buf3 22050;
-#X text 110 689 two vectored vasp message:;
-#X text 110 633 all vectors have the same length \, but the vectors
-can differ in the buffers and offsets;
-#X text 89 597 - if a vasp message contains more than one vector:;
-#N canvas 0 0 450 300 graph1 0;
-#X array buf2 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 477 754 graph;
-#N canvas 0 0 450 300 graph1 0;
-#X array buf3 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 478 878 graph;
-#X text 110 184 if missing \, it refers to the whole buffer \, or type
-;
-#X text 139 1028 different vectors of a vasp are processed in parallel
-or as pairs for complex operations respectively.;
-#X obj 860 1077 cnv 15 15 15 empty empty empty 20 12 0 14 -262144 -66577
-0;
-#X text 336 339 (CLICK HERE);
-#X text 377 451 (CLICK HERE);
-#X text 326 736 (CLICK HERE);
-#X text 470 683 referring to buffer buf1 from 0 sec to 1 sec on channel
-0 and buffer buf2 from 0.5 sec to 1.5 sec on channel 0;
-#X text 354 934 (CLICK HERE);
-#X text 393 271 (default 0 \, it is only used in Max/MSP);
-#X text 453 342 referring to buffer buf1 from 0.5sec to 1.5sec on channel
-0;
-#X connect 20 0 22 0;
-#X connect 22 0 21 0;
-#X connect 24 0 23 0;
-#X connect 26 0 24 0;
-#X connect 30 0 32 0;
-#X connect 32 0 31 0;
-#X connect 34 0 33 0;
-#X connect 36 0 34 0;
-#X restore 232 325 pd syntax;
-#X text 88 357 additional messages;
-#N canvas 30 20 964 685 moremessages 0;
-#X obj 59 74 cnv 15 800 330 empty empty empty 20 12 0 14 -241339 -66577
-0;
-#X obj 330 342 vasp.* 0.5;
-#X text 128 192 set all samples of buf1 to 0;
-#X obj 330 374 vasp.update;
-#X obj 330 316 vasp.noise;
-#X msg 330 191 vasp buf4;
-#X obj 330 243 vasp.update;
-#X obj 330 217 vasp.= 0;
-#X obj 330 159 vasp.update;
-#X obj 330 133 vasp.osc 22050;
-#X msg 330 290 vasp buf5;
-#X text 470 92 sets the message \, bang triggers the operation;
-#X text 68 29 additional vasp messages:;
-#X msg 330 92 set vasp 44100 buf4;
-#X text 107 92 - set:;
-#N canvas 0 0 450 300 graph1 0;
-#X array buf4 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 503 145 graph;
-#N canvas 0 0 450 300 graph1 0;
-#X array buf5 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 504 269 graph;
-#X obj 286 108 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X text 107 115 - bang:;
-#X obj 60 662 cnv 15 800 290 empty empty empty 20 12 0 14 -241339 -66577
-0;
-#X text 108 688 - update:;
-#X msg 233 726 update 1;
-#X msg 297 726 update 0;
-#X msg 361 690 vasp buf7;
-#N canvas 0 0 450 300 graph1 0;
-#X array buf7 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 521 699 graph;
-#X obj 651 903 vasp.update;
-#X obj 392 752 random 10;
-#X obj 392 778 * 0.1;
-#X msg 651 877 vasp buf7;
-#X obj 361 716 t a b;
-#X obj 60 975 cnv 15 800 290 empty empty empty 20 12 0 14 -241339 -66577
-0;
-#X text 134 998 - detach:;
-#X text 233 839 with argument 1 or 0 you can turn automatic display-update
-on or off (default is off).;
-#N canvas 0 0 450 300 graph1 0;
-#X array buf8 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 525 1088 graph;
-#X obj 297 1231 vasp.u;
-#X obj 297 1205 vasp.opt;
-#X obj 297 1178 vasp.rfft;
-#X msg 297 1074 vasp buf8;
-#X msg 225 1095 detach 1;
-#X text 238 998 use multithreading;
-#X msg 162 1095 detach 0;
-#X obj 59 1290 cnv 15 800 300 empty empty empty 20 12 0 14 -241339
--66577 0;
-#X text 127 1321 - radio:;
-#X obj 845 1762 cnv 15 15 15 empty empty empty 20 12 0 14 -262144 -66577
-0;
-#X obj 59 430 cnv 15 800 210 empty empty empty 20 12 0 14 -241339 -66577
-0;
-#X text 129 556 set all samples of buf5/6 to 0;
-#X msg 351 559 vasp buf5 buf6;
-#X obj 351 611 vasp.update;
-#X obj 351 585 vasp.= 0;
-#X msg 351 470 to vasp buf6 \, vasp buf5;
-#X obj 351 522 vasp.update;
-#X text 143 474 sets the target buffer buf6;
-#N canvas 0 0 450 300 graph1 0;
-#X array buf6 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 515 515 graph;
-#X text 113 448 - to:;
-#X msg 192 1537 radio update 1;
-#X msg 187 1386 radio detach 1;
-#X text 149 1536 also:;
-#X obj 297 1497 vasp.u;
-#N canvas 0 0 450 300 graph1 0;
-#X array buf9 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 526 1398 graph;
-#X msg 297 1367 vasp buf9;
-#X obj 351 496 vasp.*osc 22100;
-#X text 45 497 and modulate the noise with a 2Hz sine wave;
-#X text 233 875 if automatic update is turned off \, you explicitely
-have to update the display with the object vasp.update;
-#X obj 361 806 vasp.=;
-#X text 237 1019 this very useful switch can put the vasp-calculation
-into the background and (try to) avoid dropouts in the Pd-DSP-processing.
-1 = on \, 0 = off.;
-#X obj 297 1125 vasp.noise;
-#X obj 297 1149 vasp.flp 100;
-#X text 392 1147 low pass filter;
-#X text 383 1125 generate noise;
-#X text 235 1321 radio messages are passed to/through all vasp objects
-of an object chain;
-#X obj 297 1422 vasp.xwindow lin;
-#X obj 297 1466 vasp.sqr;
-#X text 354 1465 square it;
-#X text 355 1439 make linear window;
-#X text 69 45 set \, bang \, to \, update \, detach \, help;
-#X obj 61 1624 cnv 15 800 130 empty empty empty 20 12 0 14 -241339
--66577 0;
-#X text 127 1636 - help:;
-#X msg 240 1676 help;
-#X obj 240 1709 vasp.??;
-#X msg 323 1676 help;
-#X obj 323 1709 vasp.s/;
-#X text 236 1637 print out a short description of the object;
-#X text 376 1177 real fft;
-#X connect 1 0 3 0;
-#X connect 4 0 1 0;
-#X connect 5 0 7 0;
-#X connect 7 0 6 0;
-#X connect 9 0 8 0;
-#X connect 10 0 4 0;
-#X connect 13 0 9 0;
-#X connect 17 0 9 0;
-#X connect 21 0 63 0;
-#X connect 22 0 63 0;
-#X connect 23 0 29 0;
-#X connect 26 0 27 0;
-#X connect 27 0 63 1;
-#X connect 28 0 25 0;
-#X connect 29 0 63 0;
-#X connect 29 1 26 0;
-#X connect 35 0 34 0;
-#X connect 36 0 35 0;
-#X connect 37 0 65 0;
-#X connect 38 0 36 0;
-#X connect 38 0 66 0;
-#X connect 38 0 65 0;
-#X connect 40 0 36 0;
-#X connect 40 0 66 0;
-#X connect 40 0 65 0;
-#X connect 46 0 48 0;
-#X connect 48 0 47 0;
-#X connect 49 0 60 0;
-#X connect 55 0 70 0;
-#X connect 59 0 70 0;
-#X connect 60 0 50 0;
-#X connect 65 0 66 0;
-#X connect 66 0 36 0;
-#X connect 70 0 71 0;
-#X connect 71 0 57 0;
-#X connect 77 0 78 0;
-#X connect 79 0 80 0;
-#X restore 232 356 pd moremessages;
-#X text 107 389 the vasp objects;
-#N canvas 57 40 412 447 objects 0;
-#X obj 59 28 cnv 15 15 15 empty empty vasp_objects 0 10 1 14 -262144
--1 0;
-#N canvas 343 209 509 292 fftobjects 0;
-#X obj 281 103 vasp.r!fft;
-#X obj 281 71 vasp.rfft;
-#X obj 72 160 vasp.polar;
-#X obj 72 103 vasp.c!fft;
-#X obj 72 71 vasp.cfft;
-#X text 145 160 changes between cartesian and polar representation
-;
-#X text 358 103 inverse real fft;
-#X text 145 71 complex fft;
-#X text 145 103 inverse complex fft;
-#X text 358 71 real fft;
-#X text 145 213 changes between polar and cartesian representation
-;
-#X obj 72 212 vasp.rect;
-#X obj 35 22 cnv 15 15 15 empty empty fftobjects 0 10 1 14 -262144
--1 0;
-#X restore 71 206 pd fftobjects;
-#N canvas 386 9 609 639 arithmetic 0;
-#X obj 354 138 vasp.c!-;
-#X text 149 135 reverse subtraction;
-#X obj 76 136 vasp.!-;
-#X text 437 421 integral function;
-#X text 437 444 differential function;
-#X obj 362 448 vasp.dif;
-#X obj 362 422 vasp.int;
-#X obj 361 346 vasp.r+;
-#X text 414 350 radius offset;
-#X obj 354 216 vasp.c!/;
-#X text 150 213 reverse division;
-#X obj 76 214 vasp.!/;
-#X obj 355 250 vasp.c=;
-#X obj 354 190 vasp.c/;
-#X obj 354 164 vasp.c*;
-#X obj 354 112 vasp.c-;
-#X obj 354 86 vasp.c+;
-#X obj 76 578 vasp.sign;
-#X obj 76 552 vasp.%;
-#X obj 76 526 vasp.abs;
-#X obj 76 500 vasp.!=;
-#X obj 76 474 vasp.==;
-#X obj 76 344 vasp.>=;
-#X obj 76 318 vasp.<=;
-#X obj 76 292 vasp.>;
-#X obj 76 266 vasp.<;
-#X obj 76 240 vasp.=;
-#X obj 76 188 vasp./;
-#X obj 76 162 vasp.*;
-#X obj 76 110 vasp.-;
-#X obj 76 84 vasp.+;
-#X text 150 338 vasp >= x;
-#X text 150 315 vasp >= x;
-#X text 150 292 vasp > x;
-#X text 150 269 vasp < x;
-#X text 151 473 equal to;
-#X text 152 161 multiplication;
-#X text 149 187 division;
-#X text 150 106 subtraction;
-#X text 153 499 not equal to;
-#X text 153 551 modulo (remainder of a division);
-#X text 151 525 absolute value of a vasp;
-#X text 150 83 addition;
-#X text 354 62 complex ....;
-#X text 150 239 vasp = x;
-#X text 152 577 values < 0 become -1 | values > 0 become 1;
-#X text 361 322 radius ....;
-#X obj 35 22 cnv 15 15 15 empty empty arithmetic 0 10 1 14 -262144
--1 0;
-#X obj 355 276 vasp.cconj;
-#X obj 76 370 vasp.a<;
-#X obj 76 396 vasp.a>;
-#X obj 76 422 vasp.a<=;
-#X obj 76 448 vasp.a>=;
-#X text 149 369 abs(vasp) < abs(x);
-#X text 149 392 abs(vasp) > abs(x);
-#X text 149 444 abs(vasp) >= abs(x);
-#X text 149 421 abs(vasp) <= abs(x);
-#X obj 362 488 vasp.sum?;
-#X text 433 486 sum of samples;
-#X restore 72 128 pd arithmetic;
-#N canvas 197 195 744 308 generators 0;
-#X obj 389 194 vasp.*cosc;
-#X obj 389 138 vasp.*phasor;
-#X obj 389 110 vasp.*osc;
-#X obj 72 222 vasp.cnoise;
-#X obj 72 194 vasp.cosc;
-#X obj 72 166 vasp.noise;
-#X obj 72 138 vasp.phasor;
-#X obj 72 110 vasp.osc;
-#X text 72 67 generate .....;
-#X text 166 165 vasp noise generator;
-#X text 166 134 vasp saw tooth generator;
-#X text 166 109 vasp sine wave generator;
-#X text 166 226 complex noise;
-#X text 166 190 complex sine wave;
-#X obj 35 22 cnv 15 15 15 empty empty generators 0 10 1 14 -262144
--1 0;
-#X text 366 67 multiply a buffer content with the oscillator functions
-...;
-#X restore 72 179 pd generators;
-#N canvas 510 190 355 349 filters 0;
-#X obj 53 107 vasp.flp;
-#X obj 53 77 vasp.fhp;
-#X text 157 111 low pass;
-#X text 157 80 high pass;
-#X obj 35 22 cnv 15 15 15 empty empty filters 0 10 1 14 -262144 -1
-0;
-#X obj 52 205 vasp.rvalleys;
-#X obj 52 238 vasp.rpeaks;
-#X text 156 205 radius valleys;
-#X text 156 238 radius peaks;
-#X obj 52 173 vasp.peaks;
-#X obj 52 140 vasp.valleys;
-#X text 156 175 local peaks of a vasp;
-#X text 156 142 local minima of a vasp;
-#X restore 71 255 pd filters;
-#N canvas 306 143 560 383 displace 0;
-#X text 158 163 rotate buffer content symmetrically;
-#X obj 80 164 vasp.xrot;
-#X obj 80 232 vasp.xmirr;
-#X obj 80 197 vasp.mirr;
-#X obj 80 132 vasp.rot;
-#X obj 80 97 vasp.xshift;
-#X obj 80 62 vasp.shift;
-#X text 158 231 mirrors a vasp symmetrically;
-#X text 158 196 mirrors a vasp;
-#X text 158 61 shifts the buffer content;
-#X text 158 131 rotate buffer content;
-#X obj 35 22 cnv 15 15 15 empty empty displace 0 10 1 14 -262144 -1
-0;
-#X text 157 96 shifts the buffer content symmetrically;
-#X obj 80 275 vasp.tilt;
-#X obj 80 316 vasp.xtilt;
-#X text 160 274 resamples around a center position;
-#X text 160 310 buffer is divided in two symmetrical halves and each
-one is resampled around a center position;
-#X restore 71 230 pd displace;
-#N canvas 206 180 677 313 transcendent 0;
-#X text 403 97 complex sample^2;
-#X text 403 67 complex integer power function;
-#X text 145 195 square root;
-#X text 145 226 signed sample^2;
-#X obj 329 66 vasp.cpowi;
-#X obj 329 96 vasp.csqr;
-#X obj 73 257 vasp.ssqrt;
-#X obj 73 226 vasp.ssqr;
-#X obj 73 194 vasp.sqrt;
-#X obj 73 164 vasp.sqr;
-#X obj 73 134 vasp.pow;
-#X text 145 257 signed square root;
-#X text 145 135 samps^x;
-#X text 145 165 sample^2;
-#X obj 329 142 vasp.rpow;
-#X text 396 143 radius power function;
-#X obj 73 102 vasp.log;
-#X obj 73 66 vasp.exp;
-#X text 145 102 logarithm;
-#X text 145 66 exponential;
-#X obj 35 22 cnv 15 15 15 empty empty transcendent 0 10 1 14 -262144
--1 0;
-#X restore 72 153 pd transcendent;
-#N canvas 236 197 682 329 minmax_etc. 0;
-#X obj 422 250 vasp.rmin;
-#X obj 422 218 vasp.rmax;
-#X text 511 250 radius minimum;
-#X text 511 219 radius maximum;
-#X obj 76 250 vasp.min;
-#X obj 76 218 vasp.max;
-#X obj 76 187 vasp.max?;
-#X obj 76 156 vasp.min?;
-#X obj 76 125 vasp.amax?;
-#X obj 76 94 vasp.amin?;
-#X obj 422 187 vasp.rmax?;
-#X obj 422 156 vasp.rmin?;
-#X obj 76 62 vasp.minmax;
-#X text 167 250 minimum of vasp and argument;
-#X text 167 219 maximum of vasp and argument;
-#X text 167 156 output min. value of a vasp;
-#X text 167 187 output max. value of a vasp;
-#X text 167 125 output max. absolute value of a vasp;
-#X text 167 94 output min. absolute value of a vasp;
-#X text 511 187 radius max. value;
-#X text 511 156 radius min. value;
-#X text 167 65 splits a vasp into minimum and maximum values;
-#X obj 35 22 cnv 15 15 15 empty empty minmax 0 10 1 14 -262144 -1 0
-;
-#X restore 71 279 pd minmax_etc.;
-#N canvas 229 139 538 399 window-functions 0;
-#X obj 59 28 cnv 15 15 15 empty empty window-functions 0 10 1 14 -262144
--1 0;
-#X obj 77 92 vasp.window;
-#X obj 77 125 vasp.xwindow;
-#X obj 77 159 vasp.!window;
-#X obj 116 255 vasp.*window;
-#X obj 116 289 vasp.*xwindow;
-#X obj 116 318 vasp.*!window;
-#X text 188 122 symmetrical window;
-#X text 188 90 left part of symmetrical window;
-#X text 190 160 right part of symmetrical window;
-#X text 77 212 multiply...;
-#X restore 71 303 pd window-functions;
-#N canvas 188 241 512 403 utilities 0;
-#X obj 77 143 vasp.cnorm;
-#X obj 80 321 vasp.pwrap;
-#X obj 80 265 vasp.opt;
-#X obj 77 64 vasp.gate;
-#X text 158 265 optimize buffer content;
-#X text 157 64 gates vasp under a value (amplitude);
-#X text 158 143 sets complex radius of all samples to unity;
-#X obj 80 292 vasp.ropt;
-#X text 157 294 radius optimize;
-#X obj 77 90 vasp.rgate;
-#X text 158 90 radius gate;
-#X text 158 321 wraps value from 0-2 to -1 to 1;
-#X obj 59 28 cnv 15 15 15 empty empty utilities 0 10 1 14 -262144 -1
-0;
-#X obj 77 115 vasp.fix;
-#X obj 76 173 vasp.radio;
-#X text 73 226 abstractions:;
-#X text 158 115 fix NAN (not a number) values;
-#X text 157 172 filter radio messages;
-#X restore 71 326 pd utilities;
-#N canvas 173 0 652 692 declaration 0;
-#X obj 68 42 cnv 15 15 15 empty empty declaration 0 10 1 14 -262144
--1 0;
-#X text 184 148 get a vector of a vasp;
-#X obj 84 152 vasp.vector;
-#X text 184 179 get the number of vectors of a vasp;
-#X obj 84 180 vasp.vectors?;
-#X text 184 207 set a vasp's offset(s) into the vector buffers;
-#X obj 84 208 vasp.offset;
-#X text 184 235 shift a vasp's offset(s) into the vector buffers;
-#X obj 84 236 vasp.offset+;
-#X text 184 263 get a single vectored vasp's offset(s) into the buffer
-;
-#X obj 84 264 vasp.offset?;
-#X obj 84 292 vasp.offset=;
-#X text 184 319 set a vasps frame count;
-#X obj 84 320 vasp.frames;
-#X text 184 349 raise/lower a vasps frame count;
-#X obj 84 348 vasp.frames+;
-#X text 184 374 get a vasps frame count;
-#X obj 84 376 vasp.frames?;
-#X obj 84 404 vasp.frames*;
-#X obj 84 432 vasp.frames/;
-#X obj 84 460 vasp.frames=;
-#X obj 84 488 vasp.size;
-#X obj 84 516 vasp.size+;
-#X obj 84 544 vasp.size*;
-#X obj 84 600 vasp.size?;
-#X obj 84 572 vasp.size/;
-#X obj 84 628 vasp.channel;
-#X obj 84 656 vasp.channel?;
-#X obj 84 124 vasp;
-#X text 184 123 store and output a vasp;
-#X text 184 405 change a vasps frame count by multiplication;
-#X text 184 430 change a vasps frame count by division;
-#X text 184 486 set the size of an array/buffer;
-#X text 186 517 raise the size of an array/buffer;
-#X text 186 542 change the size of an array/buffer by multiplication
-;
-#X text 185 603 get the size of a vasp;
-#X text 185 578 change the size of an array/buffer by division;
-#X text 186 658 get the channel of a multichannel vasp (MaxMSP only)
-;
-#X text 186 633 define the channel of a multichannel vasp (MAXMSP only)
-;
-#X text 55 84 (get help on right click/help just as usual);
-#X text 184 291 set a vasp's offset by searching for a value;
-#X text 184 461 change a vasp's frame count by searching for a value
-;
-#X restore 72 78 pd declaration;
-#N canvas 238 51 544 560 basics 0;
-#X text 173 122 check vasp dimensions;
-#X obj 73 122 vasp.check;
-#X text 173 162 sync 2 or more vasps;
-#X obj 73 162 vasp.sync;
-#X text 173 142 update the graphics of a patcher (e.g. waveform);
-#X obj 73 142 vasp.update;
-#X text 173 182 output a vasp multiply;
-#X obj 73 182 vasp.multi;
-#X text 173 228 split a vasp into its vectors;
-#X obj 73 228 vasp.split 2;
-#X text 173 248 join several vasps into one;
-#X obj 73 248 vasp.join 2;
-#X text 173 268 spit out vectors of a vasp (one vector after the other)
-;
-#X obj 73 268 vasp.spit;
-#X text 173 288 gather several vasps into one;
-#X obj 73 288 vasp.gather;
-#X text 173 308 output vasps with different lengths and offsets;
-#X obj 73 308 vasp.part;
-#X text 174 412 output the samples of a vasp as list;
-#X obj 74 412 vasp.?;
-#X text 174 431 output all non zero samples of a vasp as list;
-#X obj 74 432 vasp.??;
-#X obj 71 64 cnv 15 15 15 empty empty basics 0 10 1 14 -262144 -1 0
-;
-#X obj 73 328 vasp.->;
-#X text 173 328 copy a vasp into another one;
-#X text 173 348 copy a complex vasp;
-#X obj 73 348 vasp.c->;
-#X obj 75 469 vasp.!;
-#X text 175 469 create a temporary vasp (immediate);
-#X restore 72 103 pd basics;
-#X restore 232 387 pd objects;
-#X text 149 418 envelopes;
-#N canvas 39 33 908 540 envelopes 0;
-#N canvas 40 55 255 173 clear_buffer 0;
-#X obj 59 79 vasp.update;
-#X obj 59 56 vasp.= 0;
-#X obj 59 26 inlet;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X restore 497 300 pd clear_buffer;
-#N canvas 0 0 450 300 graph167 0;
-#X array bufenv1 88200 float 0;
-#X coords 0 1 88199 -1 300 120 1;
-#X restore 513 99 graph;
-#N canvas 431 348 401 213 init 0;
-#X obj 36 19 loadbang;
-#X msg 36 73 \; \$1 xticks 0 4410 10 \; \$1 xlabel 1.1 0 22050 44100
-66150 88200 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 94000 -1 -0.5 0 0.5
-1;
-#X msg 36 45 symbol bufenv1;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 621 293 pd init;
-#X obj 48 469 vasp.u;
-#X text 43 17 create envelopes from data-pairs;
-#X msg 497 272 vasp bufenv1;
-#X msg 46 103 vasp bufenv1;
-#X obj 46 159 vasp.u;
-#X obj 46 319 vasp.=;
-#X obj 46 263 t b a;
-#X msg 46 291 vasp bufenv1;
-#X obj 46 347 vasp.u;
-#X msg 46 222 env 0 0 0.8 1500 1 4000 0.95 10000 0.5 20000 0.15 55000
-0 88200;
-#X msg 48 397 vasp bufenv1;
-#X obj 48 421 vasp.!window lin;
-#X obj 48 447 vasp.* env 0 0 1 22050;
-#X obj 46 131 vasp.= env 1 0 -0.6 70000;
-#X text 231 129 an envelope as a creation argument;
-#X text 45 199 or sent as message;
-#X text 159 394 used as an argument alternatively to a value or vasp
-;
-#X text 46 85 CLICK HERE!;
-#X text 43 36 value - position in samples \, value2 - position2 \,
-...;
-#X connect 5 0 0 0;
-#X connect 6 0 16 0;
-#X connect 8 0 11 0;
-#X connect 9 0 10 0;
-#X connect 9 1 8 1;
-#X connect 10 0 8 0;
-#X connect 12 0 9 0;
-#X connect 13 0 14 0;
-#X connect 14 0 15 0;
-#X connect 15 0 3 0;
-#X connect 16 0 7 0;
-#X restore 232 419 pd envelopes;
-#X text 137 450 vasps units;
-#N canvas 49 240 511 378 units 0;
-#N canvas 442 226 404 340 Hz_to_period_length 0;
-#X text 17 201 current sampling rate;
-#X floatatom 157 241 0 0 0 0 - - -;
-#X obj 157 143 t b f;
-#X text 215 242 period length;
-#X floatatom 157 115 0 0 0 0 - - -;
-#X obj 157 210 / 1;
-#X floatatom 30 180 0 0 0 0 - - -;
-#X text 202 112 frequency in Hz;
-#X obj 30 138 samplerate~;
-#X obj 30 115 loadbang;
-#X obj 39 44 cnv 15 15 15 empty empty Hz_to_period_length 0 10 1 14
--262144 -1 0;
-#X connect 2 0 5 0;
-#X connect 2 1 5 1;
-#X connect 4 0 2 0;
-#X connect 5 0 1 0;
-#X connect 8 0 6 0;
-#X connect 8 0 5 0;
-#X connect 9 0 8 0;
-#X restore 150 310 pd Hz_to_period_length;
-#X text 103 281 sample rate/frequency in Hz = frequency in period length
-(float);
-#X text 60 264 - frequencies are always defined in period lengths;
-#X msg 149 227 vasp 44100 buf1 22050 0;
-#X text 103 187 e.g: vasp message with an offset of 0.5 sec. and a
-length of 1 sec. (sr 44100);
-#X text 60 155 - lengths and offsets are always defined in samples
-(depending on sample rate);
-#X msg 150 113 vasp 44100 buf1 22050 0;
-#X text 60 69 - vasp index counting starts from 0;
-#X text 104 81 e.g: channel 0 in a vasp message means first channel
-in the buffer;
-#X obj 51 27 cnv 15 15 15 empty empty vasp_units 0 10 1 14 -262144
--1 0;
-#X restore 233 451 pd units;
-#X text 112 483 vasp data types;
-#N canvas 218 38 524 621 data_types 0;
-#X text 68 48 vasp \, float \, envelope \, complex number \, double
-;
-#X text 83 84 vasp;
-#X text 83 196 float;
-#X text 96 130 vectors are always processed in parallel;
-#X text 81 280 envelope;
-#X text 95 216 (real) pd-style numbers;
-#X text 100 298 list of pairs setting value and position;
-#X text 79 380 complex numbers;
-#X msg 96 155 vasp buf1 buf2;
-#X floatatom 98 239 5 0 0 0 - - -;
-#X msg 100 323 env 0.5 0 -1 100 34.77 500;
-#X text 100 402 selector "complex" and pair of numbers;
-#X msg 100 427 complex 2.6 5.99;
-#X text 225 428 2.6+5.99i;
-#X text 83 477 double;
-#X msg 105 526 double 1 1e-013;
-#X text 101 501 for double precision of numbers;
-#X text 96 106 a vasp consists of one or more vectors of data;
-#X text 209 520 the two components are added internally;
-#X text 209 532 to represent a double precision number;
-#X restore 233 484 pd data_types;
-#X text 121 515 vasp glossary;
-#N canvas 69 118 655 553 glossary 0;
-#X text 100 84 buffer~ (MaxMSP) / array (Pd);
-#X text 120 100 resident data-field (can be channel-interleaved in
-Max/MSP) in system memory containing a number of frames;
-#X text 100 313 channel;
-#X text 100 379 vector;
-#X text 100 435 vasp;
-#X text 120 397 reference (with an offset and length \, with frames
-as units) to one channel of a buffer~ or array vector;
-#X text 120 452 contains one or more vectors in parallel with one common
-length but in general different offsets/channels per vector;
-#X text 120 330 a buffer~ (in MaxMSP) consists of one or more channels
-\, resulting in 1 \, 2 or 4 data elements per frame \, 0-indexed;
-#X text 121 183 32 bit IEEE floating point value \, typically (but
-not necessarily) normalized to the range -1...1 \;;
-#X text 100 161 data element (representing a sample);
-#X text 120 247 (aka "sample") time unit of sampled data - if multiple
-channels (typically 2 or 4) are sampled \, there are multiple data
-elements per frame;
-#X text 100 227 frame;
-#X obj 82 40 cnv 15 15 15 empty empty glossary 0 10 1 14 -262144 -1
-0;
-#X restore 233 516 pd glossary;
diff --git a/externals/grill/vasp/pd/bass.aif b/externals/grill/vasp/pd/bass.aif
deleted file mode 100644
index 97a7851e..00000000
--- a/externals/grill/vasp/pd/bass.aif
+++ /dev/null
Binary files differ
diff --git a/externals/grill/vasp/pd/beat.aif b/externals/grill/vasp/pd/beat.aif
deleted file mode 100644
index 0967480d..00000000
--- a/externals/grill/vasp/pd/beat.aif
+++ /dev/null
Binary files differ
diff --git a/externals/grill/vasp/pd/change2.pd b/externals/grill/vasp/pd/change2.pd
deleted file mode 100644
index 2b93562d..00000000
--- a/externals/grill/vasp/pd/change2.pd
+++ /dev/null
@@ -1,25 +0,0 @@
-#N canvas 216 304 478 265 10;
-#X obj 121 46 inlet;
-#X obj 121 71 unpack;
-#X text 207 41 change for pairs;
-#X obj 193 155 t b f;
-#X obj 152 97 t f f;
-#X obj 117 97 t f f;
-#X obj 152 219 outlet;
-#X obj 152 191 pack 0 0;
-#X obj 121 133 sel \$1;
-#X obj 162 133 sel \$2;
-#X text 209 57 args: other default values than 0 0;
-#X text 249 240 used in vasp-help-patches;
-#X connect 0 0 1 0;
-#X connect 1 0 5 0;
-#X connect 1 1 4 0;
-#X connect 3 0 7 0;
-#X connect 3 1 7 1;
-#X connect 4 0 9 1;
-#X connect 4 1 9 0;
-#X connect 5 0 8 1;
-#X connect 5 1 8 0;
-#X connect 7 0 6 0;
-#X connect 8 1 7 0;
-#X connect 9 1 3 0;
diff --git a/externals/grill/vasp/pd/filelist.pd b/externals/grill/vasp/pd/filelist.pd
deleted file mode 100644
index 4d6366f6..00000000
--- a/externals/grill/vasp/pd/filelist.pd
+++ /dev/null
@@ -1,24 +0,0 @@
-#N canvas 100 100 118 78 10;
-#X obj 0 0 cnv 14 118 78 empty empty read 0 7 0 8 -262144 -66577 0
-;
-#X obj 34 16 hdl 14 0 524928 6 \$1-beat empty empty 0 -6 128 8 -262144
--1 -1 3;
-#X obj 34 16 cnv 14 84 14 empty \$1-beat-color beat.aif 5 7 64 8 -166441
--233017 8214;
-#X obj 34 32 hdl 14 0 524800 6 \$1-fly empty empty 0 -6 128 8 -262144
--1 -1 3;
-#X obj 34 0 hdl 14 0 524928 6 \$1-bass empty empty 0 -6 128 8 -262144
--1 -1 3;
-#X obj 34 0 cnv 14 84 14 empty \$1-bass-color bass.aif 5 7 64 8 -166441
--233017 8214;
-#X obj 34 48 hdl 14 0 525312 6 \$1-plastic empty empty 0 -6 128 8 -262144
--1 -1 3;
-#X obj 34 48 cnv 14 84 14 empty \$1-plastic-color plastic.aif 5 7 64
-8 -166441 -233017 8220;
-#X obj 34 64 hdl 14 0 524800 6 \$1-own empty empty 0 -6 128 8 -262144
--1 -1 0;
-#X obj 34 64 cnv 14 84 14 empty \$1-own-color own_sample 5 7 64 8 -166441
--233017 8212;
-#X obj 34 32 cnv 14 84 14 empty \$1-fly-color fly.aif 5 7 64 8 -166441
--233017 8212;
-#X coords 0 0 1 1 118 78 1;
diff --git a/externals/grill/vasp/pd/filelisthandler.pd b/externals/grill/vasp/pd/filelisthandler.pd
deleted file mode 100644
index 3d7dbd11..00000000
--- a/externals/grill/vasp/pd/filelisthandler.pd
+++ /dev/null
@@ -1,102 +0,0 @@
-#N canvas 0 0 769 523 10;
-#X obj 38 390 outlet;
-#X msg 80 267 color \$1 \$2;
-#X msg 194 267 color \$1 \$2;
-#X msg 308 267 color \$1 \$2;
-#X msg 422 267 color \$1 \$2;
-#X obj 38 155 t b b b;
-#X obj 152 155 t b b b;
-#X obj 266 155 t b b b;
-#X obj 380 155 t b b b;
-#X msg 80 184 6 12;
-#X msg 48 184 1 10;
-#X msg 160 184 1 10;
-#X msg 194 184 6 12;
-#X msg 275 184 1 10;
-#X msg 308 184 6 12;
-#X msg 388 184 1 10;
-#X msg 422 184 6 12;
-#X msg 38 331 symbol bass.aif;
-#X msg 151 331 symbol beat.aif;
-#X msg 266 331 symbol fly.aif;
-#X msg 381 331 symbol plastic.aif;
-#X obj 532 61 inlet;
-#X obj 532 81 sel 1 2 3 4;
-#X text 517 35 for loadbang;
-#X obj 38 130 r \$1-bass;
-#X obj 152 130 r \$1-beat;
-#X obj 266 130 r \$1-fly;
-#X obj 380 130 r \$1-plastic;
-#X obj 80 292 s \$1-bass-color;
-#X obj 194 292 s \$1-beat-color;
-#X obj 308 292 s \$1-fly-color;
-#X obj 422 292 s \$1-plastic-color;
-#X text 164 397 used in connection with filelist. arg: \$0 of parent
-patch.;
-#X obj 516 331 openpanel;
-#X msg 558 266 color \$1 \$2;
-#X obj 516 154 t b b b;
-#X msg 524 183 1 10;
-#X msg 558 183 6 12;
-#X obj 558 291 s \$1-own-color;
-#X obj 516 129 r \$1-own;
-#X connect 1 0 28 0;
-#X connect 2 0 29 0;
-#X connect 3 0 30 0;
-#X connect 4 0 31 0;
-#X connect 5 0 17 0;
-#X connect 5 1 10 0;
-#X connect 5 2 9 0;
-#X connect 6 0 18 0;
-#X connect 6 1 11 0;
-#X connect 6 2 12 0;
-#X connect 7 0 19 0;
-#X connect 7 1 13 0;
-#X connect 7 2 14 0;
-#X connect 8 0 20 0;
-#X connect 8 1 15 0;
-#X connect 8 2 16 0;
-#X connect 9 0 1 0;
-#X connect 10 0 2 0;
-#X connect 10 0 3 0;
-#X connect 10 0 4 0;
-#X connect 10 0 34 0;
-#X connect 11 0 1 0;
-#X connect 11 0 3 0;
-#X connect 11 0 4 0;
-#X connect 11 0 34 0;
-#X connect 12 0 2 0;
-#X connect 13 0 1 0;
-#X connect 13 0 2 0;
-#X connect 13 0 4 0;
-#X connect 13 0 34 0;
-#X connect 14 0 3 0;
-#X connect 15 0 3 0;
-#X connect 15 0 2 0;
-#X connect 15 0 1 0;
-#X connect 15 0 34 0;
-#X connect 16 0 4 0;
-#X connect 17 0 0 0;
-#X connect 18 0 0 0;
-#X connect 19 0 0 0;
-#X connect 20 0 0 0;
-#X connect 21 0 22 0;
-#X connect 22 0 5 0;
-#X connect 22 1 6 0;
-#X connect 22 2 7 0;
-#X connect 22 3 8 0;
-#X connect 24 0 5 0;
-#X connect 25 0 6 0;
-#X connect 26 0 7 0;
-#X connect 27 0 8 0;
-#X connect 33 0 0 0;
-#X connect 34 0 38 0;
-#X connect 35 0 33 0;
-#X connect 35 1 36 0;
-#X connect 35 2 37 0;
-#X connect 36 0 4 0;
-#X connect 36 0 3 0;
-#X connect 36 0 2 0;
-#X connect 36 0 1 0;
-#X connect 37 0 34 0;
-#X connect 39 0 35 0;
diff --git a/externals/grill/vasp/pd/filter_example.pd b/externals/grill/vasp/pd/filter_example.pd
deleted file mode 100644
index 3a3f8438..00000000
--- a/externals/grill/vasp/pd/filter_example.pd
+++ /dev/null
@@ -1,190 +0,0 @@
-#N canvas 11 0 973 640 10;
-#X obj 75 32 cnv 15 15 15 empty empty filter_example 0 10 1 14 -262144
--1 0;
-#X obj 523 555 dac~;
-#N canvas 0 0 413 295 clear_buffers 0;
-#X obj 49 73 vasp.= 0;
-#X obj 49 49 inlet;
-#X obj 49 97 vasp.u;
-#X obj 49 118 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 2 0;
-#X connect 1 0 0 0;
-#X connect 2 0 3 0;
-#X restore 657 556 pd clear_buffers;
-#X obj 304 113 filelist \$0;
-#X obj 67 133 vasp.noise;
-#X text 151 112 generate white noise or;
-#X obj 67 153 vasp.* 0.5;
-#X obj 67 173 vasp.update;
-#X obj 67 193 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X obj 66 547 vasp.update;
-#X obj 66 567 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X obj 66 527 vasp.c!fft;
-#X obj 67 241 vasp.cfft;
-#X obj 67 301 vasp.update;
-#X obj 67 321 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#N canvas 132 132 405 385 inside 0;
-#X obj 66 154 soundfiler;
-#X obj 84 238 s \$0-sample-length;
-#X obj 66 208 s \$0-draw_display;
-#X msg 214 206 resize \$1;
-#X obj 214 159 loadbang;
-#X obj 67 53 loadbang;
-#X msg 214 180 88200;
-#X obj 66 178 t b f f;
-#X obj 67 101 filelisthandler \$0;
-#X obj 214 228 s bufre1;
-#X obj 224 252 s bufim1;
-#X msg 67 133 read -resize \$1 bufre1;
-#X msg 67 79 3;
-#X connect 0 0 7 0;
-#X connect 3 0 9 0;
-#X connect 3 0 10 0;
-#X connect 4 0 6 0;
-#X connect 5 0 12 0;
-#X connect 6 0 3 0;
-#X connect 6 0 1 0;
-#X connect 7 0 2 0;
-#X connect 7 1 1 0;
-#X connect 7 2 3 0;
-#X connect 8 0 11 0;
-#X connect 11 0 0 0;
-#X connect 12 0 8 0;
-#X restore 813 559 pd inside;
-#X text 67 64 clear a region in the frequency domain to get a filter
-;
-#X msg 67 113 vasp bufre1;
-#X msg 67 221 vasp bufre1 bufim1;
-#X obj 67 261 vasp.upper;
-#X obj 67 281 vasp.= 0;
-#X obj 523 532 tabplay~ bufre1;
-#X msg 657 533 vasp bufre1 bufim1;
-#X text 157 283 clear upper (mirrored frequencies);
-#X text 539 374 0 Hz;
-#X text 677 379 sr/2;
-#X text 816 377 44.1 kHz;
-#X text 190 506 invers transform back to the time domain;
-#X obj 66 434 vasp.= 0;
-#X msg 66 414 set vasp \$1 bufre1 \$2 bufim1 \$2;
-#X obj 290 348 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X obj 66 455 vasp.update;
-#X obj 66 475 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X msg 66 507 vasp bufre1 bufim1;
-#X obj 545 110 synchrodisplay bufre1 bufim1 \$0;
-#X text 818 94 real;
-#X text 789 235 imaginary;
-#X obj 545 395 s \$0-data;
-#N canvas 109 162 271 247 tovasp 0;
-#N canvas 0 0 577 409 conversion 0;
-#X obj 123 53 inlet;
-#X obj 123 93 unpack;
-#X obj 160 182 r \$0-sample-length;
-#X obj 123 242 / 1;
-#X obj 154 242 / 1;
-#X obj 123 268 * 44100;
-#X obj 202 207 loadbang;
-#X obj 202 230 samplerate~;
-#X obj 123 299 outlet;
-#X obj 180 269 * 44100;
-#X obj 180 300 outlet;
-#X obj 366 253 runden;
-#X obj 366 231 - 0;
-#X text 450 272 offset;
-#X obj 366 177 t b f;
-#X obj 366 206 0;
-#X obj 366 317 outlet;
-#X obj 123 116 t f f f;
-#X text 370 271 length;
-#X obj 447 254 runden;
-#X text 121 326 lb (Hz);
-#X text 183 325 rb (Hz);
-#X obj 366 295 pack;
-#X obj 123 73 change2;
-#X floatatom 459 223 12 0 0;
-#X floatatom 453 310 5 0 0;
-#X connect 0 0 23 0;
-#X connect 1 0 17 0;
-#X connect 1 1 4 0;
-#X connect 1 1 15 1;
-#X connect 2 0 3 1;
-#X connect 2 0 4 1;
-#X connect 3 0 5 0;
-#X connect 4 0 9 0;
-#X connect 5 0 8 0;
-#X connect 6 0 7 0;
-#X connect 7 0 5 1;
-#X connect 7 0 9 1;
-#X connect 9 0 10 0;
-#X connect 11 0 22 0;
-#X connect 12 0 11 0;
-#X connect 14 0 15 0;
-#X connect 14 1 12 1;
-#X connect 15 0 12 0;
-#X connect 17 0 3 0;
-#X connect 17 1 14 0;
-#X connect 17 2 19 0;
-#X connect 17 2 24 0;
-#X connect 19 0 22 1;
-#X connect 19 0 25 0;
-#X connect 22 0 16 0;
-#X connect 23 0 1 0;
-#X restore 89 64 pd conversion;
-#X obj 89 44 r \$0-data;
-#X obj 162 153 outlet;
-#X obj 89 98 s \$0-freqdisplayl;
-#X obj 125 124 s \$0-freqdisplayr;
-#X connect 0 0 3 0;
-#X connect 0 1 4 0;
-#X connect 0 2 2 0;
-#X connect 1 0 0 0;
-#X restore 66 393 pd tovasp;
-#X text 193 224 transform;
-#N canvas 0 0 140 20 Herznumbers 0;
-#X obj 0 0 cnv 15 140 20 empty empty empty 20 12 0 14 -262144 -66577
-0;
-#X floatatom 0 3 8 0 0;
-#X floatatom 83 3 8 0 0;
-#X obj 28 30 r \$0-freqdisplayl;
-#X obj 28 54 r \$0-freqdisplayr;
-#X connect 3 0 1 0;
-#X connect 4 0 2 0;
-#X coords 0 0 1 1 140 20 1;
-#X restore 642 434 pd Herznumbers;
-#X text 547 436 selection from;
-#X text 701 436 to;
-#X text 66 348 select a region (frequecy band) and;
-#X obj 523 512 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X text 545 509 play;
-#X text 657 511 clear;
-#X text 785 436 Hz;
-#X text 65 360 draw inside the wavedisplay and press spacebar (select)
-or "s" (shift).;
-#X connect 4 0 6 0;
-#X connect 6 0 7 0;
-#X connect 7 0 8 0;
-#X connect 9 0 10 0;
-#X connect 11 0 9 0;
-#X connect 12 0 19 0;
-#X connect 13 0 14 0;
-#X connect 17 0 4 0;
-#X connect 18 0 12 0;
-#X connect 19 0 20 0;
-#X connect 20 0 13 0;
-#X connect 21 0 1 0;
-#X connect 21 0 1 1;
-#X connect 22 0 2 0;
-#X connect 28 0 31 0;
-#X connect 29 0 28 0;
-#X connect 30 0 28 0;
-#X connect 31 0 32 0;
-#X connect 33 0 11 0;
-#X connect 34 0 37 0;
-#X connect 38 0 29 0;
-#X connect 44 0 21 0;
diff --git a/externals/grill/vasp/pd/filter_examplei.pd b/externals/grill/vasp/pd/filter_examplei.pd
deleted file mode 100644
index 8ab0fd5b..00000000
--- a/externals/grill/vasp/pd/filter_examplei.pd
+++ /dev/null
@@ -1,191 +0,0 @@
-#N canvas 11 0 977 644 10;
-#X obj 75 32 cnv 15 15 15 empty empty filter_example! 0 10 1 14 -262144
--1 0;
-#X obj 523 555 dac~;
-#N canvas 0 0 413 295 clear_buffers 0;
-#X obj 49 73 vasp.= 0;
-#X obj 49 49 inlet;
-#X obj 49 97 vasp.u;
-#X obj 49 118 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 2 0;
-#X connect 1 0 0 0;
-#X connect 2 0 3 0;
-#X restore 657 556 pd clear_buffers;
-#X obj 304 113 filelist \$0;
-#X obj 67 133 vasp.noise;
-#X text 151 112 generate white noise or;
-#X obj 67 153 vasp.* 0.5;
-#X obj 67 173 vasp.update;
-#X obj 67 193 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X obj 66 557 vasp.update;
-#X obj 66 577 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X obj 66 537 vasp.c!fft;
-#X obj 67 241 vasp.cfft;
-#X obj 67 301 vasp.update;
-#X obj 67 321 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#N canvas 132 132 409 389 inside 0;
-#X obj 66 154 soundfiler;
-#X obj 84 238 s \$0-sample-length;
-#X obj 66 208 s \$0-draw_display;
-#X msg 214 206 resize \$1;
-#X obj 214 159 loadbang;
-#X obj 67 53 loadbang;
-#X msg 214 180 88200;
-#X obj 66 178 t b f f;
-#X obj 67 101 filelisthandler \$0;
-#X msg 67 79 3;
-#X msg 67 133 read -resize \$1 bufrei1;
-#X obj 214 228 s bufrei1;
-#X obj 224 252 s bufimi1;
-#X connect 0 0 7 0;
-#X connect 3 0 11 0;
-#X connect 3 0 12 0;
-#X connect 4 0 6 0;
-#X connect 5 0 9 0;
-#X connect 6 0 3 0;
-#X connect 6 0 1 0;
-#X connect 7 0 2 0;
-#X connect 7 1 1 0;
-#X connect 7 2 3 0;
-#X connect 8 0 10 0;
-#X connect 9 0 8 0;
-#X connect 10 0 0 0;
-#X restore 813 559 pd inside;
-#X obj 67 261 vasp.upper;
-#X obj 67 281 vasp.= 0;
-#X text 157 283 clear upper (mirrored frequencies);
-#X text 536 375 0 Hz;
-#X text 674 379 sr/2;
-#X text 813 377 44.1 kHz;
-#X text 198 515 invers transform back to the time domain;
-#X obj 424 352 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X obj 66 465 vasp.update;
-#X obj 66 485 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X obj 544 395 s \$0-data;
-#N canvas 109 162 271 247 tovasp 0;
-#N canvas 0 0 577 409 conversion 0;
-#X obj 123 53 inlet;
-#X obj 123 93 unpack;
-#X obj 160 182 r \$0-sample-length;
-#X obj 123 242 / 1;
-#X obj 154 242 / 1;
-#X obj 123 268 * 44100;
-#X obj 202 207 loadbang;
-#X obj 202 230 samplerate~;
-#X obj 123 299 outlet;
-#X obj 180 269 * 44100;
-#X obj 180 300 outlet;
-#X obj 366 253 runden;
-#X obj 366 231 - 0;
-#X text 450 272 offset;
-#X obj 366 177 t b f;
-#X obj 366 206 0;
-#X obj 366 317 outlet;
-#X obj 123 116 t f f f;
-#X text 370 271 length;
-#X obj 447 254 runden;
-#X text 121 326 lb (Hz);
-#X text 183 325 rb (Hz);
-#X obj 366 295 pack;
-#X obj 123 73 change2;
-#X floatatom 459 223 12 0 0 0 - - -;
-#X floatatom 453 310 5 0 0 0 - - -;
-#X connect 0 0 23 0;
-#X connect 1 0 17 0;
-#X connect 1 1 4 0;
-#X connect 1 1 15 1;
-#X connect 2 0 3 1;
-#X connect 2 0 4 1;
-#X connect 3 0 5 0;
-#X connect 4 0 9 0;
-#X connect 5 0 8 0;
-#X connect 6 0 7 0;
-#X connect 7 0 5 1;
-#X connect 7 0 9 1;
-#X connect 9 0 10 0;
-#X connect 11 0 22 0;
-#X connect 12 0 11 0;
-#X connect 14 0 15 0;
-#X connect 14 1 12 1;
-#X connect 15 0 12 0;
-#X connect 17 0 3 0;
-#X connect 17 1 14 0;
-#X connect 17 2 19 0;
-#X connect 17 2 24 0;
-#X connect 19 0 22 1;
-#X connect 19 0 25 0;
-#X connect 22 0 16 0;
-#X connect 23 0 1 0;
-#X restore 89 64 pd conversion;
-#X obj 89 44 r \$0-data;
-#X obj 162 153 outlet;
-#X obj 89 98 s \$0-freqdisplayl;
-#X obj 125 124 s \$0-freqdisplayr;
-#X connect 0 0 3 0;
-#X connect 0 1 4 0;
-#X connect 0 2 2 0;
-#X connect 1 0 0 0;
-#X restore 66 403 pd tovasp;
-#N canvas 0 0 140 20 Herznumbers 0;
-#X obj 0 0 cnv 15 140 20 empty empty empty 20 12 0 14 -262144 -66577
-0;
-#X floatatom 0 3 8 0 0 0 - - -;
-#X floatatom 83 3 8 0 0 0 - - -;
-#X obj 28 30 r \$0-freqdisplayl;
-#X obj 28 54 r \$0-freqdisplayr;
-#X connect 3 0 1 0;
-#X connect 4 0 2 0;
-#X coords 0 0 1 1 140 20 1;
-#X restore 642 434 pd Herznumbers;
-#X text 547 436 selection from;
-#X text 701 436 to;
-#X obj 523 512 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X text 545 509 play;
-#X text 657 511 clear;
-#X text 785 436 Hz;
-#X text 65 370 draw inside the wavedisplay and press spacebar (select)
-or "s" (shift).;
-#X msg 67 221 vasp bufrei1 bufimi1;
-#X msg 66 424 set vasp \$1 bufrei1 \$2 bufimi1 \$2;
-#X msg 66 517 vasp bufrei1 bufimi1;
-#X msg 657 533 vasp bufrei1 bufimi1;
-#X msg 67 113 vasp bufrei1;
-#X text 67 64 change gain of a region in the frequency domain to filter
-a buffer content;
-#X text 205 221 transform to frequency domain;
-#X text 65 355 select a region (frequecy band) \, a gainfactor;
-#X floatatom 348 353 5 0 0 0 - - -;
-#X obj 66 444 vasp.* 1;
-#X text 395 353 and;
-#X obj 544 113 synchrodisplay bufrei1 bufimi1 \$0;
-#X obj 523 532 tabplay~ bufrei1;
-#X connect 4 0 6 0;
-#X connect 6 0 7 0;
-#X connect 7 0 8 0;
-#X connect 9 0 10 0;
-#X connect 11 0 9 0;
-#X connect 12 0 16 0;
-#X connect 13 0 14 0;
-#X connect 16 0 17 0;
-#X connect 17 0 13 0;
-#X connect 23 0 45 0;
-#X connect 24 0 25 0;
-#X connect 27 0 37 0;
-#X connect 31 0 48 0;
-#X connect 36 0 12 0;
-#X connect 37 0 45 0;
-#X connect 38 0 11 0;
-#X connect 39 0 2 0;
-#X connect 40 0 4 0;
-#X connect 44 0 45 1;
-#X connect 45 0 24 0;
-#X connect 47 0 26 0;
-#X connect 48 0 1 0;
-#X connect 48 0 1 1;
diff --git a/externals/grill/vasp/pd/fly.aif b/externals/grill/vasp/pd/fly.aif
deleted file mode 100644
index 0439b85a..00000000
--- a/externals/grill/vasp/pd/fly.aif
+++ /dev/null
Binary files differ
diff --git a/externals/grill/vasp/pd/phase-random_example.pd b/externals/grill/vasp/pd/phase-random_example.pd
deleted file mode 100644
index 740f9ea4..00000000
--- a/externals/grill/vasp/pd/phase-random_example.pd
+++ /dev/null
@@ -1,86 +0,0 @@
-#N canvas 77 150 893 542 10;
-#X obj 75 32 cnv 15 15 15 empty empty phase-random_example 0 10 1 14
--262144 -1 0;
-#N canvas 92 108 411 413 inside 0;
-#X obj 66 154 soundfiler;
-#X obj 84 238 s \$0-sample-length;
-#X obj 66 208 s \$0-draw_display;
-#X msg 214 206 resize \$1;
-#X obj 214 159 loadbang;
-#X obj 67 53 loadbang;
-#X msg 214 180 88200;
-#X obj 66 178 t b f f;
-#X obj 67 101 filelisthandler \$0;
-#X obj 214 228 s bufpol3;
-#X msg 67 133 read -resize \$1 bufpol3;
-#X msg 67 79 3;
-#X obj 226 254 s bufpol4;
-#X connect 0 0 7 0;
-#X connect 3 0 9 0;
-#X connect 3 0 12 0;
-#X connect 4 0 6 0;
-#X connect 5 0 11 0;
-#X connect 6 0 3 0;
-#X connect 6 0 1 0;
-#X connect 7 0 2 0;
-#X connect 7 1 1 0;
-#X connect 7 2 3 0;
-#X connect 8 0 10 0;
-#X connect 10 0 0 0;
-#X connect 11 0 8 0;
-#X restore 781 472 pd inside;
-#X obj 427 469 dac~;
-#N canvas 0 0 413 295 clear_buffers 0;
-#X obj 49 73 vasp.= 0;
-#X obj 49 49 inlet;
-#X obj 49 97 vasp.u;
-#X obj 49 118 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 2 0;
-#X connect 1 0 0 0;
-#X connect 2 0 3 0;
-#X restore 561 469 pd clear_buffers;
-#X obj 427 426 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X text 449 423 play;
-#X text 561 424 clear;
-#X obj 495 192 wavedisplay-simple bufpol3 \$0;
-#X obj 69 95 filelist \$0;
-#X obj 427 446 tabplay~ bufpol3;
-#X msg 68 188 vasp bufpol3 bufpol4;
-#X obj 68 213 vasp.cfft;
-#X obj 68 237 vasp.polar;
-#X obj 68 261 vasp.split 2;
-#X obj 101 284 vasp.noise;
-#X obj 101 308 vasp.* 3.14159;
-#X obj 68 336 vasp.join 2;
-#X obj 68 359 vasp.rect;
-#X obj 68 381 vasp.c!fft;
-#X obj 68 405 vasp.update;
-#X obj 68 428 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X obj 720 449 table bufpol4 88200;
-#X msg 561 446 vasp bufpol3 bufpol4;
-#X text 157 213 complex fourier transformation;
-#X text 158 236 cartesian to polar coordinate conversion;
-#X text 158 258 split amplitude and phase;
-#X text 202 280 random phase;
-#X text 205 307 scale from 0 to 2*Pi;
-#X text 156 335 polar to cartesian coordinate conversion;
-#X obj 69 472 vasp.freeze;
-#X text 152 472 is an abstraction that does the same;
-#X connect 4 0 9 0;
-#X connect 9 0 2 0;
-#X connect 9 0 2 1;
-#X connect 10 0 11 0;
-#X connect 11 0 12 0;
-#X connect 12 0 13 0;
-#X connect 13 0 16 0;
-#X connect 13 1 14 0;
-#X connect 14 0 15 0;
-#X connect 15 0 16 1;
-#X connect 16 0 17 0;
-#X connect 17 0 18 0;
-#X connect 18 0 19 0;
-#X connect 19 0 20 0;
-#X connect 22 0 3 0;
diff --git a/externals/grill/vasp/pd/plastic.aif b/externals/grill/vasp/pd/plastic.aif
deleted file mode 100644
index 06237c02..00000000
--- a/externals/grill/vasp/pd/plastic.aif
+++ /dev/null
Binary files differ
diff --git a/externals/grill/vasp/pd/ringmod_example.pd b/externals/grill/vasp/pd/ringmod_example.pd
deleted file mode 100644
index 5ed9c3c0..00000000
--- a/externals/grill/vasp/pd/ringmod_example.pd
+++ /dev/null
@@ -1,63 +0,0 @@
-#N canvas 34 28 860 444 10;
-#X obj 71 32 cnv 15 15 15 empty empty ringmod_example 0 10 1 14 -262144
--1 0;
-#X obj 73 283 vasp.update;
-#X obj 391 309 dac~;
-#X obj 391 265 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X text 413 264 play;
-#N canvas 40 55 281 170 clear_buffer 0;
-#X obj 54 79 vasp.update;
-#X obj 54 56 vasp.= 0;
-#X obj 54 26 inlet;
-#X obj 54 108 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 3 0;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X restore 523 309 pd clear_buffer;
-#X obj 73 306 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X obj 428 95 wavedisplay-simple bufmosc1 \$0;
-#X msg 73 215 vasp bufmosc1;
-#X obj 73 260 vasp.*osc 220;
-#X text 177 214 modulate with 200 Hz;
-#X msg 523 286 vasp bufmosc1;
-#X obj 391 286 tabplay~ bufmosc1;
-#N canvas 92 108 388 353 inside 0;
-#X obj 66 154 soundfiler;
-#X obj 84 238 s \$0-sample-length;
-#X obj 66 208 s \$0-draw_display;
-#X msg 214 206 resize \$1;
-#X obj 214 159 loadbang;
-#X obj 66 50 loadbang;
-#X msg 214 180 88200;
-#X obj 66 178 t b f f;
-#X obj 66 98 filelisthandler \$0;
-#X msg 66 76 3;
-#X obj 214 228 s bufmosc1;
-#X msg 66 130 read -resize \$1 bufmosc1;
-#X connect 0 0 7 0;
-#X connect 3 0 10 0;
-#X connect 4 0 6 0;
-#X connect 5 0 9 0;
-#X connect 6 0 3 0;
-#X connect 6 0 1 0;
-#X connect 7 0 2 0;
-#X connect 7 1 1 0;
-#X connect 7 2 3 0;
-#X connect 8 0 11 0;
-#X connect 9 0 8 0;
-#X connect 11 0 0 0;
-#X restore 682 310 pd inside;
-#X floatatom 146 239 5 0 0;
-#X text 192 238 value;
-#X obj 79 99 filelist \$0;
-#X connect 1 0 6 0;
-#X connect 3 0 12 0;
-#X connect 8 0 9 0;
-#X connect 9 0 1 0;
-#X connect 11 0 5 0;
-#X connect 12 0 2 0;
-#X connect 12 0 2 1;
-#X connect 14 0 9 1;
diff --git a/externals/grill/vasp/pd/rndup2.pd b/externals/grill/vasp/pd/rndup2.pd
deleted file mode 100644
index a29b159a..00000000
--- a/externals/grill/vasp/pd/rndup2.pd
+++ /dev/null
@@ -1,48 +0,0 @@
-#N canvas 0 0 315 407 12;
-#X obj 34 157 int;
-#N canvas 416 247 452 302 pow2 0;
-#X obj 34 111 pow;
-#X msg 33 84 2;
-#X obj 34 57 t b f;
-#X obj 33 22 inlet;
-#X obj 33 144 outlet;
-#X connect 0 0 4 0;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X connect 2 1 0 1;
-#X connect 3 0 2 0;
-#X restore 33 199 pd pow2;
-#N canvas 0 0 227 213 log2 0;
-#X obj 36 23 inlet;
-#X obj 34 63 log;
-#X obj 36 120 /;
-#X obj 101 24 loadbang;
-#X obj 99 86 log;
-#X obj 31 157 outlet;
-#X msg 99 60 2;
-#X connect 0 0 1 0;
-#X connect 1 0 2 0;
-#X connect 2 0 5 0;
-#X connect 3 0 6 0;
-#X connect 4 0 2 1;
-#X connect 6 0 4 0;
-#X restore 34 127 pd log2;
-#X obj 65 254 !=;
-#X obj 35 100 t f f;
-#X obj 33 225 t f f;
-#X obj 33 313 * 1;
-#X obj 63 283 + 1;
-#X obj 33 357 outlet;
-#X obj 35 55 inlet;
-#X text 35 17 round up to the next power of 2;
-#X connect 0 0 1 0;
-#X connect 1 0 5 0;
-#X connect 2 0 0 0;
-#X connect 3 0 7 0;
-#X connect 4 0 2 0;
-#X connect 4 1 3 1;
-#X connect 5 0 6 0;
-#X connect 5 1 3 0;
-#X connect 6 0 8 0;
-#X connect 7 0 6 1;
-#X connect 9 0 4 0;
diff --git a/externals/grill/vasp/pd/runden.pd b/externals/grill/vasp/pd/runden.pd
deleted file mode 100644
index e73faeb5..00000000
--- a/externals/grill/vasp/pd/runden.pd
+++ /dev/null
@@ -1,27 +0,0 @@
-#N canvas 25 60 429 365 10;
-#X msg 159 115 10;
-#X obj 159 92 loadbang;
-#X obj 159 137 pow \$1;
-#X obj 79 120 * 1;
-#X obj 79 90 inlet;
-#X obj 120 167 / 1;
-#X msg 120 145 1;
-#X obj 79 145 + 0.5;
-#X obj 79 170 div;
-#X obj 79 217 outlet;
-#X obj 79 193 * 1;
-#X text 41 297 rounds to a certain number of kommadigits;
-#X text 32 267 USE: arg for number of kommavalues(?) default = 0;
-#X text 41 309 0.123456 --> runden 2 --> 0.12;
-#X connect 0 0 2 0;
-#X connect 1 0 0 0;
-#X connect 2 0 3 1;
-#X connect 2 0 5 1;
-#X connect 2 0 6 0;
-#X connect 3 0 7 0;
-#X connect 4 0 3 0;
-#X connect 5 0 10 1;
-#X connect 6 0 5 0;
-#X connect 7 0 8 0;
-#X connect 8 0 10 0;
-#X connect 10 0 9 0;
diff --git a/externals/grill/vasp/pd/synchrodisplay.pd b/externals/grill/vasp/pd/synchrodisplay.pd
deleted file mode 100644
index 39a93222..00000000
--- a/externals/grill/vasp/pd/synchrodisplay.pd
+++ /dev/null
@@ -1,13 +0,0 @@
-#N canvas 134 215 300 250 10;
-#X text 440 100 synchronizes two displays.;
-#X text 440 110 args: buffername1 buffername2 \$0 of parent patch;
-#X obj 0 0 cnv 15 304 250 empty empty empty 20 12 0 14 -262144 -66577
-0;
-#X obj -2 0 wavedisplay-select \$1 \$3;
-#X obj -2 142 wavedisplay-select \$2 \$3;
-#X obj 363 225 outlet;
-#X connect 3 0 5 0;
-#X connect 3 1 4 0;
-#X connect 4 0 5 0;
-#X connect 4 1 3 0;
-#X coords 0 0 1 1 300 250 1;
diff --git a/externals/grill/vasp/pd/vasp.cconj.pd b/externals/grill/vasp/pd/vasp.cconj.pd
deleted file mode 100644
index 5f009e0b..00000000
--- a/externals/grill/vasp/pd/vasp.cconj.pd
+++ /dev/null
@@ -1,18 +0,0 @@
-#N canvas 420 247 367 328 12;
-#X obj 28 43 inlet;
-#X obj 28 276 outlet;
-#X obj 28 124 vasp.spit 2;
-#X obj 111 163 vasp.* -1;
-#X obj 28 214 vasp.gather;
-#X text 28 13 complex conjugate;
-#X text 123 123 split into pairs;
-#X text 125 216 unite vectors;
-#X text 193 163 flip imaginary part;
-#X obj 28 80 vasp;
-#X connect 0 0 9 0;
-#X connect 2 0 3 0;
-#X connect 2 1 4 1;
-#X connect 2 2 4 0;
-#X connect 3 0 4 1;
-#X connect 4 0 1 0;
-#X connect 9 0 2 0;
diff --git a/externals/grill/vasp/pd/vasp.cconv.pd b/externals/grill/vasp/pd/vasp.cconv.pd
deleted file mode 100644
index 99587495..00000000
--- a/externals/grill/vasp/pd/vasp.cconv.pd
+++ /dev/null
@@ -1,53 +0,0 @@
-#N canvas 30 70 418 569 12;
-#X obj 88 475 vasp.c!fft;
-#X obj 229 314 vasp.= 0;
-#X obj 230 290 vasp.im;
-#X obj 197 377 vasp.cfft;
-#X obj 89 449 vasp.c*;
-#X obj 123 311 vasp.= 0;
-#X obj 124 287 vasp.im;
-#X obj 89 377 vasp.cfft;
-#X obj 70 73 inlet;
-#X obj 245 74 inlet;
-#X obj 69 526 outlet;
-#X obj 217 253 vasp;
-#X obj 196 223 t b;
-#X obj 90 412 vasp.sync;
-#X obj 90 350 vasp.sync;
-#X obj 198 350 vasp.sync;
-#X obj 70 132 vasp.radio;
-#X obj 70 104 vasp;
-#X obj 36 175 route radio;
-#X obj 245 105 vasp;
-#X text 36 8 complex convolution;
-#X text 32 28 (currently handles only discrete pairs);
-#X connect 0 0 10 0;
-#X connect 1 0 15 1;
-#X connect 2 0 1 0;
-#X connect 3 0 13 1;
-#X connect 4 0 0 0;
-#X connect 5 0 14 1;
-#X connect 6 0 5 0;
-#X connect 7 0 13 0;
-#X connect 8 0 17 0;
-#X connect 9 0 19 0;
-#X connect 11 0 2 0;
-#X connect 11 0 15 0;
-#X connect 12 0 11 0;
-#X connect 13 0 4 0;
-#X connect 13 1 4 1;
-#X connect 14 0 7 0;
-#X connect 15 0 3 0;
-#X connect 16 0 18 0;
-#X connect 16 0 10 0;
-#X connect 16 1 14 0;
-#X connect 16 1 6 0;
-#X connect 16 1 12 0;
-#X connect 17 0 16 0;
-#X connect 18 0 7 0;
-#X connect 18 0 5 0;
-#X connect 18 0 1 0;
-#X connect 18 0 3 0;
-#X connect 18 0 4 0;
-#X connect 18 0 0 0;
-#X connect 19 0 11 1;
diff --git a/externals/grill/vasp/pd/vasp.clr0.pd b/externals/grill/vasp/pd/vasp.clr0.pd
deleted file mode 100644
index 188b3667..00000000
--- a/externals/grill/vasp/pd/vasp.clr0.pd
+++ /dev/null
@@ -1,12 +0,0 @@
-#N canvas 371 329 454 304 12;
-#X obj 47 36 inlet;
-#X obj 48 181 outlet;
-#X obj 48 149 vasp.sync 2;
-#X obj 110 82 vasp.frames 1;
-#X obj 110 109 vasp.= 0;
-#X text 44 1 clears the sample 0;
-#X connect 0 0 2 0;
-#X connect 0 0 3 0;
-#X connect 2 0 1 0;
-#X connect 3 0 4 0;
-#X connect 4 0 2 1;
diff --git a/externals/grill/vasp/pd/vasp.conv.pd b/externals/grill/vasp/pd/vasp.conv.pd
deleted file mode 100644
index 4036fd61..00000000
--- a/externals/grill/vasp/pd/vasp.conv.pd
+++ /dev/null
@@ -1,37 +0,0 @@
-#N canvas 30 70 416 515 12;
-#X obj 57 76 inlet;
-#X obj 224 76 inlet;
-#X obj 60 416 outlet;
-#X obj 97 259 vasp.rfft;
-#X obj 197 262 vasp.rfft;
-#X obj 90 346 vasp.*;
-#X obj 79 375 vasp.r!fft;
-#X obj 57 142 vasp.radio;
-#X obj 97 304 vasp.sync;
-#X obj 197 219 vasp;
-#X obj 168 172 t b;
-#X obj 223 107 vasp;
-#X obj 57 108 vasp;
-#X obj 25 185 route radio;
-#X text 26 10 real convolution;
-#X text 26 30 (currently handles only discrete vectors);
-#X connect 0 0 12 0;
-#X connect 1 0 11 0;
-#X connect 3 0 8 0;
-#X connect 4 0 8 1;
-#X connect 5 0 6 0;
-#X connect 6 0 2 0;
-#X connect 7 0 2 0;
-#X connect 7 0 13 0;
-#X connect 7 1 3 0;
-#X connect 7 1 10 0;
-#X connect 8 0 5 0;
-#X connect 8 1 5 1;
-#X connect 9 0 4 0;
-#X connect 10 0 9 0;
-#X connect 11 0 9 1;
-#X connect 12 0 7 0;
-#X connect 13 0 3 0;
-#X connect 13 0 4 0;
-#X connect 13 0 5 0;
-#X connect 13 0 6 0;
diff --git a/externals/grill/vasp/pd/vasp.db2pow.pd b/externals/grill/vasp/pd/vasp.db2pow.pd
deleted file mode 100644
index 64b3dd1a..00000000
--- a/externals/grill/vasp/pd/vasp.db2pow.pd
+++ /dev/null
@@ -1,18 +0,0 @@
-#N canvas 0 0 247 304 12;
-#X obj 31 66 inlet;
-#X obj 28 272 outlet;
-#X obj 31 130 vasp.exp;
-#X obj 29 242 vasp.*;
-#X obj 99 179 10;
-#X obj 98 207 log;
-#X obj 153 66 loadbang;
-#X obj 31 100 vasp./ 20;
-#X text 14 5 convert values in a vasp;
-#X text 15 23 from dB to power;
-#X connect 0 0 7 0;
-#X connect 2 0 3 0;
-#X connect 3 0 1 0;
-#X connect 4 0 5 0;
-#X connect 5 0 3 1;
-#X connect 6 0 4 0;
-#X connect 7 0 2 0;
diff --git a/externals/grill/vasp/pd/vasp.defer.pd b/externals/grill/vasp/pd/vasp.defer.pd
deleted file mode 100644
index 82933271..00000000
--- a/externals/grill/vasp/pd/vasp.defer.pd
+++ /dev/null
@@ -1,28 +0,0 @@
-#N canvas 363 240 469 368 12;
-#X obj 29 73 inlet;
-#X obj 30 300 outlet;
-#X text 26 10 defer a vasp message;
-#X text 26 28 (no immediate send);
-#X obj 29 268 vasp;
-#X obj 30 106 t a b;
-#X obj 66 145 f 1;
-#X msg 115 105 1;
-#X obj 98 145 + 1;
-#X obj 65 188 >= \$1;
-#X msg 65 229 defer \$1;
-#X obj 168 190 select 1;
-#X obj 212 73 inlet;
-#X text 218 95 max msgs per tick;
-#X connect 0 0 5 0;
-#X connect 4 0 1 0;
-#X connect 5 0 4 0;
-#X connect 5 1 6 0;
-#X connect 6 0 8 0;
-#X connect 6 0 9 0;
-#X connect 7 0 6 1;
-#X connect 8 0 6 1;
-#X connect 9 0 10 0;
-#X connect 9 0 11 0;
-#X connect 10 0 4 0;
-#X connect 11 0 7 0;
-#X connect 12 0 9 1;
diff --git a/externals/grill/vasp/pd/vasp.even.pd b/externals/grill/vasp/pd/vasp.even.pd
deleted file mode 100644
index d93030c4..00000000
--- a/externals/grill/vasp/pd/vasp.even.pd
+++ /dev/null
@@ -1,12 +0,0 @@
-#N canvas 0 0 247 229 12;
-#X obj 40 15 inlet;
-#X obj 40 48 vasp.frames?;
-#X obj 40 80 % 2;
-#X obj 40 110 == 0;
-#X obj 40 142 outlet;
-#X text 130 106 1 if even;
-#X text 131 131 0 if odd;
-#X connect 0 0 1 0;
-#X connect 1 0 2 0;
-#X connect 2 0 3 0;
-#X connect 3 0 4 0;
diff --git a/externals/grill/vasp/pd/vasp.freeze.pd b/externals/grill/vasp/pd/vasp.freeze.pd
deleted file mode 100644
index 5c7f89e2..00000000
--- a/externals/grill/vasp/pd/vasp.freeze.pd
+++ /dev/null
@@ -1,22 +0,0 @@
-#N canvas 641 14 270 354 12;
-#X obj 27 46 vasp.cfft;
-#X obj 108 133 vasp.noise;
-#X obj 27 104 vasp.split 2;
-#X obj 27 190 vasp.join 2;
-#X obj 27 8 inlet;
-#X obj 27 286 outlet;
-#X obj 27 74 vasp.polar;
-#X obj 106 160 vasp.* 3.14159;
-#X text 88 7 produce static sound;
-#X obj 27 254 vasp.c!fft;
-#X obj 27 220 vasp.rect;
-#X connect 0 0 6 0;
-#X connect 1 0 7 0;
-#X connect 2 0 3 0;
-#X connect 2 1 1 0;
-#X connect 3 0 10 0;
-#X connect 4 0 0 0;
-#X connect 6 0 2 0;
-#X connect 7 0 3 1;
-#X connect 9 0 5 0;
-#X connect 10 0 9 0;
diff --git a/externals/grill/vasp/pd/vasp.hilbert.pd b/externals/grill/vasp/pd/vasp.hilbert.pd
deleted file mode 100644
index 875484b4..00000000
--- a/externals/grill/vasp/pd/vasp.hilbert.pd
+++ /dev/null
@@ -1,28 +0,0 @@
-#N canvas 449 154 295 470 12;
-#X obj 20 35 inlet;
-#X obj 20 335 outlet;
-#X obj 20 150 vasp.cfft;
-#X obj 125 225 vasp.= 0;
-#X text 19 8 Hilbert transformation;
-#X obj 125 197 vasp.upper;
-#X obj 54 63 vasp.im;
-#X obj 54 91 vasp.= 0;
-#X obj 20 120 vasp.sync 2;
-#X obj 20 301 vasp.c!fft;
-#X obj 20 269 vasp.sync 3;
-#X obj 33 197 vasp.lower;
-#X obj 33 225 vasp.* 2;
-#X connect 0 0 6 0;
-#X connect 0 0 8 0;
-#X connect 2 0 10 0;
-#X connect 2 0 5 0;
-#X connect 2 0 11 0;
-#X connect 3 0 10 2;
-#X connect 5 0 3 0;
-#X connect 6 0 7 0;
-#X connect 7 0 8 1;
-#X connect 8 0 2 0;
-#X connect 9 0 1 0;
-#X connect 10 0 9 0;
-#X connect 11 0 12 0;
-#X connect 12 0 10 1;
diff --git a/externals/grill/vasp/pd/vasp.im.pd b/externals/grill/vasp/pd/vasp.im.pd
deleted file mode 100644
index a0ba9480..00000000
--- a/externals/grill/vasp/pd/vasp.im.pd
+++ /dev/null
@@ -1,6 +0,0 @@
-#N canvas 409 205 190 154 12;
-#X obj 38 17 inlet;
-#X obj 39 90 outlet;
-#X obj 39 53 vasp.n 1;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
diff --git a/externals/grill/vasp/pd/vasp.lower.pd b/externals/grill/vasp/pd/vasp.lower.pd
deleted file mode 100644
index 2c12dd09..00000000
--- a/externals/grill/vasp/pd/vasp.lower.pd
+++ /dev/null
@@ -1,19 +0,0 @@
-#N canvas 42 186 290 378 12;
-#X obj 117 129 vasp.frames?;
-#X obj 23 224 vasp.frames;
-#X obj 23 35 inlet;
-#X obj 23 254 outlet;
-#X text 24 9 lower half of a vasp;
-#X obj 117 162 / 2;
-#X obj 117 192 + 0.9;
-#X text 164 191 round up;
-#X obj 64 101 vasp.radio;
-#X obj 22 71 vasp.multi;
-#X connect 0 0 5 0;
-#X connect 1 0 3 0;
-#X connect 2 0 9 0;
-#X connect 5 0 6 0;
-#X connect 6 0 1 1;
-#X connect 8 1 0 0;
-#X connect 9 0 1 0;
-#X connect 9 1 8 0;
diff --git a/externals/grill/vasp/pd/vasp.odd.pd b/externals/grill/vasp/pd/vasp.odd.pd
deleted file mode 100644
index fe2327c5..00000000
--- a/externals/grill/vasp/pd/vasp.odd.pd
+++ /dev/null
@@ -1,10 +0,0 @@
-#N canvas 0 0 198 227 12;
-#X obj 40 15 inlet;
-#X obj 40 48 vasp.frames?;
-#X obj 40 80 % 2;
-#X obj 40 142 outlet;
-#X obj 39 110 != 0;
-#X connect 0 0 1 0;
-#X connect 1 0 2 0;
-#X connect 2 0 4 0;
-#X connect 4 0 3 0;
diff --git a/externals/grill/vasp/pd/vasp.opt.pd b/externals/grill/vasp/pd/vasp.opt.pd
deleted file mode 100644
index 4f6dc597..00000000
--- a/externals/grill/vasp/pd/vasp.opt.pd
+++ /dev/null
@@ -1,35 +0,0 @@
-#N canvas 504 38 466 480 12;
-#X obj 27 11 inlet;
-#X obj 90 158 vasp.amax?;
-#X obj 35 206 route 0 1;
-#X obj 107 415 outlet;
-#X obj 256 418 outlet;
-#X obj 27 306 vasp;
-#X obj 47 255 t b;
-#X obj 90 116 vasp.m 2;
-#X obj 105 345 vasp./;
-#X obj 117 253 t b f;
-#X obj 106 301 vasp;
-#X obj 90 78 vasp;
-#X text 131 79 catch messages ("to" not handled);
-#X obj 28 41 vasp.radio;
-#X connect 0 0 13 0;
-#X connect 1 0 2 0;
-#X connect 1 0 4 0;
-#X connect 2 0 6 0;
-#X connect 2 1 6 0;
-#X connect 2 2 9 0;
-#X connect 5 0 3 0;
-#X connect 6 0 5 0;
-#X connect 7 0 1 0;
-#X connect 7 1 5 1;
-#X connect 7 1 10 1;
-#X connect 8 0 3 0;
-#X connect 9 0 10 0;
-#X connect 9 1 8 1;
-#X connect 10 0 8 0;
-#X connect 11 0 7 0;
-#X connect 13 0 10 0;
-#X connect 13 0 5 0;
-#X connect 13 0 1 0;
-#X connect 13 1 11 0;
diff --git a/externals/grill/vasp/pd/vasp.ov.pd b/externals/grill/vasp/pd/vasp.ov.pd
deleted file mode 100644
index f70adaa2..00000000
--- a/externals/grill/vasp/pd/vasp.ov.pd
+++ /dev/null
@@ -1,10 +0,0 @@
-#N canvas 38 67 456 306 12;
-#X obj 28 23 inlet;
-#X obj 26 80 vasp.update;
-#X obj 29 111 outlet;
-#X obj 27 51 vasp.opt;
-#X obj 98 112 outlet;
-#X connect 0 0 3 0;
-#X connect 1 0 2 0;
-#X connect 3 0 1 0;
-#X connect 3 1 4 0;
diff --git a/externals/grill/vasp/pd/vasp.parts.pd b/externals/grill/vasp/pd/vasp.parts.pd
deleted file mode 100644
index 15cd3442..00000000
--- a/externals/grill/vasp/pd/vasp.parts.pd
+++ /dev/null
@@ -1,27 +0,0 @@
-#N canvas 0 0 460 384 12;
-#X obj 39 318 outlet;
-#X obj 39 232 vasp.part \$1;
-#X obj 40 67 inlet;
-#X text 42 15 loop over vasp;
-#X obj 225 65 inlet;
-#X text 45 47 vasp;
-#X text 224 47 length;
-#X obj 62 120 vasp.defer;
-#X obj 39 165 vasp.m;
-#X obj 161 204 vasp.f?;
-#X obj 189 236 <= \$1;
-#X obj 159 268 select 1;
-#X obj 159 315 outlet;
-#X text 215 312 bang on finish;
-#X text 61 100 next part;
-#X connect 1 0 0 0;
-#X connect 1 1 7 0;
-#X connect 2 0 8 0;
-#X connect 4 0 1 1;
-#X connect 4 0 10 1;
-#X connect 7 0 8 0;
-#X connect 8 0 9 0;
-#X connect 8 1 1 0;
-#X connect 9 0 10 0;
-#X connect 10 0 11 0;
-#X connect 11 0 12 0;
diff --git a/externals/grill/vasp/pd/vasp.pwrap.pd b/externals/grill/vasp/pd/vasp.pwrap.pd
deleted file mode 100644
index 83ea062d..00000000
--- a/externals/grill/vasp/pd/vasp.pwrap.pd
+++ /dev/null
@@ -1,10 +0,0 @@
-#N canvas 40 55 404 304 12;
-#X obj 50 149 vasp.- 3.14159;
-#X obj 50 120 vasp.% 6.28319;
-#X obj 50 88 vasp.+ 3.14159;
-#X obj 50 49 inlet;
-#X obj 50 223 outlet;
-#X connect 0 0 4 0;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X connect 3 0 2 0;
diff --git a/externals/grill/vasp/pd/vasp.qmean.pd b/externals/grill/vasp/pd/vasp.qmean.pd
deleted file mode 100644
index 2e33a605..00000000
--- a/externals/grill/vasp/pd/vasp.qmean.pd
+++ /dev/null
@@ -1,20 +0,0 @@
-#N canvas 0 0 456 349 12;
-#X obj 31 52 inlet;
-#X obj 98 295 outlet;
-#X obj 67 165 vasp.sum?;
-#X obj 31 85 vasp.radio;
-#X obj 166 165 vasp.f?;
-#X obj 147 238 /;
-#X obj 97 198 route 0;
-#X obj 67 117 vasp.m;
-#X text 27 8 calculate mean value of the values in a vasp;
-#X connect 0 0 3 0;
-#X connect 2 1 6 0;
-#X connect 3 0 2 0;
-#X connect 3 1 7 0;
-#X connect 4 0 5 1;
-#X connect 5 0 1 0;
-#X connect 6 0 1 0;
-#X connect 6 1 5 0;
-#X connect 7 0 2 0;
-#X connect 7 1 4 0;
diff --git a/externals/grill/vasp/pd/vasp.re.pd b/externals/grill/vasp/pd/vasp.re.pd
deleted file mode 100644
index 1e18c922..00000000
--- a/externals/grill/vasp/pd/vasp.re.pd
+++ /dev/null
@@ -1,6 +0,0 @@
-#N canvas 409 205 190 154 12;
-#X obj 38 17 inlet;
-#X obj 39 53 vasp.n 0;
-#X obj 39 90 outlet;
-#X connect 0 0 1 0;
-#X connect 1 0 2 0;
diff --git a/externals/grill/vasp/pd/vasp.rms.pd b/externals/grill/vasp/pd/vasp.rms.pd
deleted file mode 100644
index dc8cfd4a..00000000
--- a/externals/grill/vasp/pd/vasp.rms.pd
+++ /dev/null
@@ -1,16 +0,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/vasp/pd/vasp.ropt.pd b/externals/grill/vasp/pd/vasp.ropt.pd
deleted file mode 100644
index f02e5cd0..00000000
--- a/externals/grill/vasp/pd/vasp.ropt.pd
+++ /dev/null
@@ -1,30 +0,0 @@
-#N canvas 50 31 462 451 12;
-#X obj 114 14 inlet;
-#X obj 114 42 vasp;
-#X text 154 41 catch messages ("to" not handled);
-#X obj 84 169 route 0 1;
-#X obj 85 302 vasp;
-#X obj 85 238 t b;
-#X obj 108 89 vasp.m 2;
-#X obj 165 221 t b f;
-#X obj 110 126 vasp.rmax?;
-#X obj 151 309 vasp.c/;
-#X obj 155 270 vasp;
-#X obj 117 390 outlet;
-#X obj 277 397 outlet;
-#X connect 0 0 1 0;
-#X connect 1 0 6 0;
-#X connect 3 0 5 0;
-#X connect 3 1 5 0;
-#X connect 3 2 7 0;
-#X connect 4 0 11 0;
-#X connect 5 0 4 0;
-#X connect 6 0 8 0;
-#X connect 6 1 4 1;
-#X connect 6 1 10 1;
-#X connect 7 0 10 0;
-#X connect 7 1 9 1;
-#X connect 8 1 3 0;
-#X connect 8 1 12 0;
-#X connect 9 0 11 0;
-#X connect 10 0 9 0;
diff --git a/externals/grill/vasp/pd/vasp.spin.pd b/externals/grill/vasp/pd/vasp.spin.pd
deleted file mode 100644
index a2c55273..00000000
--- a/externals/grill/vasp/pd/vasp.spin.pd
+++ /dev/null
@@ -1,22 +0,0 @@
-#N canvas 486 219 326 391 12;
-#X obj 71 171 vasp.pwrap;
-#X obj 25 285 vasp.rect;
-#X obj 25 259 vasp.join 2;
-#X obj 71 223 vasp.int;
-#X obj 71 197 vasp.* \$1;
-#X obj 70 145 vasp.dif;
-#X obj 25 81 vasp.polar;
-#X obj 25 110 vasp.split 2;
-#X text 26 31 multiply phase velocity by argument factor;
-#X obj 25 56 inlet;
-#X obj 24 316 outlet;
-#X connect 0 0 4 0;
-#X connect 1 0 10 0;
-#X connect 2 0 1 0;
-#X connect 3 0 2 1;
-#X connect 4 0 3 0;
-#X connect 5 0 0 0;
-#X connect 6 0 7 0;
-#X connect 7 0 2 0;
-#X connect 7 1 5 0;
-#X connect 9 0 6 0;
diff --git a/externals/grill/vasp/pd/vasp.upper.pd b/externals/grill/vasp/pd/vasp.upper.pd
deleted file mode 100644
index 415fc267..00000000
--- a/externals/grill/vasp/pd/vasp.upper.pd
+++ /dev/null
@@ -1,22 +0,0 @@
-#N canvas 488 210 290 362 12;
-#X obj 87 158 / 2;
-#X obj 22 34 inlet;
-#X obj 22 300 outlet;
-#X text 18 6 upper half of a vasp;
-#X obj 125 191 + 0.9;
-#X text 175 191 round up;
-#X obj 59 98 vasp.radio;
-#X obj 22 66 vasp.multi;
-#X obj 88 130 vasp.frames?;
-#X obj 22 264 vasp.frames;
-#X obj 22 222 vasp.offset+;
-#X connect 0 0 4 0;
-#X connect 0 0 9 1;
-#X connect 1 0 7 0;
-#X connect 4 0 10 1;
-#X connect 6 1 8 0;
-#X connect 7 0 10 0;
-#X connect 7 1 6 0;
-#X connect 8 0 0 0;
-#X connect 9 0 2 0;
-#X connect 10 0 9 0;
diff --git a/externals/grill/vasp/pd/vaspset_examples.pd b/externals/grill/vasp/pd/vaspset_examples.pd
deleted file mode 100644
index 706f5474..00000000
--- a/externals/grill/vasp/pd/vaspset_examples.pd
+++ /dev/null
@@ -1,109 +0,0 @@
-#N canvas 27 56 975 554 10;
-#X obj 519 287 wavedisplay-simple bufsetb \$0;
-#X obj 519 265 r bufsetb-length;
-#X obj 71 125 filelist \$0;
-#N canvas 92 108 429 349 inside 0;
-#X obj 66 154 soundfiler;
-#X obj 84 238 s \$0-sample-length;
-#X obj 66 208 s \$0-draw_display;
-#X msg 214 206 resize \$1;
-#X obj 66 52 loadbang;
-#X obj 66 178 t b f f;
-#X obj 66 100 filelisthandler \$0;
-#X msg 66 78 2;
-#X msg 66 132 read -resize \$1 bufseta;
-#X obj 214 237 s bufseta;
-#X obj 279 238 s bufsetb;
-#X connect 0 0 5 0;
-#X connect 3 0 9 0;
-#X connect 3 0 10 0;
-#X connect 4 0 7 0;
-#X connect 5 0 2 0;
-#X connect 5 1 1 0;
-#X connect 5 2 3 0;
-#X connect 6 0 8 0;
-#X connect 7 0 6 0;
-#X connect 8 0 0 0;
-#X restore 780 485 pd inside;
-#X obj 515 83 wavedisplay-select bufseta \$0;
-#X text 467 82 A;
-#X text 465 286 B;
-#X text 67 46 use vasp.= to copy from buffer a to buffer b;
-#X text 92 218 choose a selection from buffer a;
-#X obj 94 450 vasp.= 0;
-#X obj 94 297 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X obj 94 473 vasp.update;
-#X obj 94 493 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#N canvas 117 414 435 378 to_length_offset 0;
-#X obj 154 309 outlet;
-#X obj 107 92 unpack;
-#X obj 107 232 runden;
-#X obj 107 210 - 0;
-#X text 176 249 offset;
-#X obj 107 156 t b f;
-#X obj 107 185 0;
-#X text 111 250 length;
-#X obj 173 231 runden;
-#X obj 154 278 pack;
-#X obj 107 72 change2;
-#X obj 107 115 t f f;
-#X obj 107 47 inlet;
-#X obj 107 309 outlet;
-#X obj 200 75 unpack;
-#X floatatom 190 112 12 0 0 0 - - -;
-#X floatatom 278 112 12 0 0 0 - - -;
-#X floatatom 194 149 12 0 0 0 - - -;
-#X floatatom 282 149 12 0 0 0 - - -;
-#X connect 1 0 11 0;
-#X connect 1 0 17 0;
-#X connect 1 1 6 1;
-#X connect 1 1 18 0;
-#X connect 2 0 9 0;
-#X connect 2 0 13 0;
-#X connect 3 0 2 0;
-#X connect 5 0 6 0;
-#X connect 5 1 3 1;
-#X connect 6 0 3 0;
-#X connect 8 0 9 1;
-#X connect 9 0 0 0;
-#X connect 10 0 1 0;
-#X connect 11 0 5 0;
-#X connect 11 1 8 0;
-#X connect 12 0 10 0;
-#X connect 12 0 14 0;
-#X connect 14 0 15 0;
-#X connect 14 1 16 0;
-#X restore 324 287 pd to_length_offset;
-#X msg 94 423 vasp \$1 bufsetb;
-#X msg 211 423 vasp \$1 bufseta \$2;
-#X obj 94 322 0;
-#X obj 94 348 t f f;
-#X obj 119 371 s bufsetb-length;
-#N canvas 0 0 413 295 clear_buffers 0;
-#X obj 49 73 vasp.= 0;
-#X obj 49 49 inlet;
-#X obj 49 97 vasp.u;
-#X obj 49 118 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 2 0;
-#X connect 1 0 0 0;
-#X connect 2 0 3 0;
-#X restore 532 483 pd clear_buffers;
-#X msg 532 457 vasp bufseta \, vasp bufsetb;
-#X text 495 50 space-bar + mouse to select \, "s" + mouse to shift
-selection;
-#X connect 1 0 0 0;
-#X connect 4 0 13 0;
-#X connect 9 0 11 0;
-#X connect 10 0 16 0;
-#X connect 11 0 12 0;
-#X connect 13 0 16 1;
-#X connect 13 1 15 0;
-#X connect 14 0 9 0;
-#X connect 15 0 9 1;
-#X connect 16 0 17 0;
-#X connect 17 0 14 0;
-#X connect 17 1 18 0;
-#X connect 20 0 19 0;
diff --git a/externals/grill/vasp/pd/wavedisplay-select.pd b/externals/grill/vasp/pd/wavedisplay-select.pd
deleted file mode 100644
index 5bc85c06..00000000
--- a/externals/grill/vasp/pd/wavedisplay-select.pd
+++ /dev/null
@@ -1,617 +0,0 @@
-#N canvas 212 260 305 123 10;
-#N canvas 166 101 671 347 inside 0;
-#N canvas 149 25 654 580 positions 0;
-#N canvas 74 268 410 336 setpositions 0;
-#X obj 60 102 inlet;
-#X obj 220 102 inlet;
-#X text 60 270 sets numberbox (left);
-#X text 220 270 (right);
-#X obj 60 180 runden;
-#X obj 220 180 runden;
-#X msg 60 205 set \$1;
-#X msg 220 205 set \$1;
-#X obj 60 138 change;
-#X obj 220 138 change;
-#X obj 60 246 s \$2-nboxlr;
-#X obj 220 246 s \$2-nboxrr;
-#X connect 0 0 8 0;
-#X connect 1 0 9 0;
-#X connect 4 0 6 0;
-#X connect 5 0 7 0;
-#X connect 6 0 10 0;
-#X connect 7 0 11 0;
-#X connect 8 0 4 0;
-#X connect 9 0 5 0;
-#X restore 122 446 pd setpositions;
-#N canvas 100 40 610 460 sendpositions 0;
-#X obj 66 58 inlet;
-#X obj 137 59 inlet;
-#X obj 127 264 / 1;
-#X obj 193 262 / 1;
-#X obj 127 287 runden;
-#X obj 193 287 runden;
-#X obj 127 322 s \$0-selection_l;
-#X obj 193 348 s \$0-selection_r;
-#X text 138 365 to selectioncanvas (drawselection);
-#X obj 229 155 s \$0-spos_lb;
-#X obj 312 154 s \$0-spos_rb;
-#X text 247 172 for playselections;
-#X obj 66 244 -;
-#X obj 66 408 s \$0-selection;
-#X text 197 62 in samples;
-#X text 65 425 length in samples;
-#X obj 431 174 pack 0 0;
-#X obj 431 148 t b f;
-#X obj 137 81 t f f f f;
-#X obj 66 81 t b f f f f;
-#X obj 431 196 s \$0-borderpair;
-#X obj 228 219 / 300;
-#X obj 228 197 r \$2-sample-length;
-#X connect 0 0 19 0;
-#X connect 1 0 18 0;
-#X connect 2 0 4 0;
-#X connect 3 0 5 0;
-#X connect 4 0 6 0;
-#X connect 5 0 7 0;
-#X connect 12 0 13 0;
-#X connect 16 0 20 0;
-#X connect 17 0 16 0;
-#X connect 17 1 16 1;
-#X connect 18 0 12 0;
-#X connect 18 1 3 0;
-#X connect 18 2 10 0;
-#X connect 18 3 17 0;
-#X connect 19 0 12 0;
-#X connect 19 1 12 1;
-#X connect 19 2 2 0;
-#X connect 19 3 9 0;
-#X connect 19 4 16 0;
-#X connect 21 0 3 1;
-#X connect 21 0 2 1;
-#X connect 22 0 21 0;
-#X restore 313 443 pd sendpositions;
-#X text 333 462 to graphics;
-#X obj 122 137 * 1;
-#X obj 197 137 * 1;
-#X obj 371 61 r \$0-shiftsel;
-#X obj 371 136 * 1;
-#X obj 169 247 +;
-#X obj 122 219 0;
-#X obj 170 315 t f f f;
-#X obj 333 222 0;
-#X obj 371 249 +;
-#X obj 354 317 t f f f;
-#X obj 122 61 r \$0-sel_lb;
-#X obj 197 61 r \$0-sel_rb;
-#X obj 145 174 r \$0-nboxls;
-#X obj 347 184 r \$0-nboxrs;
-#X floatatom 162 201 5 0 0 0 - - -;
-#X floatatom 360 211 5 0 0 0 - - -;
-#X text 174 31 (from sliderhandling);
-#X text 310 384 right border of sel;
-#X text 79 340 leftborder of sel;
-#X obj 333 365 t f f;
-#X obj 122 361 t f f;
-#N canvas 336 13 613 533 testborders 0;
-#X obj 90 52 inlet;
-#X obj 190 52 inlet;
-#X obj 111 488 outlet;
-#X obj 202 492 outlet;
-#X obj 177 219 0;
-#X obj 90 163 moses 0;
-#X obj 127 189 t b f;
-#X obj 139 347 0;
-#X msg 57 345 0;
-#X obj 177 270 t b f;
-#X text 259 164 test if lb < 0 and if not if rb > sample-length;
-#X obj 95 298 r \$0-selection;
-#X obj 82 345 0;
-#X obj 314 304 r \$0-selection;
-#X obj 57 200 t b b;
-#X obj 264 399 -;
-#X obj 314 326 t b f;
-#X obj 251 422 0;
-#X obj 226 270 t b b;
-#X obj 264 361 300;
-#X obj 177 244 moses 300;
-#X obj 226 296 300;
-#X obj 226 216 r \$2-sample-length;
-#X obj 264 283 r \$2-sample-length;
-#X connect 0 0 5 0;
-#X connect 1 0 4 1;
-#X connect 4 0 20 0;
-#X connect 5 0 14 0;
-#X connect 5 1 6 0;
-#X connect 6 0 4 0;
-#X connect 6 1 7 1;
-#X connect 7 0 2 0;
-#X connect 8 0 2 0;
-#X connect 9 0 7 0;
-#X connect 9 1 3 0;
-#X connect 11 0 12 1;
-#X connect 12 0 3 0;
-#X connect 13 0 16 0;
-#X connect 14 0 8 0;
-#X connect 14 1 12 0;
-#X connect 15 0 17 1;
-#X connect 16 0 19 0;
-#X connect 16 1 15 1;
-#X connect 17 0 2 0;
-#X connect 18 0 21 0;
-#X connect 18 1 17 0;
-#X connect 19 0 15 0;
-#X connect 20 0 9 0;
-#X connect 20 1 18 0;
-#X connect 21 0 3 0;
-#X connect 22 0 20 1;
-#X connect 22 0 21 1;
-#X connect 23 0 19 0;
-#X restore 233 285 pd testborders;
-#X obj 371 157 t f f;
-#X obj 245 104 / 300;
-#X obj 245 82 r \$2-sample-length;
-#X connect 3 0 8 0;
-#X connect 4 0 10 0;
-#X connect 5 0 6 0;
-#X connect 6 0 25 0;
-#X connect 7 0 24 0;
-#X connect 8 0 7 1;
-#X connect 8 0 23 0;
-#X connect 9 0 23 0;
-#X connect 9 1 8 1;
-#X connect 9 2 7 1;
-#X connect 10 0 11 1;
-#X connect 10 0 22 0;
-#X connect 11 0 24 1;
-#X connect 12 0 22 0;
-#X connect 12 1 10 1;
-#X connect 12 2 11 1;
-#X connect 13 0 3 0;
-#X connect 14 0 4 0;
-#X connect 15 0 17 0;
-#X connect 15 0 8 0;
-#X connect 16 0 18 0;
-#X connect 16 0 10 0;
-#X connect 22 0 0 1;
-#X connect 22 1 1 1;
-#X connect 23 0 0 0;
-#X connect 23 1 1 0;
-#X connect 24 0 9 0;
-#X connect 24 1 12 0;
-#X connect 25 0 7 0;
-#X connect 25 1 11 0;
-#X connect 26 0 6 1;
-#X connect 26 0 4 1;
-#X connect 26 0 3 1;
-#X connect 27 0 26 0;
-#X restore 90 129 pd positions;
-#N canvas 0 0 410 161 wavetable 0;
-#X obj 124 82 table \$1 44100;
-#X restore 91 211 pd wavetable;
-#X text 186 210 contains the sample;
-#N canvas 228 148 447 448 loadsample 0;
-#X obj 39 199 soundfiler;
-#X obj 39 66 openpanel;
-#X text 229 39 load a (new) sample to a table;
-#X text 176 313 draw the large display;
-#X msg 39 174 read -resize \$1 \$2;
-#X obj 82 121 symbol \$1;
-#X obj 39 144 pack s s;
-#X obj 39 89 t s b;
-#X obj 39 40 r \$2-load_new_sample;
-#X obj 64 272 s \$2-sample-length;
-#X obj 39 308 s \$2-draw_display;
-#X obj 39 236 t b f;
-#X connect 0 0 11 0;
-#X connect 1 0 7 0;
-#X connect 4 0 0 0;
-#X connect 5 0 6 1;
-#X connect 6 0 4 0;
-#X connect 7 0 6 0;
-#X connect 7 1 5 0;
-#X connect 8 0 1 0;
-#X connect 11 0 10 0;
-#X connect 11 1 9 0;
-#X restore 91 188 pd loadsample;
-#X text 198 187 load a new sample;
-#N canvas 46 30 522 604 drawdisplay 0;
-#X obj 193 422 vasp.frames 20;
-#X obj 193 449 vasp.offset 0;
-#X msg 83 83 bang;
-#X obj 168 137 0;
-#X obj 168 225 t f f f;
-#X obj 181 114 + 1;
-#X obj 168 252 *;
-#X text 45 80 start;
-#X text 262 215 (reset);
-#X obj 255 500 vasp.max?;
-#X obj 163 497 vasp.min?;
-#X obj 325 275 t f f;
-#X obj 168 281 t b b f;
-#X obj 76 129 until 1;
-#X obj 76 108 300;
-#X obj 256 545 tabwrite \$0+;
-#X obj 163 545 tabwrite \$0-;
-#X msg 193 336 vasp \$1;
-#X obj 193 308 symbol \$1;
-#X obj 83 46 r \$2-draw_display;
-#X obj 325 229 r \$2-sample-length;
-#X obj 325 254 / 300;
-#X obj 256 522 clip -1 1;
-#X obj 163 520 clip -1 1;
-#X obj 168 162 moses 299;
-#X msg 242 217 0;
-#X obj 217 196 t f b;
-#X connect 0 0 1 0;
-#X connect 1 0 9 0;
-#X connect 1 0 10 0;
-#X connect 2 0 14 0;
-#X connect 3 0 5 0;
-#X connect 3 0 24 0;
-#X connect 4 0 6 0;
-#X connect 4 1 15 1;
-#X connect 4 2 16 1;
-#X connect 5 0 3 1;
-#X connect 6 0 12 0;
-#X connect 9 0 22 0;
-#X connect 10 0 23 0;
-#X connect 11 0 6 1;
-#X connect 11 1 0 1;
-#X connect 12 1 18 0;
-#X connect 12 2 1 1;
-#X connect 13 0 3 0;
-#X connect 14 0 13 0;
-#X connect 17 0 0 0;
-#X connect 18 0 17 0;
-#X connect 19 0 2 0;
-#X connect 20 0 21 0;
-#X connect 21 0 11 0;
-#X connect 22 0 15 0;
-#X connect 23 0 16 0;
-#X connect 24 0 4 0;
-#X connect 24 1 26 0;
-#X connect 25 0 1 1;
-#X connect 25 0 3 1;
-#X connect 26 0 4 0;
-#X connect 26 1 25 0;
-#X restore 91 234 pd drawdisplay;
-#X text 200 233 draws the large display;
-#N canvas 123 371 419 311 sliderhandling 0;
-#X floatatom 112 145 5 0 0 0 - - -;
-#X floatatom 220 143 5 0 0 0 - - -;
-#N canvas 83 38 570 521 keyinput_s 0;
-#X obj 186 25 keyname;
-#X obj 84 446 spigot;
-#X obj 179 172 0;
-#X obj 179 116 symbol;
-#X msg 179 88 bang;
-#X obj 179 369 sel 1;
-#X msg 179 393 1;
-#X msg 152 393 0;
-#X obj 152 414 s \$0-spig1;
-#X obj 227 415 s \$0-spig1;
-#X msg 227 394 1;
-#X msg 254 394 0;
-#X obj 179 345 change;
-#X obj 84 67 inlet;
-#X obj 84 472 outlet;
-#X obj 179 144 sel s;
-#X text 276 67 if key "s" is down \, then input is let through;
-#X text 332 85 shifts display;
-#X obj 297 473 outlet;
-#X obj 179 223 t b b 0;
-#X obj 201 266 delay 100;
-#X msg 201 245 stop;
-#X obj 179 201 sel 0 1;
-#X obj 179 313 0;
-#X msg 179 289 1;
-#X text 255 242 linux and win have different up/down behaviour...;
-#X text 232 297 only if there is no new input for 100 ms after 0 \,
-0 is sent out;
-#X connect 0 0 2 1;
-#X connect 0 0 4 0;
-#X connect 0 1 3 1;
-#X connect 1 0 14 0;
-#X connect 2 0 22 0;
-#X connect 3 0 15 0;
-#X connect 4 0 3 0;
-#X connect 5 0 6 0;
-#X connect 5 0 7 0;
-#X connect 5 0 18 0;
-#X connect 5 1 10 0;
-#X connect 5 1 11 0;
-#X connect 6 0 1 1;
-#X connect 7 0 8 0;
-#X connect 10 0 9 0;
-#X connect 11 0 1 1;
-#X connect 12 0 5 0;
-#X connect 13 0 1 0;
-#X connect 15 0 2 0;
-#X connect 19 0 20 0;
-#X connect 19 1 21 0;
-#X connect 19 2 23 1;
-#X connect 20 0 23 0;
-#X connect 21 0 20 0;
-#X connect 22 0 19 0;
-#X connect 22 1 24 0;
-#X connect 23 0 12 0;
-#X connect 24 0 23 0;
-#X restore 206 117 pd keyinput_s;
-#N canvas 49 247 419 328 spacehandling 0;
-#X obj 60 26 inlet;
-#X obj 164 26 inlet;
-#X obj 138 119 0;
-#X obj 60 157 moses 0;
-#X obj 85 205 0;
-#X obj 60 180 t f b;
-#X obj 160 209 0;
-#X obj 135 184 t f b;
-#X text 188 186 checks range direction;
-#X obj 60 236 s \$0-sel_lb;
-#X obj 135 236 s \$0-sel_rb;
-#X text 141 61 first position after hit is ref;
-#X obj 214 133 spigot;
-#X msg 245 99 1;
-#X obj 214 162 t f b;
-#X msg 219 99 0;
-#X text 159 45 down;
-#X obj 60 60 t f b f f;
-#X connect 0 0 17 0;
-#X connect 1 0 13 0;
-#X connect 2 0 3 1;
-#X connect 2 0 4 1;
-#X connect 2 0 6 1;
-#X connect 3 0 5 0;
-#X connect 3 1 7 0;
-#X connect 4 0 10 0;
-#X connect 5 0 9 0;
-#X connect 5 1 4 0;
-#X connect 6 0 9 0;
-#X connect 7 0 10 0;
-#X connect 7 1 6 0;
-#X connect 12 0 14 0;
-#X connect 13 0 12 1;
-#X connect 14 0 2 1;
-#X connect 14 1 15 0;
-#X connect 15 0 12 1;
-#X connect 17 0 3 0;
-#X connect 17 1 2 0;
-#X connect 17 2 12 0;
-#X restore 80 178 pd spacehandling;
-#N canvas 523 338 362 359 s_handling 0;
-#X obj 85 27 inlet;
-#X obj 85 305 s \$0-sliderr;
-#X msg 85 279 set \$1;
-#X obj 85 249 0;
-#X obj 85 202 -;
-#X obj 85 225 t b f;
-#X obj 171 264 s \$0-shiftsel;
-#X floatatom 200 295 5 0 0 0 - - -;
-#X obj 204 28 inlet;
-#X text 146 48 first position after hit is ref;
-#X obj 173 116 spigot;
-#X msg 204 82 1;
-#X obj 173 145 t f b;
-#X msg 178 82 0;
-#X text 203 12 down;
-#X obj 85 84 t f f;
-#X connect 0 0 15 0;
-#X connect 2 0 1 0;
-#X connect 3 0 2 0;
-#X connect 4 0 5 0;
-#X connect 5 0 3 0;
-#X connect 5 1 6 0;
-#X connect 5 1 7 0;
-#X connect 8 0 11 0;
-#X connect 10 0 12 0;
-#X connect 11 0 10 1;
-#X connect 12 0 4 1;
-#X connect 12 0 3 1;
-#X connect 12 1 13 0;
-#X connect 13 0 10 1;
-#X connect 15 0 4 0;
-#X connect 15 1 10 0;
-#X restore 206 179 pd s_handling;
-#X obj 80 33 r \$0-sliders;
-#X floatatom 124 58 5 0 0 0 - - -;
-#N canvas 578 111 639 563 keyinput_space2 0;
-#X obj 82 464 spigot;
-#X floatatom 94 498 5 0 0 0 - - -;
-#X msg 141 414 1;
-#X msg 114 414 0;
-#X obj 114 435 s \$0-spig1;
-#X obj 194 436 s \$0-spig1;
-#X msg 194 415 1;
-#X msg 221 415 0;
-#X obj 150 119 key;
-#X obj 177 119 keyup;
-#X obj 141 168 sel 32;
-#X obj 141 191 0;
-#X obj 141 145 0;
-#X obj 218 144 t b f;
-#X obj 218 119 keyname;
-#X obj 82 86 inlet;
-#X obj 82 528 outlet;
-#X text 84 53 if spacebar is down \, then input is let through;
-#X obj 141 357 change;
-#X obj 141 380 sel 1 0;
-#X obj 171 525 outlet;
-#X text 174 505 down;
-#X obj 223 526 outlet;
-#X text 226 506 up;
-#X obj 141 235 t b b 0;
-#X obj 163 278 delay 100;
-#X msg 163 257 stop;
-#X obj 141 213 sel 0 1;
-#X obj 141 325 0;
-#X msg 141 301 1;
-#X text 217 254 linux and win have different up/down behaviour...;
-#X text 194 309 only if there is no new input for 100 ms after 0 \,
-0 is sent out;
-#X connect 0 0 1 0;
-#X connect 0 0 16 0;
-#X connect 2 0 0 1;
-#X connect 3 0 4 0;
-#X connect 6 0 5 0;
-#X connect 7 0 0 1;
-#X connect 8 0 12 1;
-#X connect 9 0 12 1;
-#X connect 10 0 11 0;
-#X connect 11 0 27 0;
-#X connect 12 0 10 0;
-#X connect 13 0 12 0;
-#X connect 13 1 11 1;
-#X connect 14 0 13 0;
-#X connect 15 0 0 0;
-#X connect 18 0 19 0;
-#X connect 19 0 2 0;
-#X connect 19 0 3 0;
-#X connect 19 0 20 0;
-#X connect 19 1 6 0;
-#X connect 19 1 7 0;
-#X connect 19 1 22 0;
-#X connect 24 0 25 0;
-#X connect 24 1 26 0;
-#X connect 24 2 28 1;
-#X connect 25 0 28 0;
-#X connect 26 0 25 0;
-#X connect 27 0 24 0;
-#X connect 27 1 29 0;
-#X connect 28 0 18 0;
-#X connect 29 0 28 0;
-#X restore 80 117 pd keyinput_space2;
-#X obj 80 79 t f f;
-#X obj 176 33 r \$0-fromothers;
-#X connect 2 0 1 0;
-#X connect 2 0 4 0;
-#X connect 2 1 4 1;
-#X connect 5 0 6 0;
-#X connect 5 0 8 0;
-#X connect 7 0 0 0;
-#X connect 7 0 3 0;
-#X connect 7 1 3 1;
-#X connect 8 0 7 0;
-#X connect 8 1 2 0;
-#X connect 9 0 8 0;
-#X restore 91 94 pd sliderhandling;
-#X text 186 124 receiving inputs \, conversions and settings of slider-
-and graphic-positions;
-#X text 233 96 the slider sets curser and borders...;
-#N canvas 217 166 685 486 drawselection 0;
-#X obj 445 186 t b f;
-#X obj 61 221 t b f;
-#X obj 223 187 -;
-#X obj 223 139 t b f;
-#X obj 61 88 runden 0;
-#X obj 234 86 runden 0;
-#X msg 61 293 \; \$1-selectionr pos \$2 \$3;
-#X obj 61 197 + 0;
-#X obj 61 269 pack \$0 0 0;
-#X msg 445 232 \; \$1-selectionr vis_size \$2 \$3;
-#X obj 61 60 r \$0-selection_l;
-#X obj 234 58 r \$0-selection_r;
-#X obj 124 198 loadbang;
-#X obj 223 209 sel 0;
-#X obj 479 378 pack 0 \$0;
-#X msg 479 402 \; \$2-selectionr color \$1;
-#X msg 479 309 17;
-#X obj 479 354 change;
-#X obj 479 331 0;
-#X text 45 6 shows a light-blue colored canvas;
-#X text 44 21 when a part is selected;
-#X obj 61 142 change;
-#X obj 445 164 change;
-#X obj 445 208 pack \$0 300 120;
-#X obj 223 163 300;
-#X msg 446 309 6;
-#X msg 248 294 \; \$1-selectionr vis_size \$2 \$3;
-#X obj 248 270 pack \$0 0 120;
-#X obj 223 234 t b b;
-#X msg 122 223 0;
-#X msg 89 197 3;
-#X text 477 291 if size=0 then it will be hidden;
-#X connect 0 0 23 0;
-#X connect 0 1 23 1;
-#X connect 1 0 8 0;
-#X connect 1 1 8 1;
-#X connect 2 0 13 0;
-#X connect 3 0 24 0;
-#X connect 3 1 2 1;
-#X connect 4 0 3 0;
-#X connect 4 0 21 0;
-#X connect 5 0 24 0;
-#X connect 7 0 1 0;
-#X connect 8 0 6 0;
-#X connect 10 0 4 0;
-#X connect 11 0 5 0;
-#X connect 12 0 29 0;
-#X connect 12 0 30 0;
-#X connect 13 0 28 0;
-#X connect 13 1 16 0;
-#X connect 13 1 22 0;
-#X connect 14 0 15 0;
-#X connect 16 0 18 0;
-#X connect 17 0 14 0;
-#X connect 18 0 17 0;
-#X connect 21 0 7 0;
-#X connect 22 0 0 0;
-#X connect 23 0 9 0;
-#X connect 24 0 2 0;
-#X connect 25 0 18 0;
-#X connect 27 0 26 0;
-#X connect 28 0 25 0;
-#X connect 28 1 27 0;
-#X connect 29 0 8 2;
-#X connect 30 0 7 1;
-#X restore 91 166 pd drawselection;
-#X text 211 163 draws the light blue selection;
-#N canvas 149 160 490 235 init 0;
-#X obj 33 19 loadbang;
-#X obj 33 86 s \$0-;
-#X msg 33 44 xticks 0 30 5 \, ylabel 315 -1 -0.5 0 0.5 \, yticks 0
-0.25 2;
-#X msg 33 150 44100;
-#X obj 33 128 loadbang;
-#X obj 33 173 s \$2-sample-length;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X connect 3 0 5 0;
-#X connect 4 0 3 0;
-#X restore 92 261 pd init;
-#N canvas 0 0 445 185 synchronize_several_displays 0;
-#X obj 232 68 r \$0-sliders;
-#X obj 126 67 r \$0-synchroin;
-#X obj 232 104 s \$0-synchroout;
-#X obj 126 104 s \$0-fromothers;
-#X connect 0 0 2 0;
-#X connect 1 0 3 0;
-#X restore 92 285 pd synchronize_several_displays;
-#X restore 332 83 pd inside;
-#X obj 399 96 outlet;
-#X obj 3 0 hsl 300 120 0 299 0 0 \$0-sliders \$0-sliderr empty -2 -6
-1728 8 -262144 -1 -1 10500 0;
-#X obj 0 0 cnv 15 305 120 empty empty empty 20 12 0 14 -262144 -66577
-0;
-#X obj 2 0 cnv 15 300 120 empty empty empty 20 12 0 14 -225271 -66577
-0;
-#X obj 3 0 cnv 1 1 120 \$0-selections \$0-selectionr empty 20 12 1728
-14 -225271 -262144 0;
-#N canvas 0 0 450 300 graph1 0;
-#X array \$0- 300 float 0;
-#X array \$0+ 300 float 0;
-#X coords 0 1 299 -1 300 120 1;
-#X restore 2 0 graph;
-#X obj 399 75 r \$0-borderpair;
-#X text 328 10 this display shows the min and max of all samples that
-a pixel represents;
-#X text 328 52 arguments: name of array \, \$0 of the parent patch
-;
-#X text 328 38 select with spacebar and shift with "s";
-#X obj 509 95 outlet;
-#X obj 614 75 inlet;
-#X obj 509 75 r \$0-synchroout;
-#X obj 560 94 s \$0-synchroin;
-#X connect 7 0 1 0;
-#X connect 12 0 14 0;
-#X connect 13 0 11 0;
-#X coords 0 0 1 1 305 120 1;
diff --git a/externals/grill/vasp/pd/wavedisplay-simple.pd b/externals/grill/vasp/pd/wavedisplay-simple.pd
deleted file mode 100644
index 02ab9402..00000000
--- a/externals/grill/vasp/pd/wavedisplay-simple.pd
+++ /dev/null
@@ -1,135 +0,0 @@
-#N canvas 200 200 304 126 10;
-#N canvas 154 41 404 184 inside 0;
-#N canvas 183 206 183 114 wavetable 0;
-#X obj 30 22 table \$1 44100;
-#X restore 62 51 pd wavetable;
-#X text 146 50 contains the sample;
-#N canvas 46 30 532 614 drawdisplay 0;
-#X obj 168 398 vasp.frames 20;
-#X obj 168 429 vasp.offset 0;
-#X msg 83 83 bang;
-#X obj 168 137 0;
-#X obj 168 225 t f f f;
-#X obj 181 114 + 1;
-#X obj 168 252 *;
-#X text 45 80 start;
-#X text 262 215 (reset);
-#X obj 230 461 vasp.max?;
-#X obj 145 461 vasp.min?;
-#X obj 325 275 t f f;
-#X obj 83 128 until 1;
-#X obj 83 107 300;
-#X obj 236 530 tabwrite \$0+;
-#X obj 147 528 tabwrite \$0-;
-#X msg 168 345 vasp \$1;
-#X obj 168 317 symbol \$1;
-#X obj 325 254 / 300;
-#X obj 236 507 clip -1 1;
-#X obj 147 503 clip -1 1;
-#X obj 168 162 moses 299;
-#X msg 242 217 0;
-#X obj 217 196 t f b;
-#X obj 325 229 r \$0-sample-length;
-#X obj 83 46 r \$0-draw_display;
-#X obj 168 281 t b f;
-#X obj 344 449 r \$0-bounds-;
-#X obj 344 475 r \$0-bounds+;
-#X connect 0 0 1 0;
-#X connect 1 0 9 0;
-#X connect 1 0 10 0;
-#X connect 2 0 13 0;
-#X connect 3 0 5 0;
-#X connect 3 0 21 0;
-#X connect 4 0 6 0;
-#X connect 4 1 14 1;
-#X connect 4 2 15 1;
-#X connect 5 0 3 1;
-#X connect 6 0 26 0;
-#X connect 9 0 19 0;
-#X connect 10 0 20 0;
-#X connect 11 0 6 1;
-#X connect 11 1 0 1;
-#X connect 12 0 3 0;
-#X connect 13 0 12 0;
-#X connect 16 0 0 0;
-#X connect 17 0 16 0;
-#X connect 18 0 11 0;
-#X connect 19 0 14 0;
-#X connect 20 0 15 0;
-#X connect 21 0 4 0;
-#X connect 21 1 23 0;
-#X connect 22 0 1 1;
-#X connect 22 0 3 1;
-#X connect 23 0 4 0;
-#X connect 23 1 22 0;
-#X connect 24 0 18 0;
-#X connect 25 0 2 0;
-#X connect 26 0 17 0;
-#X connect 26 1 1 1;
-#X connect 27 0 19 1;
-#X connect 27 0 20 1;
-#X connect 28 0 19 2;
-#X connect 28 0 20 2;
-#X restore 62 74 pd drawdisplay;
-#X text 160 73 draws the display;
-#N canvas 149 160 294 134 init 0;
-#X obj 33 19 loadbang;
-#X obj 33 86 s \$0-;
-#X msg 33 44 xticks 0 30 5 \, ylabel 315 -1 -0.5 0 0.5 \, yticks 0
-0.25 2;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 61 97 pd init;
-#N canvas 0 0 424 148 makelocal 0;
-#X obj 83 72 s \$0-draw_display;
-#X obj 83 46 r \$2-draw_display;
-#X obj 216 45 r \$2-sample-length;
-#X obj 216 71 s \$0-sample-length;
-#X connect 1 0 0 0;
-#X connect 2 0 3 0;
-#X restore 61 129 pd makelocal;
-#X restore 369 90 pd inside;
-#X text 374 15 this display shows the min and max of all samples that
-a pixel represents;
-#X text 375 46 arguments: name of array \, \$0 of the parent patch
-;
-#X obj 0 0 cnv 15 300 120 empty empty empty 20 12 0 14 -225271 -66577
-0;
-#N canvas 0 0 450 300 graph1 0;
-#X array \$0- 300 float 0;
-#X array \$0+ 300 float 0;
-#X coords 0 1 300 -1 300 120 1;
-#X restore 0 0 graph;
-#X obj 438 70 inlet;
-#X text 480 69 individual length;
-#N canvas 71 382 599 303 individual 0;
-#X obj 319 150 s \$0-sample-length;
-#X obj 73 58 inlet;
-#X msg 369 173 resize \$1;
-#X obj 369 196 s \$1;
-#X obj 127 253 send \$0-;
-#X text 139 73 resize and sample-length;
-#X text 138 58 for individual bounds \, ticks and label \,;
-#X obj 41 182 unpack 0 0 0 0;
-#X obj 40 230 s \$0-bounds-;
-#X obj 40 207 s \$0-bounds+;
-#X msg 127 150 bounds \$1 \$2 \$3 \$4;
-#X obj 127 124 route bounds ylabel yticks;
-#X msg 151 175 ylabel \$1 \$2 \$3 \$4;
-#X msg 166 197 yticks \$1 \$2 \$3 \$4;
-#X connect 1 0 11 0;
-#X connect 2 0 3 0;
-#X connect 7 1 9 0;
-#X connect 7 3 8 0;
-#X connect 10 0 4 0;
-#X connect 11 0 7 0;
-#X connect 11 0 10 0;
-#X connect 11 1 12 0;
-#X connect 11 2 13 0;
-#X connect 11 3 0 0;
-#X connect 11 3 2 0;
-#X connect 12 0 4 0;
-#X connect 13 0 4 0;
-#X restore 438 90 pd individual;
-#X connect 5 0 7 0;
-#X coords 0 0 1 1 300 120 1;
diff --git a/externals/grill/vasp/pd/xtilt_example.pd b/externals/grill/vasp/pd/xtilt_example.pd
deleted file mode 100644
index 63acc12b..00000000
--- a/externals/grill/vasp/pd/xtilt_example.pd
+++ /dev/null
@@ -1,88 +0,0 @@
-#N canvas 27 56 975 554 10;
-#X text 467 82 A;
-#X text 465 286 B;
-#N canvas 0 0 413 295 clear_buffers 0;
-#X obj 49 73 vasp.= 0;
-#X obj 49 49 inlet;
-#X obj 49 97 vasp.u;
-#X obj 49 118 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X connect 0 0 2 0;
-#X connect 1 0 0 0;
-#X connect 2 0 3 0;
-#X restore 604 494 pd clear_buffers;
-#X obj 510 85 wavedisplay-simple bufxtilt3 \$0;
-#X obj 512 273 wavedisplay-simple bufxtilt4 \$0;
-#X obj 269 69 filelist \$0;
-#X msg 603 467 vasp bufxtilt4;
-#X obj 403 487 dac~;
-#X obj 403 444 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X text 425 441 play;
-#N canvas 86 280 431 351 inside 0;
-#X obj 66 154 soundfiler;
-#X obj 84 238 s \$0-sample-length;
-#X obj 66 208 s \$0-draw_display;
-#X msg 214 206 resize \$1;
-#X obj 66 52 loadbang;
-#X obj 66 178 t b f f;
-#X obj 66 100 filelisthandler \$0;
-#X msg 66 132 read -resize \$1 bufxtilt3;
-#X obj 214 237 s bufxtilt3;
-#X obj 224 267 s bufxtilt4;
-#X msg 66 78 3;
-#X connect 0 0 5 0;
-#X connect 3 0 8 0;
-#X connect 3 0 9 0;
-#X connect 4 0 10 0;
-#X connect 5 0 2 0;
-#X connect 5 1 1 0;
-#X connect 5 2 3 0;
-#X connect 6 0 7 0;
-#X connect 7 0 0 0;
-#X connect 10 0 6 0;
-#X restore 780 485 pd inside;
-#X obj 404 464 tabplay~ bufxtilt4;
-#X obj 276 487 dac~;
-#X obj 276 444 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X text 298 441 play;
-#X obj 277 464 tabplay~ bufxtilt3;
-#X msg 76 127 vasp bufxtilt3;
-#X obj 76 149 vasp.-> bufxtilt4;
-#X obj 173 195 vasp.rfft;
-#X floatatom 270 259 5 0 0;
-#X obj 173 432 vasp.u;
-#X obj 173 454 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
-8 -262144 -1 -1;
-#X obj 173 409 vasp.r!fft;
-#X obj 172 222 vasp.upper;
-#X obj 172 245 vasp.mirr;
-#X obj 173 326 vasp.upper;
-#X obj 173 349 vasp.mirr;
-#X msg 151 271 vasp bufxtilt4;
-#X msg 157 381 vasp bufxtilt4;
-#X obj 76 98 bng 20 250 50 0 empty empty start 0 -6 0 8 -258699 -1
--1;
-#X obj 173 299 vasp.xtilt 2.9;
-#X connect 6 0 2 0;
-#X connect 8 0 11 0;
-#X connect 11 0 7 0;
-#X connect 11 0 7 1;
-#X connect 13 0 15 0;
-#X connect 15 0 12 0;
-#X connect 15 0 12 1;
-#X connect 16 0 17 0;
-#X connect 17 1 18 0;
-#X connect 18 0 23 0;
-#X connect 19 0 30 1;
-#X connect 20 0 21 0;
-#X connect 22 0 20 0;
-#X connect 23 0 24 0;
-#X connect 24 0 27 0;
-#X connect 25 0 26 0;
-#X connect 26 0 28 0;
-#X connect 27 0 30 0;
-#X connect 28 0 22 0;
-#X connect 29 0 16 0;
-#X connect 30 0 25 0;
diff --git a/externals/grill/vasp/readme.txt b/externals/grill/vasp/readme.txt
deleted file mode 100644
index a8af0785..00000000
--- a/externals/grill/vasp/readme.txt
+++ /dev/null
@@ -1,110 +0,0 @@
-VASP modular - vector assembling signal processor
-Object library for Max/MSP and PD
-
-Copyright (c) 2002-2006 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-Donations for further development of the package are highly appreciated.
-Visit https://www.paypal.com/xclick/business=gr%40grrrr.org&item_name=vasp&no_note=1&tax=0&currency_code=EUR
-
-----------------------------------------------------------------------------
-
-DOWNLOAD:
-=========
-
-http://grrrr.org/ext/vasp
-
-----------------------------------------------------------------------------
-
-Package files:
-- readme.txt: this one
-- gpl.txt,license.txt,mixfft.txt: license stuff
-- changes.txt,todo.txt: additional info
-- pd-help/*: VASP help for PD
-- pd/*: VASP abstractions and documentation for PD
-- max-help/*: VASP help for Max/MSP (not present)
-- maxmsp/*: VASP abstractions for Max/MSP
-- source/*: VASP sources
-
-----------------------------------------------------------------------------
-
-GOALS/FEATURES:
-===============
-
-VASP is a package for PD or MaxMSP consisting of a number of externals extending
-these systems with functions for non-realtime array-based audio data processing.
-VASP is capable of working in the background, therefore not influencing eventual
-dsp signal processing.
-
-----------------------------------------------------------------------------
-
-USAGE:
-======
-
-IMPORTANT INFORMATION for all PD users:
----------------------------------------
-
-For VASP and its documentation to work properly, you have to specify a
-PD command line like
-
-Linux/OSX: pd -path /usr/local/lib/pd/extra/vasp/pd -lib vasp/vasp
-Windows: pd -path c:\audio\pd\extra\vasp\pd -lib vasp\vasp
-
-
-The main help file "VASP-HELP.pd" resides in the "pd" sub-folder along with some
-handy abstractions. Every help file is accessible from VASP-HELP.PD and vice versa.
-
-
-IMPORTANT INFORMATION for all MaxMSP users:
--------------------------------------------
-
-It is advisable to put the vasp object library file into the "max-startup" folder.
-Hence it will be loaded at Max startup.
-If you want alternatively to load the vasp library on demand,
-create a "vasp" object somewhere. The library is then loaded.
-
-If existent, the "max-help" folder should be put into the "max-help" folder of Max/MSP
-and be renamed to "vasp".
-
-----------------------------------------------------------------------------
-
-----------------------------------------------------------------------------
-
-BUILDING from source
---------------------
-
-You will need the flext C++ layer for PD and Max/MSP externals to compile this.
-See http://grrrr.org/ext/flext
-Download, install and compile the package.
-Afterwards you can proceed with building this external.
-
-
-pd/Max - Windows - Microsoft Visual C, Borland C++, MinGW:
-----------------------------------------------------------
-Start a command shell with your eventual build environment
-(e.g. run vcvars32.bat for Microsoft Visual Studio)
-
-then run
- ..\flext\build.bat
-(you would have to substitute ..\flext with the respective path to the flext package)
-
-
-pd/Max - OSX/Linux - GCC:
--------------------------
-From a shell run
-bash ../flext/build.sh
-(you would have to substitute ../flext with the respective path to the flext package)
-
-----------------------------------------------------------------------------
-
-
-HINTS:
-======
-
-- Click-free operation: All objects where it makes sense (e.g. transformation of data, vasp.!, etc.)
- can be set to "detached mode" by sending a "detach 1" message (which is setting the detach attribute to 1).
- The operation will then take place in a detached thread with lower priority.
- Thus, longer operations will not disturb the dsp processing of the real-time engine.
-
-
diff --git a/externals/grill/vasp/source/arg.cpp b/externals/grill/vasp/source/arg.cpp
deleted file mode 100644
index 696558cf..00000000
--- a/externals/grill/vasp/source/arg.cpp
+++ /dev/null
@@ -1,277 +0,0 @@
-/*
-
-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.
-
-*/
-
-#include "main.h"
-#include "arg.h"
-//#include <math.h>
-#include "classes.h"
-
-Argument::Argument(): tp(tp_none),nxt(NULL) {}
-Argument::~Argument() { ClearAll(); }
-
-Argument &Argument::Parse(I argc,const t_atom *argv)
-{
- if(argc == 0)
- Clear();
- else // real?
- if(argc == 1 && flext::CanbeFloat(argv[0]))
- SetR(flext::GetAFloat(argv[0]));
- else // complex?
- if(argc == 2 && flext::CanbeFloat(argv[0]) && flext::CanbeFloat(argv[1]))
- SetCX(flext::GetAFloat(argv[1]),flext::GetAFloat(argv[2]));
- else // double?
- if(argc >= 2 && flext::GetASymbol(argv[0]) == vasp_base::sym_double &&
- flext::CanbeFloat(argv[1]) && (argc == 2 || flext::CanbeFloat(argv[2]))
- )
- SetR((D)flext::GetAFloat(argv[1])+(D)flext::GetAFloat(argv[2]));
- else // envelope?
- if(Env::ChkArgs(argc,argv)) {
- Env *e = new Env(argc,argv);
- if(e && e->Ok()) SetEnv(e);
- else {
- Clear();
- post("vasp - env argument is invalid");
- delete e;
- }
- }
- else // vasp?
- if(Vasp::ChkArgs(argc,argv)) {
- Vasp *v = new Vasp(argc,argv);
- if(v && v->Ok()) SetVasp(v);
- else {
- Clear();
- post("vasp - vasp argument is invalid");
- delete v;
- }
- }
- else {
- Clear();
- post("vasp - invalid arguments");
- }
- return *this;
-}
-
-V Argument::MakeList(flext::AtomList &ret)
-{
- switch(tp) {
- case tp_none:
- ret();
- break;
- case tp_list:
- ret = *dt.atoms;
- break;
- case tp_vasp:
- dt.v->MakeList(ret);
- break;
- case tp_env:
- dt.env->MakeList(ret);
- break;
- case tp_vx: {
- I d = dt.vx->Dim();
- ret(d+1);
- flext::SetSymbol(ret[0],vasp_base::sym_vector);
- for(I i = 0; i < d; ++i)
- flext::SetFloat(ret[i+1],(*dt.vx)[i]);
- break;
- }
- case tp_cx:
- ret(3);
- flext::SetSymbol(ret[0],vasp_base::sym_complex);
- flext::SetFloat(ret[1],dt.cx->real);
- flext::SetFloat(ret[2],dt.cx->imag);
- break;
- case tp_int:
- ret(1);
- flext::SetInt(ret[0],dt.i);
- break;
- case tp_float:
- ret(1);
- flext::SetFloat(ret[0],dt.f);
- break;
- case tp_double: {
- F f = (F)dt.d;
- ret(3);
- flext::SetSymbol(ret[0],vasp_base::sym_double);
- flext::SetFloat(ret[1],f);
- flext::SetFloat(ret[2],dt.d-f);
- break;
- }
- default:
- ERRINTERNAL();
- }
-}
-
-
-Argument &Argument::Clear()
-{
- switch(tp) {
- case tp_none:
- break;
- case tp_list:
- if(dt.atoms) { delete dt.atoms; dt.atoms = NULL; }
- break;
- case tp_vasp:
- if(dt.v) { delete dt.v; dt.v = NULL; }
- break;
- case tp_env:
- if(dt.env) { delete dt.env; dt.env = NULL; }
- break;
- case tp_vx:
- if(dt.vx) { delete dt.vx; dt.vx = NULL; }
- break;
- case tp_cx:
- if(dt.cx) { delete dt.cx; dt.cx = NULL; }
- break;
- case tp_int:
- case tp_float:
- case tp_double:
- break;
- default:
- ERRINTERNAL();
- }
- tp = tp_none;
- return *this;
-}
-
-Argument &Argument::ClearAll()
-{
- Clear();
- if(nxt) { delete nxt; nxt = NULL; }
- return *this;
-}
-
-Argument &Argument::SetVasp(Vasp *v)
-{
- if(tp != tp_none) Clear();
- dt.v = v; tp = tp_vasp;
- return *this;
-}
-
-Argument &Argument::SetEnv(Env *e)
-{
- if(tp != tp_none) Clear();
- dt.env = e; tp = tp_env;
- return *this;
-}
-
-Argument &Argument::SetList(I argc,const t_atom *argv)
-{
- if(tp != tp_none) Clear();
- dt.atoms = new flext::AtomList(argc,argv); tp = tp_list;
- return *this;
-}
-
-Argument &Argument::SetR(F f)
-{
- if(tp != tp_none) Clear();
- dt.f = f; tp = tp_float;
- return *this;
-}
-
-Argument &Argument::SetR(D f)
-{
- if(tp != tp_none) Clear();
- dt.d = f; tp = tp_double;
- return *this;
-}
-
-Argument &Argument::SetI(I i)
-{
- if(tp != tp_none) Clear();
- dt.i = i; tp = tp_int;
- return *this;
-}
-
-Argument &Argument::SetCX(F re,F im)
-{
- if(tp != tp_none) Clear();
- dt.cx = new CX(re,im); tp = tp_cx;
- return *this;
-}
-
-Argument &Argument::SetVX(VX *vec)
-{
- if(tp != tp_none) Clear();
- dt.vx = vec; tp = tp_vx;
- return *this;
-}
-
-I Argument::GetAInt() const { return (I)GetADouble(); }
-
-F Argument::GetAFloat() const { return GetADouble(); }
-
-D Argument::GetADouble() const
-{
- if(IsInt()) return GetInt();
- else if(IsFloat()) return GetFloat();
- else if(IsDouble()) return GetDouble();
- else return 0;
-}
-
-CX Argument::GetAComplex() const
-{
- if(IsInt()) return (F)GetInt();
- else if(IsFloat()) return GetFloat();
- else if(IsDouble()) return GetDouble();
- else if(IsComplex()) return GetComplex();
- else return 0;
-}
-
-Vasp Argument::GetAVasp() const
-{
- if(IsVasp()) return GetVasp();
- else if(IsList()) return Vasp(dt.atoms->Count(),dt.atoms->Atoms());
- else return Vasp();
-}
-
-Env Argument::GetAEnv() const
-{
- if(IsEnv()) return GetEnv();
- else if(IsList()) return Env(dt.atoms->Count(),dt.atoms->Atoms());
- else return Env();
-}
-
-
-Argument &Argument::Add(Argument *n)
-{
- if(nxt) nxt->Add(n);
- else nxt = n;
- return *n;
-}
-
-Argument &Argument::Next(I i)
-{
- if(i <= 0) return *this;
- else {
- Argument *n = Next();
- if(n) return n->Next(i-1);
- else {
- error("Argument: index not found!");
- return *this;
- }
- }
-}
-
-Argument &Argument::AddVasp(Vasp *v) { Argument *a = new Argument; a->SetVasp(v); return Add(a); }
-
-Argument &Argument::AddEnv(Env *e) { Argument *a = new Argument; a->SetEnv(e); return Add(a); }
-
-Argument &Argument::AddList(I argc,const t_atom *argv) { Argument *a = new Argument; a->SetList(argc,argv); return Add(a); }
-
-Argument &Argument::AddI(I i) { Argument *a = new Argument; a->SetI(i); return Add(a); }
-
-Argument &Argument::AddR(F f) { Argument *a = new Argument; a->SetR(f); return Add(a); }
-
-Argument &Argument::AddCX(F re,F im) { Argument *a = new Argument; a->SetCX(re,im); return Add(a); }
-
-Argument &Argument::AddVX(VX *vec) { Argument *a = new Argument; a->SetVX(vec); return Add(a); }
-
-
-
diff --git a/externals/grill/vasp/source/arg.h b/externals/grill/vasp/source/arg.h
deleted file mode 100644
index cd0f70a1..00000000
--- a/externals/grill/vasp/source/arg.h
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
-
-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_ARG_H
-#define __VASP_ARG_H
-
-#include "vasp.h"
-#include "env.h"
-
-#define VASP_ARG() Argument()
-#define VASP_ARG_I(VAL) Argument().SetR(VAL)
-#define VASP_ARG_R(VAL) Argument().SetR(VAL)
-#define VASP_ARG_CX(RV,IV) Argument().SetCX(RV,IV)
-
-class Argument:
- public flext
-{
-public:
- Argument();
- ~Argument();
-
- Argument &Parse(I argc,const t_atom *argv);
- Argument &Clear();
- Argument &ClearAll();
-
- Argument &SetVasp(Vasp *v);
- Argument &SetEnv(Env *e);
- Argument &SetList(I argc,const t_atom *argv);
- Argument &SetI(I i);
- Argument &SetR(F f);
- Argument &SetR(D d);
- Argument &SetR(I i) { return SetR((F)i); }
- Argument &SetCX(F re,F im);
- Argument &SetVX(VX *vec);
-
- Argument *Next() { return nxt; }
- Argument &Next(I i);
- Argument &Add(Argument *a);
-
- Argument &AddVasp(Vasp *v);
- Argument &AddEnv(Env *e);
- Argument &AddList(I argc,const t_atom *argv);
- Argument &AddI(I i);
- Argument &AddR(F f);
- Argument &AddR(D d);
- Argument &AddR(I i) { return AddR((F)i); }
- Argument &AddCX(F re,F im);
- Argument &AddVX(VX *vec);
-
- BL IsNone() const { return tp == tp_none; }
- BL IsList() const { return tp == tp_list; }
- BL IsVasp() const { return tp == tp_vasp; }
- BL CanbeVasp() const { return tp == tp_vasp || (tp == tp_list && Vasp::ChkArgs(dt.atoms->Count(),dt.atoms->Atoms())); }
- BL IsEnv() const { return tp == tp_env; }
- BL CanbeEnv() const { return tp == tp_env || (tp == tp_env && Env::ChkArgs(dt.atoms->Count(),dt.atoms->Atoms())); }
- BL IsInt() const { return tp == tp_int; }
- BL CanbeInt() const { return tp == tp_int || tp == tp_float || tp_double; }
- BL IsFloat() const { return tp == tp_float; }
- BL CanbeFloat() const { return tp == tp_float || tp == tp_double || tp == tp_int; }
- BL IsDouble() const { return tp == tp_double; }
- BL CanbeDouble() const { return tp == tp_double || tp == tp_float || tp == tp_int; }
- BL IsComplex() const { return tp == tp_cx; }
- BL CanbeComplex() const { return tp == tp_cx || CanbeFloat(); }
- BL IsVector() const { return tp == tp_vx; }
- BL CanbeVector() const { return tp == tp_vx || CanbeComplex(); }
-
- const flext::AtomList &GetList() const { return *dt.atoms; }
- const Vasp &GetVasp() const { return *dt.v; }
- Vasp GetAVasp() const;
- const Env &GetEnv() const { return *dt.env; }
- Env GetAEnv() const;
- I GetInt() const { return dt.i; }
- I GetAInt() const;
- F GetFloat() const { return dt.f; }
- F GetAFloat() const;
- D GetDouble() const { return dt.d; }
- D GetADouble() const;
- const CX &GetComplex() const { return *dt.cx; }
- CX GetAComplex() const;
- const VX &GetVector() const { return *dt.vx; }
- VX GetAVector() const;
-
- V MakeList(flext::AtomList &ret);
-
-protected:
- enum {
- tp_none,tp_vasp,tp_env,tp_list,tp_int,tp_float,tp_double,tp_cx,tp_vx
- } tp;
-
- union {
- Vasp *v;
- Env *env;
- flext::AtomList *atoms;
- F f;
- D d;
- I i;
- CX *cx;
- VX *vx;
- } dt;
-
- Argument *nxt;
-};
-
-#endif
diff --git a/externals/grill/vasp/source/buflib.cpp b/externals/grill/vasp/source/buflib.cpp
deleted file mode 100644
index a6b3d082..00000000
--- a/externals/grill/vasp/source/buflib.cpp
+++ /dev/null
@@ -1,343 +0,0 @@
-/*
-
-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.
-
-*/
-
-#include "main.h"
-#include "buflib.h"
-#include <stdio.h>
-
-#define LIBTICK 0.1 // tick time in s
-#define LIBTOL 3 // how many ticks till release
-
-#define REUSE_MAXLOSEREL 0.1 // max. fraction of lost buffer size
-#define REUSE_MAXLOSEABS 10000 // max. lost buffer size
-
-
-#ifdef __MWERKS__
-#define STD std
-#else
-#define STD
-#endif
-
-
-class FreeEntry:
- public flext
-{
-public:
- FreeEntry(const t_symbol *s): sym(s),nxt(NULL) {}
-
- const t_symbol *sym;
- FreeEntry *nxt;
-};
-
-class BufEntry:
- public flext
-{
-public:
- BufEntry(const t_symbol *s,I fr,BL zero = true);
- ~BufEntry();
-
- V IncRef();
- V DecRef();
-
- const t_symbol *sym;
- I refcnt,tick;
- BufEntry *nxt;
-
- I alloc,len;
- S *data;
-};
-
-
-static BufEntry *libhead = NULL,*libtail = NULL;
-static FreeEntry *freehead = NULL,*freetail = NULL;
-static I libcnt = 0,libtick = 0;
-
-#ifdef FLEXT_THREADS
-static flext::ThrMutex libmtx,freemtx;
-#endif
-
-static V FreeLibSym(const t_symbol *s);
-
-
-
-
-BufEntry::BufEntry(const t_symbol *s,I fr,BL zero):
- sym(s),
- alloc(fr),len(fr),
- refcnt(0),nxt(NULL)
-{
- data = (S *)NewAligned(len*sizeof(*data));
- if(zero) flext::ZeroMem(data,len*sizeof(*data));
-}
-
-BufEntry::~BufEntry()
-{
- if(sym) FreeLibSym(sym);
- if(data) FreeAligned(data);
-}
-
-V BufEntry::IncRef() { ++refcnt; }
-V BufEntry::DecRef() { --refcnt; tick = libtick; }
-
-static BufEntry *FindInLib(const t_symbol *s)
-{
- BufEntry *e;
- for(e = libhead; e && e->sym != s; e = e->nxt) (void)0;
- return e?e:NULL;
-}
-
-#ifdef FLEXT_DEBUG
-static V DumpLib()
-{
- post("Dump {");
- BufEntry *e;
- for(e = libhead; e; e = e->nxt) {
- post("\t%s -> refs:%i, alloc:%i, len:%i -> %p",flext::GetString(e->sym),e->refcnt,e->alloc,e->len,e->data);
- }
- post("}");
-}
-#endif
-
-VBuffer *BufLib::Get(const VSymbol &s,I chn,I len,I offs)
-{
- BufEntry *e = FindInLib(s.Symbol());
- if(e)
- return new ImmBuf(e,len,offs);
- else
- return new SysBuf(s,chn,len,offs);
-}
-
-V BufLib::IncRef(const t_symbol *s)
-{
- if(s) {
- BufEntry *e = FindInLib(s);
- if(e) e->IncRef();
- }
-}
-
-V BufLib::DecRef(const t_symbol *s)
-{
- if(s) {
- BufEntry *e = FindInLib(s);
- if(e) e->DecRef();
- }
-}
-
-static V Collect()
-{
-#ifdef FLEXT_THREADS
- libmtx.Lock();
-#endif
-
- // collect garbage
- BufEntry *e,*p;
- for(p = NULL,e = libhead; e; ) {
- if(e->refcnt <= 0 && e->tick+LIBTOL < libtick) {
- FLEXT_ASSERT(e->refcnt == 0);
-
- BufEntry *n = e->nxt;
-
- if(p) p->nxt = n;
- else libhead = n;
-
- if(!n) libtail = p;
- else e->nxt = NULL;
-
- delete e;
-
- e = n;
- }
- else
- p = e,e = e->nxt;
- }
-
-#ifdef FLEXT_THREADS
- libmtx.Unlock();
-#endif
-}
-
-
-#ifdef FLEXT_THREADS
-static bool libthractive = false;
-//static flext::thrid_t libthrid;
-static bool libthrexit = false; // currently not used
-static flext::ThrCond *libthrcond = NULL;
-
-static V LibThr(flext::thr_params *)
-{
- flext::RelPriority(-2);
-
- while(!libthrexit) {
- libthrcond->TimedWait(1); // don't go below 1 here as TimedWait might not support fractions of seconds!!!
- // TODO - should process return value of TimedWait
- Collect();
- }
-}
-#endif
-
-static flext::Timer *libclk = NULL;
-
-static V LibTick(V *)
-{
-#ifdef FLEXT_THREADS
- libthrcond->Signal();
-#else
- Collect();
-#endif
-
- ++libtick;
-}
-
-static const t_symbol *GetLibSym()
-{
-#ifdef FLEXT_THREADS
- freemtx.Lock();
-#endif
- const t_symbol *ret;
-
- if(freehead) {
- // reuse from free-list
- FreeEntry *r = freehead;
- freehead = r->nxt;
- if(!freehead) freetail = NULL;
- const t_symbol *s = r->sym;
- delete r;
- ret = s;
- }
- else {
- // allocate new symbol
- char tmp[20];
- if(libcnt > 0xffff)
- STD::sprintf(tmp,"vasp!%08x",libcnt);
- else // better hash lookup for 4 digits
- STD::sprintf(tmp,"vasp!%04x",libcnt);
- libcnt++;
- ret = gensym(tmp);
- }
-
-#ifdef FLEXT_THREADS
- freemtx.Unlock();
-#endif
- return ret;
-}
-
-static V FreeLibSym(const t_symbol *sym)
-{
-#ifdef FLEXT_DEBUG
-// post("free %s",flext::GetString(sym));
-#endif
-
-#ifdef FLEXT_THREADS
- freemtx.Lock();
-#endif
-
- FreeEntry *f = new FreeEntry(sym);
- if(!freehead) freehead = f;
- else freetail->nxt = f;
- freetail = f;
-
-#ifdef FLEXT_THREADS
- freemtx.Unlock();
-#endif
-}
-
-
-BufEntry *BufLib::NewImm(I fr,BL zero)
-{
-#ifdef FLEXT_THREADS
- if(!libthractive) {
- bool ret = flext::LaunchThread(LibThr,NULL);
- if(!ret)
- error("vasp - Could not launch helper thread");
- else {
- libthrcond = new flext::ThrCond;
- libthractive = true;
- }
- }
-#endif
- if(!libclk) {
- libclk = new flext::Timer(true);
- libclk->SetCallback(LibTick);
- libclk->Periodic(LIBTICK);
- }
-
- const t_symbol *s = GetLibSym();
- BufEntry *entry = new BufEntry(s,fr,zero);
-
-#ifdef FLEXT_THREADS
- libmtx.Lock();
-#endif
-
- if(libtail) libtail->nxt = entry;
- else libhead = entry;
- libtail = entry;
-
-#ifdef FLEXT_DEBUG
-// DumpLib();
-#endif
-
-#ifdef FLEXT_THREADS
- libmtx.Unlock();
-#endif
-
- return entry;
-}
-
-static F reuse_maxloserel = (F)REUSE_MAXLOSEREL;
-static I reuse_maxloseabs = REUSE_MAXLOSEABS;
-
-BufEntry *BufLib::Resize(BufEntry *e,I fr,BL keep,BL zero)
-{
- if(e->alloc >= fr && fr >= e->alloc*(1-reuse_maxloserel) && fr >= (e->alloc-reuse_maxloseabs)) {
- // reuse buffer
- e->len = fr;
- }
- else {
- S *nd = new S[fr];
- if(keep) {
- I l = fr;
- if(e->len < l) {
- l = e->len;
- if(zero) flext::ZeroMem(nd+l,(fr-l)*sizeof(*nd));
- }
- flext::CopyMem(nd,e->data,l*sizeof(*nd));
- }
-
- delete[] e->data;
- e->data = nd;
- e->len = e->alloc = fr;
- }
- return e;
-}
-
-
-
-ImmBuf::ImmBuf(I len,BL zero):
- VBuffer(0,len),
- entry(BufLib::NewImm(len,zero))
-{}
-
-ImmBuf::ImmBuf(BufEntry *e,I len,I offs):
- VBuffer(0,len,offs),
- entry(e)
-{
- if(Length() > e->alloc) {
- Length(e->alloc);
- post("vasp - buffer %s: Length (%i) is out of range, corrected to %i",GetString(e->sym),len,e->alloc);
- }
-}
-
-VSymbol ImmBuf::Symbol() const { return entry->sym; }
-
-I ImmBuf::Frames() const { return entry->len; }
-
-V ImmBuf::Frames(I fr,BL keep,BL zero) { entry = BufLib::Resize(entry,fr,keep,zero); }
-
-S *ImmBuf::Data() { return entry->data; }
diff --git a/externals/grill/vasp/source/buflib.h b/externals/grill/vasp/source/buflib.h
deleted file mode 100644
index 545e8103..00000000
--- a/externals/grill/vasp/source/buflib.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
-
-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.
-
-*/
-
-/*! \file buflib.h
- \brief Routines for buffer management
-*/
-
-#ifndef __VASP_BUFLIB_H
-#define __VASP_BUFLIB_H
-
-#include "classes.h"
-#include "vbuffer.h"
-
-class BufEntry;
-
-namespace BufLib
-{
- VBuffer *Get(const VSymbol &s,I chn = 0,I len = -1,I offs = 0);
-
- BufEntry *NewImm(I fr,BL zero = true);
-
- V IncRef(const t_symbol *s);
- V DecRef(const t_symbol *s);
-
- BufEntry *Resize(BufEntry *e,I fr,BL keep = false,BL zero = true);
-}
-
-
-
-#endif
diff --git a/externals/grill/vasp/source/classes.cpp b/externals/grill/vasp/source/classes.cpp
deleted file mode 100644
index 195e9e25..00000000
--- a/externals/grill/vasp/source/classes.cpp
+++ /dev/null
@@ -1,416 +0,0 @@
-/*
-
-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.
-
-*/
-
-#include "main.h"
-#include "classes.h"
-//#include <stdarg.h>
-
-
-///////////////////////////////////////////////////////////////////////////
-// vasp_base class
-///////////////////////////////////////////////////////////////////////////
-
-const t_symbol *vasp_base::sym_radio;
-const t_symbol *vasp_base::sym_vasp;
-const t_symbol *vasp_base::sym_env;
-const t_symbol *vasp_base::sym_double;
-const t_symbol *vasp_base::sym_complex;
-const t_symbol *vasp_base::sym_vector;
-
-V vasp_base::Setup(t_classid c)
-{
- sym_radio = MakeSymbol("radio");
- sym_vasp = MakeSymbol("vasp");
- sym_env = MakeSymbol("env");
- sym_double = MakeSymbol("double");
- sym_complex = MakeSymbol("complex");
- sym_vector = MakeSymbol("vector");
-
- FLEXT_CADDMETHOD_(c,0,"radio",m_radio);
- FLEXT_CADDMETHOD_(c,0,"help",m_help);
-
- FLEXT_CADDATTR_VAR1(c,"defer",deferred);
-
-// LATER!
-/*
- FLEXT_CADDATTR_VAR1(c,"argchk",argchk);
- FLEXT_CADDATTR_VAR1(c,"loglvl",loglvl);
- FLEXT_CADDATTR_VAR1_E(c,"unit",unit);
-*/
-}
-
-vasp_base::vasp_base():
- refresh(false),argchk(false),deferred(false),
- unit(xsu_sample),loglvl(0)
-{}
-
-vasp_base::~vasp_base() {}
-
-
-V vasp_base::m_radio(I argc,const t_atom *argv)
-{
- if(argc > 0 && IsSymbol(argv[0])) {
- // send command to self!
- ToSelfAnything(0,GetSymbol(argv[0]),argc-1,argv+1);
-
- // send command to the next objects in line
- ToOutAnything(0,sym_radio,argc,argv);
- }
- else
- post("%s - radio message invalid",thisName());
-}
-
-/*
-V vasp_base::m_unit(xs_unit u) { unit = u; }
-V vasp_base::m_argchk(BL chk) { argchk = chk; }
-V vasp_base::m_loglvl(I lvl) { loglvl = lvl; }
-*/
-
-BL vasp_base::ToOutVasp(I oix,Vasp &v)
-{
- AtomList *lst = v.MakeList(false);
- if(lst) {
- if(deferred)
- ToQueueAnything(oix,sym_vasp,lst->Count(),lst->Atoms());
- else
- ToOutAnything(oix,sym_vasp,lst->Count(),lst->Atoms());
- delete lst;
- return true;
- }
- else return false;
-}
-
-///////////////////////////////////////////////////////////////////////////
-// vasp_op class
-///////////////////////////////////////////////////////////////////////////
-
-vasp_op::vasp_op(BL op)
- :detach(false),prior(-2)
-#ifdef FLEXT_THREADS
-// ,thrid(0)
-#endif
-{
- if(op) FLEXT_ADDATTR_VAR("to",m_getto,m_setto);
-}
-
-V vasp_op::Setup(t_classid c)
-{
- FLEXT_CADDBANG(c,0,m_dobang);
- FLEXT_CADDMETHOD_(c,0,"vasp",m_vasp);
- FLEXT_CADDMETHOD_(c,0,"set",m_set);
-
- FLEXT_CADDATTR_VAR(c,"ref",m_getref,m_setref);
-
- FLEXT_CADDMETHOD_(c,0,"stop",m_stop);
-
- FLEXT_CADDATTR_VAR(c,"update",m_getupd,m_setupd);
-
- FLEXT_CADDATTR_VAR1(c,"detach",detach);
- FLEXT_CADDATTR_VAR1(c,"prior",prior);
-}
-
-V vasp_op::m_dobang()
-{
-#ifdef FLEXT_THREADS
- if(detach)
- FLEXT_CALLMETHOD(m_bang);
- else
-#endif
- m_bang();
-}
-
-I vasp_op::m_set(I argc,const t_atom *argv)
-{
- Vasp arg(argc,argv);
-
- if(argc && !arg.Ok()) {
- ref.Clear();
- post("%s - invalid vasp detected and ignored",thisName());
- }
- else {
- if(arg.Check())
- ref = arg;
- else {
- ref.Clear();
- post("%s - vasp reference is invalid",thisName());
- }
- }
-
- return 0;
-}
-
-V vasp_op::m_vasp(I argc,const t_atom *argv)
-{
- m_set(argc,argv);
- m_dobang();
-}
-
-
-V vasp_op::m_to(I argc,const t_atom *argv)
-{
- Vasp to(argc,argv);
-
- if(argc && !to.Ok()) {
- // empty vasp
- dst.Clear();
- }
- else
- dst = to;
-}
-
-V vasp_op::m_update(I argc,const t_atom *argv)
-{
- if(argc == 0)
- ref.Refresh();
- else {
- if(CanbeInt(argv[0]))
- refresh = GetAInt(argv[0]) != 0;
- else
- post("%s(update) - argument should be omitted or integer",thisName());
- }
-}
-
-V vasp_op::m_stop() {}
-
-///////////////////////////////////////////////////////////////////////////
-// vasp_tx class
-///////////////////////////////////////////////////////////////////////////
-
-vasp_tx::vasp_tx(BL to): vasp_op(to) {}
-
-V vasp_tx::m_bang()
-{
- // Thread has to wait until previous is finished
- Lock();
-
-#ifdef FLEXT_THREADS
- if(!IsSystemThread()) RelPriority(prior);
-#endif
-
- if(ref.Check())
- {
- Vasp *ret = x_work();
- if(ret) {
- if(!ToOutVasp(0,*ret))
- post("%s - empty list",thisName());
- if(refresh) ret->Refresh();
- delete ret;
- }
- else {
-#ifdef FLEXT_DEBUG
- post("%s - no valid return",thisName());
-#endif
- }
- }
- else {
- post("%s - no valid vasp to work with",thisName());
- }
-
-#ifdef FLEXT_THREADS
-// thrid = 0;
-#endif
-
- Unlock();
-}
-
-
-///////////////////////////////////////////////////////////////////////////
-// vasp_unop class
-///////////////////////////////////////////////////////////////////////////
-
-vasp_unop::vasp_unop(BL op,UL outcode):
- vasp_tx(op)
-{
- AddInAnything();
- AddOutAnything(1);
- AddOutlets(outcode);
-}
-
-Vasp *vasp_unop::x_work() { return tx_work(); }
-
-Vasp *vasp_unop::tx_work()
-{
- error("%s - no work method implemented",thisName());
- return NULL;
-}
-
-///////////////////////////////////////////////////////////////////////////
-// vasp_binop class
-///////////////////////////////////////////////////////////////////////////
-
-
-vasp_binop::vasp_binop(I argc,const t_atom *argv,const Argument &def,BL op,UL outcode):
- vasp_tx(op)
-{
- a_list(argc,argv);
- if(arg.IsNone() && !def.IsNone()) arg = def;
-
- AddInAnything(2);
- AddOutAnything(1);
- AddOutlets(outcode);
-}
-
-V vasp_binop::Setup(t_classid c)
-{
- FLEXT_CADDMETHOD(c,1,a_list);
- FLEXT_CADDMETHOD_(c,1,"vasp",a_vasp);
- FLEXT_CADDMETHOD_(c,1,"env",a_env);
- FLEXT_CADDMETHOD_(c,1,"float",a_float);
- FLEXT_CADDMETHOD_(c,1,"double",a_double);
- FLEXT_CADDMETHOD_(c,1,"int",a_int);
- FLEXT_CADDMETHOD_(c,1,"complex",a_complex);
- FLEXT_CADDMETHOD_(c,1,"vector",a_vector);
- FLEXT_CADDMETHOD_(c,1,"radio",a_radio);
-
- FLEXT_CADDATTR_VAR(c,"arg",m_getarg,m_setarg);
-}
-
-V vasp_binop::a_list(I argc,const t_atom *argv)
-{
- if(argc) {
- arg.Parse(argc,argv);
- if(arg.IsNone())
- post("%s - list argument could not be evaluated (ignored)",thisName());
- else if(argchk) {
- // check argument feasibility
- }
- }
- else {
-// post("%s - Empty list argument (ignored)",thisName());
- }
-}
-
-V vasp_binop::a_vasp(I argc,const t_atom *argv)
-{
- Vasp *v = new Vasp(argc,argv);
- if(v->Ok()) {
- arg.SetVasp(v);
- if(argchk) {
- // check argument feasibility
- }
- }
- else {
- post("%s - invalid vasp argument (ignored)",thisName());
- delete v;
- }
-}
-
-V vasp_binop::a_env(I argc,const t_atom *argv)
-{
- Env *bp = new Env(argc,argv);
- if(bp->Ok()) {
- arg.SetEnv(bp);
- if(argchk) {
- // check argument feasibility
- }
- }
- else {
- post("%s - invalid env argument (ignored)",thisName());
- delete bp;
- }
-}
-
-V vasp_binop::a_float(F v) { arg.SetR(v); }
-
-V vasp_binop::a_double(I argc,const t_atom *argv)
-{
- if(
- (argc == 1 && CanbeFloat(argv[0])) ||
- (argc == 2 && CanbeFloat(argv[0]) && CanbeFloat(argv[1]))
- ) {
- arg.SetR((D)GetAFloat(argv[0])+(D)GetAFloat(argv[1]));
- if(argchk) {
- // check argument feasibility
- }
- }
- else
- post("%s - invalid double argument (ignored)",thisName());
-}
-
-V vasp_binop::a_int(I v) { arg.SetI(v); }
-
-V vasp_binop::a_complex(I argc,const t_atom *argv)
-{
- if(
- (argc == 1 && CanbeFloat(argv[0])) ||
- (argc == 2 && CanbeFloat(argv[0]) && CanbeFloat(argv[1]))
- ) {
- arg.SetCX(GetAFloat(argv[0]),GetAFloat(argv[1]));
- if(argchk) {
- // check argument feasibility
- }
- }
- else
- post("%s - invalid complex argument (ignored)",thisName());
-}
-
-V vasp_binop::a_vector(I argc,const t_atom *argv)
-{
- error("%s - vector type not implemented",thisName());
-}
-
-
-Vasp *vasp_binop::x_work() { return tx_work(arg); }
-
-Vasp *vasp_binop::tx_work(const Argument &arg)
-{
- error("%s - no work method implemented",thisName());
- return NULL;
-}
-
-
-///////////////////////////////////////////////////////////////////////////
-// vasp_anyop class
-///////////////////////////////////////////////////////////////////////////
-
-
-vasp_anyop::vasp_anyop(I argc,const t_atom *argv,const Argument &def,BL op,UL outcode):
- vasp_tx(op)
-{
- a_list(argc,argv);
- if(arg.IsNone() && !def.IsNone()) arg = def;
-
- AddInAnything(2);
- AddOutAnything(1);
- AddOutlets(outcode);
-}
-
-V vasp_anyop::Setup(t_classid c)
-{
- FLEXT_CADDMETHOD(c,1,a_list);
- FLEXT_CADDMETHOD_(c,1,"vasp",a_list);
- FLEXT_CADDMETHOD_(c,1,"radio",a_radio);
-
- FLEXT_CADDATTR_VAR(c,"arg",m_getarg,m_setarg);
-}
-
-V vasp_anyop::a_list(I argc,const t_atom *argv)
-{
- if(argc) {
- arg.SetList(argc,argv);
- if(arg.IsNone())
- post("%s - argument could not be evaluated (ignored)",thisName());
- else if(argchk) {
- // check argument feasibility
- }
- }
- else {
-// post("%s - Empty list argument (ignored)",thisName());
- }
-}
-
-Vasp *vasp_anyop::x_work() { return tx_work(arg); }
-
-Vasp *vasp_anyop::tx_work(const Argument &arg)
-{
- error("%s - no work method implemented",thisName());
- return NULL;
-}
-
diff --git a/externals/grill/vasp/source/classes.h b/externals/grill/vasp/source/classes.h
deleted file mode 100644
index 9096b3f8..00000000
--- a/externals/grill/vasp/source/classes.h
+++ /dev/null
@@ -1,320 +0,0 @@
-/*
-
-VASP modular - vector assembling signal processor / objects for Max/MSP and PD
-
-Copyright (c) 2002-2007 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-#ifndef __VASP_CLASSES_H
-#define __VASP_CLASSES_H
-
-#include "vasp.h"
-#include "arg.h"
-
-
-class vasp_base:
- public flext_base
-{
- FLEXT_HEADER_S(vasp_base,flext_base,Setup)
-
-public:
- enum xs_unit {
- xsu__ = -1, // don't change
- xsu_sample = 0,xsu_buffer,xsu_ms,xsu_s
- };
-
- static const t_symbol *sym_vasp;
- static const t_symbol *sym_env;
- static const t_symbol *sym_double;
- static const t_symbol *sym_complex;
- static const t_symbol *sym_vector;
- static const t_symbol *sym_radio;
-
-protected:
- vasp_base();
- virtual ~vasp_base();
-
- virtual V m_radio(I argc,const t_atom *argv); // commands for all
-
- virtual V m_help() = 0;
-
-/*
- V m_argchk(BL chk); // precheck argument on arrival
- V m_loglvl(I lvl); // noise level of log messages
- V m_unit(xs_unit u); // unit command
-*/
- BL refresh; // immediate graphics refresh?
- BL argchk; // pre-operation argument feasibility check
- BL deferred; // queue outgoing vasp messages
- xs_unit unit; // time units
- I loglvl; // noise level for log messages
-
- friend class Vasp;
-
- BL ToOutVasp(I outlet,Vasp &v);
-
-private:
- static V Setup(t_classid);
-
- FLEXT_CALLBACK_V(m_radio)
- FLEXT_CALLBACK(m_help)
-
- FLEXT_ATTRVAR_B(argchk)
- FLEXT_ATTRVAR_B(deferred)
- FLEXT_ATTRVAR_I(loglvl)
- FLEXT_ATTRVAR_E(unit,xs_unit)
-};
-
-
-class vasp_op:
- public vasp_base
-{
- FLEXT_HEADER_S(vasp_op,vasp_base,Setup)
-
-protected:
- vasp_op(BL withto = false);
-
- virtual V m_dobang(); // bang method
-
- virtual V m_vasp(I argc,const t_atom *argv); // trigger
- virtual I m_set(I argc,const t_atom *argv); // non trigger
- virtual V m_to(I argc,const t_atom *argv); // set destination
-// V m_detach(BL thr); // detached thread
-// virtual V m_prior(I dp); // thread priority +-
- virtual V m_stop(); // stop working
-
- virtual V m_update(I argc = 0,const t_atom *argv = NULL); // graphics update
-
- V m_setupd(const AtomList &l) { m_update(l.Count(),l.Atoms()); }
- V m_getupd(AtomList &l) { l(1); SetBool(l[0],refresh); }
-
- // destination vasp
- Vasp ref,dst;
-
- V m_setref(const AtomList &l) { m_set(l.Count(),l.Atoms()); }
- V m_getref(AtomList &l) { ref.MakeList(l); }
- V m_setto(const AtomList &l) { m_to(l.Count(),l.Atoms()); }
- V m_getto(AtomList &l) { dst.MakeList(l); }
-
- FLEXT_CALLBACK_V(m_to)
-
- FLEXT_CALLBACK(m_dobang)
-#ifdef FLEXT_THREADS
- FLEXT_THREAD(m_bang)
-
- ThrMutex runmtx;
- V Lock() { runmtx.Lock(); }
- V Unlock() { runmtx.Unlock(); }
-
-// thrid_t thrid;
-#else
- FLEXT_CALLBACK(m_bang)
-
- V Lock() {}
- V Unlock() {}
-#endif
- BL detach; // detached operation?
- I prior; // thread priority
-
- FLEXT_CALLBACK_V(m_vasp)
- FLEXT_CALLBACK_V(m_set)
-
- FLEXT_CALLVAR_V(m_getref,m_setref)
- FLEXT_CALLVAR_V(m_getto,m_setto)
-
- FLEXT_CALLBACK(m_stop)
-
- FLEXT_CALLVAR_V(m_getupd,m_setupd)
- FLEXT_ATTRVAR_B(detach)
- FLEXT_ATTRVAR_I(prior)
-
-private:
- static V Setup(t_classid);
-
- virtual V m_bang() = 0; // do! and output current Vasp
-};
-
-
-
-class vasp_tx:
- public vasp_op
-{
- FLEXT_HEADER(vasp_tx,vasp_op)
-
-protected:
- vasp_tx(BL withto = false);
-
- virtual V m_bang(); // do! and output current Vasp
-
- virtual Vasp *x_work() = 0;
-};
-
-
-
-
-#define VASP_SETUP(op) FLEXT_SETUP(vasp_##op);
-
-
-
-// base class for unary operations
-
-class vasp_unop:
- public vasp_tx
-{
- FLEXT_HEADER(vasp_unop,vasp_tx)
-
-protected:
- vasp_unop(BL withto = false,UL outcode = 0);
-
- virtual Vasp *x_work();
- virtual Vasp *tx_work();
-};
-
-
-// base class for binary operations
-
-class vasp_binop:
- public vasp_tx
-{
- FLEXT_HEADER_S(vasp_binop,vasp_tx,Setup)
-
-protected:
- vasp_binop(I argc,const t_atom *argv,const Argument &def = Argument(),BL withto = false,UL outcode = 0);
-
- // assignment functions
- virtual V a_list(I argc,const t_atom *argv);
- /*virtual*/ V a_vasp(I argc,const t_atom *argv);
- /*virtual*/ V a_env(I argc,const t_atom *argv);
- /*virtual*/ V a_float(F f);
- /*virtual*/ V a_int(I f);
- /*virtual*/ V a_double(I argc,const t_atom *argv);
- /*virtual*/ V a_complex(I argc,const t_atom *argv);
- /*virtual*/ V a_vector(I argc,const t_atom *argv);
-
- V a_radio(I,const t_atom *) {}
-
- virtual Vasp *x_work();
- virtual Vasp *tx_work(const Argument &arg);
-
- Argument arg;
-
- V m_setarg(const AtomList &l) { a_list(l.Count(),l.Atoms()); }
- V m_getarg(AtomList &l) { arg.MakeList(l); }
-
-private:
- static V Setup(t_classid);
-
- FLEXT_CALLBACK_V(a_list)
- FLEXT_CALLBACK_V(a_vasp)
- FLEXT_CALLBACK_V(a_env)
- FLEXT_CALLBACK_1(a_float,F)
- FLEXT_CALLBACK_1(a_int,I)
- FLEXT_CALLBACK_V(a_double)
- FLEXT_CALLBACK_V(a_complex)
- FLEXT_CALLBACK_V(a_vector)
- FLEXT_CALLBACK_V(a_radio)
-
- FLEXT_CALLVAR_V(m_getarg,m_setarg)
-};
-
-
-// base class for non-parsed (list) arguments
-
-class vasp_anyop:
- public vasp_tx
-{
- FLEXT_HEADER_S(vasp_anyop,vasp_tx,Setup)
-
-protected:
- vasp_anyop(I argc,const t_atom *argv,const Argument &def = Argument(),BL withto = false,UL outcode = 0);
-
- // assignment functions
- virtual V a_list(I argc,const t_atom *argv);
-
- V a_radio(I,const t_atom *) {}
-
- virtual Vasp *x_work();
- virtual Vasp *tx_work(const Argument &arg);
-
- Argument arg;
-
- V m_setarg(const AtomList &l) { a_list(l.Count(),l.Atoms()); }
- V m_getarg(AtomList &l) { arg.MakeList(l); }
-
-private:
- static V Setup(t_classid);
-
- FLEXT_CALLBACK_V(a_list)
- FLEXT_CALLBACK_V(a_radio)
-
- FLEXT_CALLVAR_V(m_getarg,m_setarg)
-};
-
-
-
-#define VASP_UNARY(name,op,to,help) \
-class vasp_##op: \
- public vasp_unop \
-{ \
- FLEXT_HEADER(vasp_##op,vasp_unop) \
-public: \
- vasp_##op(): vasp_unop(to) {} \
-protected: \
- virtual Vasp *tx_work() \
- { \
- OpParam p(thisName(),0); \
- CVasp cdst(dst),cref(ref); \
- return VaspOp::m_##op(p,cref,&cdst); \
- } \
- virtual V m_help() { post("%s - " help,thisName()); } \
-}; \
- FLEXT_LIB(name ", vasp_" #op,vasp_##op)
-
-
-#define VASP_BINARY(name,op,to,def,help) \
-class vasp_##op: \
- public vasp_binop \
-{ \
- FLEXT_HEADER(vasp_##op,vasp_binop) \
-public: \
- vasp_##op(I argc,const t_atom *argv): vasp_binop(argc,argv,def,to) {} \
-protected: \
- virtual Vasp *tx_work(const Argument &arg) \
- { \
- OpParam p(thisName(),1); \
- CVasp cdst(dst),cref(ref); \
- return VaspOp::m_##op(p,cref,arg,&cdst); \
- } \
- virtual V m_help() { post("%s - " help,thisName()); } \
-}; \
-FLEXT_LIB_V(name ", vasp_" #op,vasp_##op)
-
-
-#define VASP_ANYOP(name,op,args,to,def,help) \
-class vasp_##op: \
- public vasp_anyop \
-{ \
- FLEXT_HEADER(vasp_##op,vasp_anyop) \
-public: \
- vasp_##op(I argc,const t_atom *argv): vasp_anyop(argc,argv,def,to) {} \
-protected: \
- virtual Vasp *tx_work(const Argument &arg) \
- { \
- OpParam p(thisName(),args); \
- CVasp cdst(dst),cref(ref); \
- return VaspOp::m_##op(p,cref,arg,&cdst); \
- } \
- virtual V m_help() { post("%s - " help,thisName()); } \
-}; \
-FLEXT_LIB_V(name ", vasp_" #op,vasp_##op)
-
-#define VASP_LIB(name,cl) FLEXT_LIB(name ", " #cl,cl);
-#define VASP_LIB_V(name,cl) FLEXT_LIB_V(name ", " #cl,cl);
-
-
-#define VASP__SETUP(op) FLEXT_SETUP(vasp_##op);
-
-#endif
diff --git a/externals/grill/vasp/source/env.cpp b/externals/grill/vasp/source/env.cpp
deleted file mode 100644
index 2f0fb58b..00000000
--- a/externals/grill/vasp/source/env.cpp
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
-
-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.
-
-*/
-
-#include "main.h"
-#include "env.h"
-#include "classes.h"
-#include "util.h"
-
-Env::Env(I argc,const t_atom *argv)
-{
- I ix = 0;
- t_symbol *v = ix < argc?flext::GetASymbol(argv[ix]):NULL;
- if(v && v == vasp_base::sym_env) ix++; // if it is "env" ignore it
-
- cnt = (argc-ix)/2;
- pos = new R[cnt];
- val = new R[cnt];
-
- R prev = -BIG;
- BL ok = true;
- for(I i = 0; i < cnt; ++i) {
- val[i] = flext::GetAFloat(argv[ix++]);
- pos[i] = flext::GetAFloat(argv[ix++]);
- if(pos[i] < prev) ok = false;
- prev = pos[i];
- }
-
- if(ix < argc) {
- post("vasp - env pos/value pairs incomplete, omitted dangling value");
- }
-
- if(!ok) Clear();
-}
-
-/*
-Env::Env(const Env &s):
- cnt(s.cnt),pos(new R[s.cnt]),val(new R[s.cnt])
-{
- for(I i = 0; i < cnt; ++i) pos[i] = s.pos[i],val[i] = s.val[i];
-}
-*/
-
-Env::~Env() { Clear(); }
-
-
-BL Env::ChkArgs(I argc,const t_atom *argv)
-{
- I ix = 0;
-
- // vasp keyword
- t_symbol *v = ix < argc?flext::GetASymbol(argv[ix]):NULL;
- if(v && v == vasp_base::sym_env) ix++; // if it is "env" ignore it
-
- while(argc > ix) {
- // check for value
- if(flext::CanbeFloat(argv[ix])) ix++;
- else
- return false;
-
- // check for position
- if(argc > ix)
- if(flext::CanbeFloat(argv[ix])) ix++;
- else
- return false;
- }
-
- return true;
-}
-
-V Env::MakeList(flext::AtomList &ret) const
-{
- ret(cnt*2+1);
- flext::SetSymbol(ret[0],vasp_base::sym_env);
- for(I i = 0; i < cnt; ++i) {
- flext::SetFloat(ret[i*2+1],val[i]);
- flext::SetFloat(ret[i*2+2],pos[i]);
- }
-}
-
-V Env::Clear()
-{
- cnt = 0;
- if(pos) delete[] pos; pos = NULL;
- if(val) delete[] val; val = NULL;
-}
-
-
-Env::Iter::Iter(const Env &bpl): bp(bpl),ppt(-BIG),npt(BIG),pvl(0),k(0) {}
-
-V Env::Iter::Init(R p)
-{
- I cnt = bp.Count();
- FLEXT_ASSERT(cnt > 0);
-
- if(p < bp.Pos(0)) {
- // position is before the head
- ix = -1;
- ppt = -BIG; pvl = bp.Val(0);
- }
- else if(p > bp.Pos(cnt-1)) {
- // position is after the tail
- ix = cnt-1;
- ppt = bp.Pos(ix); pvl = bp.Val(ix);
- }
- else {
- // somewhere in the list
- for(ix = 0; ix < cnt; ++ix)
- if(p >= bp.Pos(ix)) break;
- ppt = bp.Pos(ix); pvl = bp.Val(ix);
-
- FLEXT_ASSERT(ix < cnt);
- }
-
- if(ix >= cnt) {
- npt = BIG; nvl = pvl;
- k = 0;
- }
- else {
- npt = bp.Pos(ix+1); nvl = bp.Val(ix+1);
- k = (nvl-pvl)/(npt-ppt);
- }
-}
-
-// \todo iteration first, then calculation of k
-V Env::Iter::UpdateFwd(R p)
-{
- do {
- ppt = npt,pvl = nvl;
- if(++ix >= bp.Count()-1) npt = BIG,k = 0;
- else {
- k = ((nvl = bp.Val(ix+1))-pvl)/((npt = bp.Pos(ix+1))-ppt);
- }
- } while(p > npt);
-}
-
-// \todo iteration first, then calculation of k
-V Env::Iter::UpdateBwd(R p)
-{
- do {
- npt = ppt,nvl = pvl;
- if(--ix < 0) ppt = -BIG,k = 0;
- else {
- k = (nvl-(pvl = bp.Val(ix)))/(npt-(ppt = bp.Pos(ix)));
- }
- } while(p < ppt);
-}
diff --git a/externals/grill/vasp/source/env.h b/externals/grill/vasp/source/env.h
deleted file mode 100644
index 11ad68ab..00000000
--- a/externals/grill/vasp/source/env.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
-
-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_ENV_H
-#define __VASP_ENV_H
-
-#include "vasp.h"
-
-class Env:
- public flext
-{
-public:
- Env(): cnt(0),pos(NULL),val(NULL) {}
- Env(I argc,const t_atom *argv);
-// Env(const Env &p);
- ~Env();
-
- static BL ChkArgs(I argc,const t_atom *argv);
-
- V MakeList(flext::AtomList &ret) const;
-
- V Clear();
-
- BL Ok() const { return cnt && pos != NULL && val != NULL; }
-
-// friend class Iter;
-
- class Iter
- {
- public:
- Iter(const Env &e);
- V Init(R p);
-
- R ValFwd(R p)
- {
- if(p > npt) UpdateFwd(p);
- return pvl+k*(p-ppt);
- }
-
- R ValBwd(R p)
- {
- if(p < ppt) UpdateBwd(p);
- return pvl+k*(p-ppt);
- }
-
- protected:
- V UpdateFwd(R p);
- V UpdateBwd(R p);
-
- const Env &bp;
- I ix;
- R ppt,npt;
- R pvl,nvl;
- R k;
- };
-
- I Count() const { return cnt; }
- const R *Pos() const { return pos; }
- const R *Val() const { return val; }
- R Pos(I ix) const { return pos[ix]; }
- R Val(I ix) const { return val[ix]; }
-
-protected:
- I cnt;
- R *pos,*val;
-};
-
-#endif
-
diff --git a/externals/grill/vasp/source/main.cpp b/externals/grill/vasp/source/main.cpp
deleted file mode 100644
index 38febd4a..00000000
--- a/externals/grill/vasp/source/main.cpp
+++ /dev/null
@@ -1,216 +0,0 @@
-/*
-
-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.
-
-*/
-
-#include "main.h"
-#include "classes.h"
-
-
-const C *VASP_VERSION = "0.1.4pre";
-
-#include "opfuns.h"
-
-static V vasp_main()
-{
- post("");
- post("-----------------------------------------");
- post(" VASP modular %s ",VASP_VERSION);
- post(" vector assembling signal processor ");
- post(" (C)2002-2007 Thomas Grill ");
-#ifdef FLEXT_DEBUG
- post(" DEBUG BUILD - " __DATE__ " " __TIME__);
-#endif
- post("");
- post(" http://grrrr.org/ext ");
- post("-----------------------------------------");
- post("");
-
- // call the objects' setup routines
-
- VASP_SETUP(v); // vasp
- VASP_SETUP(multi); // vasp.m
-
- VASP_SETUP(check); // vasp.check
- VASP_SETUP(update); // vasp.update
-// VASP_SETUP(post); // vasp.post
-
- VASP_SETUP(sync); // vasp.sync
- VASP_SETUP(radio); // vasp.radio
-
- VASP_SETUP(vector); // vasp.vector
- VASP_SETUP(qvectors); // vasp.vectors?
-
- VASP_SETUP(size); // vasp.size
- VASP_SETUP(dsize); // vasp.size+
- VASP_SETUP(qsize); // vasp.size?
- VASP_SETUP(msize); // vasp.size*
- VASP_SETUP(rsize); // vasp.size/
-
- VASP_SETUP(offset); // vasp.offset
- VASP_SETUP(doffset); // vasp.offset+
- VASP_SETUP(qoffset); // vasp.offset?
-
- VASP_SETUP(frames); // vasp.frames
- VASP_SETUP(dframes); // vasp.frames+
- VASP_SETUP(qframes); // vasp.frames?
- VASP_SETUP(mframes); // vasp.frames*
- VASP_SETUP(rframes); // vasp.frames/
-
- VASP_SETUP(channel); // vasp.channel
- VASP_SETUP(qchannel); // vasp.channel?
- VASP_SETUP(qchannels); // vasp.channels?
-
- VASP_SETUP(split);
- VASP_SETUP(join);
- VASP_SETUP(spit);
- VASP_SETUP(gather);
- VASP_SETUP(part);
-
- VASP_SETUP(list);
- VASP_SETUP(nonzero);
-
- VASP_SETUP(imm); // vasp.imm
-
- VASP__SETUP(set);
- VASP__SETUP(cset);
- VASP_SETUP(copy);
- VASP_SETUP(ccopy);
-
- VASP__SETUP(add);
- VASP__SETUP(cadd);
- VASP__SETUP(sub);
- VASP__SETUP(csub);
- VASP__SETUP(subr);
- VASP__SETUP(csubr);
- VASP__SETUP(mul);
- VASP__SETUP(cmul);
- VASP__SETUP(div);
- VASP__SETUP(cdiv);
- VASP__SETUP(divr);
- VASP__SETUP(cdivr);
- VASP__SETUP(mod);
-
- VASP__SETUP(sign)
- VASP__SETUP(abs)
- VASP__SETUP(cabs)
-
- VASP_SETUP(qsum)
-
- VASP__SETUP(lwr)
- VASP__SETUP(gtr)
- VASP__SETUP(alwr)
- VASP__SETUP(agtr)
- VASP__SETUP(leq)
- VASP__SETUP(geq)
- VASP__SETUP(aleq)
- VASP__SETUP(ageq)
- VASP__SETUP(equ)
- VASP__SETUP(neq)
-
- VASP__SETUP(min)
- VASP__SETUP(rmin)
- VASP__SETUP(max)
- VASP__SETUP(rmax)
-
- VASP__SETUP(minmax)
-
- VASP_SETUP(qmin)
- VASP_SETUP(qmax)
- VASP_SETUP(qamin)
- VASP_SETUP(qamax)
- VASP_SETUP(qrmin)
- VASP_SETUP(qrmax)
-
- VASP__SETUP(gate);
- VASP__SETUP(rgate);
-// VASP__SETUP(igate);
-// VASP__SETUP(rigate);
-
- VASP_SETUP(peaks)
- VASP_SETUP(valleys)
- VASP_SETUP(rpeaks)
- VASP_SETUP(rvalleys)
-
- VASP_SETUP(qpeaks);
-
-/*
- VASP_SETUP(qvalleys);
- VASP_SETUP(qrpeaks);
- VASP_SETUP(qrvalleys);
-*/
-
- VASP__SETUP(sqr)
- VASP__SETUP(ssqr)
- VASP__SETUP(csqr)
- VASP__SETUP(sqrt)
- VASP__SETUP(ssqrt)
- VASP__SETUP(pow)
- VASP__SETUP(cpowi)
- VASP__SETUP(rpow);
- VASP__SETUP(radd);
-
- VASP__SETUP(exp)
- VASP__SETUP(log)
-
- VASP__SETUP(polar)
- VASP__SETUP(rect)
-
- VASP__SETUP(cnorm)
-// VASP__SETUP(cswap)
-// VASP__SETUP(cconj)
-
- VASP_SETUP(shift)
- VASP_SETUP(xshift)
- VASP__SETUP(rot)
- VASP__SETUP(xrot)
- VASP__SETUP(mirr)
- VASP__SETUP(xmirr)
-
- VASP__SETUP(osc)
- VASP__SETUP(mosc)
- VASP__SETUP(cosc)
- VASP__SETUP(mcosc)
- VASP__SETUP(phasor)
- VASP__SETUP(mphasor)
- VASP__SETUP(noise)
- VASP__SETUP(cnoise)
-
- VASP__SETUP(window)
- VASP__SETUP(mwindow)
- VASP__SETUP(iwindow)
- VASP__SETUP(miwindow)
- VASP__SETUP(xwindow)
- VASP__SETUP(mxwindow)
-
- VASP__SETUP(flp)
- VASP__SETUP(fhp)
-
- VASP__SETUP(int)
- VASP__SETUP(dif)
-
- VASP__SETUP(fix)
-
- VASP__SETUP(tilt)
- VASP__SETUP(xtilt)
-
- VASP__SETUP(soffset)
- VASP__SETUP(sframes)
-
- VASP__SETUP(rfft)
- VASP__SETUP(rifft)
- VASP__SETUP(cfft)
- VASP__SETUP(cifft)
-}
-
-FLEXT_LIB_SETUP(vasp,vasp_main)
-
-
-
-
-
diff --git a/externals/grill/vasp/source/main.h b/externals/grill/vasp/source/main.h
deleted file mode 100644
index d8aa8a65..00000000
--- a/externals/grill/vasp/source/main.h
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
-
-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_H
-#define __VASP_H
-
-// enable attributes
-#define FLEXT_ATTRIBUTES 1
-
-#include <flext.h>
-
-#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 401)
-#error You need at least flext version 0.4.1
-#endif
-
-#if defined(_MSC_VER) && !defined(FLEXT_DEBUG)
-// switch off warnings for the release build
-#pragma warning(disable: 4244)
-#endif
-
-
-#include <typeinfo>
-#include <stdlib.h>
-
-class complex;
-class vector;
-
-#if 0
- #define I int
- #define L long
- #define UL unsigned long
- #define F float
- #define D double
- #define C char
- #define BL bool
- #define V void
- #define S t_sample // type for samples
- #define R double // type for internal calculations
- #define CX complex
- #define VX vector
-#else
- typedef int I;
- typedef long L;
- typedef unsigned long UL;
- typedef float F;
- typedef double D;
- typedef char C;
- typedef bool BL;
- typedef void V;
- typedef t_sample S; // type for samples
- typedef double R; // type for internal calculations
- typedef complex CX;
- typedef vector VX;
-#endif
-
-#if FLEXT_SYS == FLEXT_SYS_PD
-// buffers are never interleaved - special optimizations may occur
-// attention: possibly obsolete when immediate file access is implemented
-#define VASP_CHN1
-#endif
-
-class complex
-{
-public:
- complex() {}
- complex(F re,F im = 0): real(re),imag(im) {}
-
- F real,imag;
-};
-
-class vector
-{
-public:
- vector(): dim(0),data(NULL) {}
- ~vector() { if(data) delete[] data; }
-
- I Dim() const { return dim; }
- F *Data() { return data; }
- const F *Data() const { return data; }
-
- F operator [](I ix) const { return data[ix]; }
- F &operator [](I ix) { return data[ix]; }
-protected:
- I dim; F *data;
-};
-
-#endif
diff --git a/externals/grill/vasp/source/mixfft.cpp b/externals/grill/vasp/source/mixfft.cpp
deleted file mode 100644
index 73d1fca7..00000000
--- a/externals/grill/vasp/source/mixfft.cpp
+++ /dev/null
@@ -1,588 +0,0 @@
-
-#include <math.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-#ifdef _MSC_VER
-#pragma warning(disable: 4244)
-#endif
-
-/************************************************************************
- fft(int n, double xRe[], double xIm[], double yRe[], double yIm[])
- ------------------------------------------------------------------------
- NOTE : This is copyrighted material, Not public domain. See below.
- ------------------------------------------------------------------------
- Input/output:
- int n transformation length.
- double xRe[] real part of input sequence.
- double xIm[] imaginary part of input sequence.
- double yRe[] real part of output sequence.
- double yIm[] imaginary part of output sequence.
- ------------------------------------------------------------------------
- Function:
- The procedure performs a fast discrete Fourier transform (FFT) of
- a complex sequence, x, of an arbitrary length, n. The output, y,
- is also a complex sequence of length n.
-
- y[k] = sum(x[m]*exp(-i*2*pi*k*m/n), m=0..(n-1)), k=0,...,(n-1)
-
- The largest prime factor of n must be less than or equal to the
- constant maxPrimeFactor defined below.
- ------------------------------------------------------------------------
- Author:
- Jens Joergen Nielsen For non-commercial use only.
- Bakkehusene 54 A $100 fee must be paid if used
- DK-2970 Hoersholm commercially. Please contact.
- DENMARK
-
- E-mail : jjn@get2net.dk All rights reserved. October 2000.
- Homepage : http://home.get2net.dk/jjn
- ------------------------------------------------------------------------
- Implementation notes:
- The general idea is to factor the length of the DFT, n, into
- factors that are efficiently handled by the routines.
-
- A number of short DFT's are implemented with a minimum of
- arithmetical operations and using (almost) straight line code
- resulting in very fast execution when the factors of n belong
- to this set. Especially radix-10 is optimized.
-
- Prime factors, that are not in the set of short DFT's are handled
- with direct evaluation of the DFP expression.
-
- Please report any problems to the author.
- Suggestions and improvements are welcomed.
- ------------------------------------------------------------------------
- Benchmarks:
- The Microsoft Visual C++ compiler was used with the following
- compile options:
- /nologo /Gs /G2 /W4 /AH /Ox /D "NDEBUG" /D "_DOS" /FR
- and the FFTBENCH test executed on a 50MHz 486DX :
-
- Length Time [s] Accuracy [dB]
-
- 128 0.0054 -314.8
- 256 0.0116 -309.8
- 512 0.0251 -290.8
- 1024 0.0567 -313.6
- 2048 0.1203 -306.4
- 4096 0.2600 -291.8
- 8192 0.5800 -305.1
- 100 0.0040 -278.5
- 200 0.0099 -280.3
- 500 0.0256 -278.5
- 1000 0.0540 -278.5
- 2000 0.1294 -280.6
- 5000 0.3300 -278.4
- 10000 0.7133 -278.5
- ------------------------------------------------------------------------
- The following procedures are used :
- factorize : factor the transformation length.
- transTableSetup : setup table with sofar-, actual-, and remainRadix.
- permute : permutation allows in-place calculations.
- twiddleTransf : twiddle multiplications and DFT's for one stage.
- initTrig : initialise sine/cosine table.
- fft_4 : length 4 DFT, a la Nussbaumer.
- fft_5 : length 5 DFT, a la Nussbaumer.
- fft_10 : length 10 DFT using prime factor FFT.
- fft_odd : length n DFT, n odd.
-*************************************************************************/
-
-/************************************************************************
-
- changes by Thomas Grill:
-
- - introduced REAL type for numbers
- - made functions static
- - threw fft_n functions out of twiddleTransf
- if feasible, these will be inlined by the compiler
- - changed log prints (to post)
-
-************************************************************************/
-
-#define REAL float
-extern "C" void post(const char *c,...);
-
-/************************************************************************/
-
-
-#define maxPrimeFactor 8000 // all static data should fit into 256kB of cache
-#define maxPrimeFactorDiv2 (maxPrimeFactor+1)/2
-#define maxFactorCount 100
-
-static double c3_1 = -1.5000000000000E+00; /* c3_1 = cos(2*pi/3)-1; */
-static double c3_2 = 8.6602540378444E-01; /* c3_2 = sin(2*pi/3); */
-
-static double u5 = 1.2566370614359E+00; /* u5 = 2*pi/5; */
-static double c5_1 = -1.2500000000000E+00; /* c5_1 = (cos(u5)+cos(2*u5))/2-1;*/
-static double c5_2 = 5.5901699437495E-01; /* c5_2 = (cos(u5)-cos(2*u5))/2; */
-static double c5_3 = -9.5105651629515E-01; /* c5_3 = -sin(u5); */
-static double c5_4 = -1.5388417685876E+00; /* c5_4 = -(sin(u5)+sin(2*u5)); */
-static double c5_5 = 3.6327126400268E-01; /* c5_5 = (sin(u5)-sin(2*u5)); */
-static double c8 = 7.0710678118655E-01; /* c8 = 1/sqrt(2); */
-
-static double pi;
-static int groupOffset,dataOffset,blockOffset,adr;
-static int groupNo,dataNo,blockNo,twNo;
-static double omega;
-static REAL tw_re,tw_im;
-static REAL twiddleRe[maxPrimeFactor], twiddleIm[maxPrimeFactor];
-static REAL trigRe[maxPrimeFactor], trigIm[maxPrimeFactor];
-static REAL zRe[maxPrimeFactor], zIm[maxPrimeFactor];
-static REAL vRe[maxPrimeFactorDiv2], vIm[maxPrimeFactorDiv2];
-static REAL wRe[maxPrimeFactorDiv2], wIm[maxPrimeFactorDiv2];
-
-
-static void factorize(int n, int *nFact, int fact[])
-{
- int i,j,k;
- int nRadix;
- int radices[7];
- int factors[maxFactorCount];
-
- nRadix = 6;
- radices[1]= 2;
- radices[2]= 3;
- radices[3]= 4;
- radices[4]= 5;
- radices[5]= 8;
- radices[6]= 10;
-
- if (n==1)
- {
- j=1;
- factors[1]=1;
- }
- else j=0;
- i=nRadix;
- while ((n>1) && (i>0))
- {
- if ((n % radices[i]) == 0)
- {
- n=n / radices[i];
- j=j+1;
- factors[j]=radices[i];
- }
- else i=i-1;
- }
- if (factors[j] == 2) /*substitute factors 2*8 with 4*4 */
- {
- i = j-1;
- while ((i>0) && (factors[i] != 8)) i--;
- if (i>0)
- {
- factors[j] = 4;
- factors[i] = 4;
- }
- }
- if (n>1)
- {
- for (k=2; k<sqrt((double)n)+1; k++)
- while ((n % k) == 0)
- {
- n=n / k;
- j=j+1;
- factors[j]=k;
- }
- if (n>1)
- {
- j=j+1;
- factors[j]=n;
- }
- }
- for (i=1; i<=j; i++)
- {
- fact[i] = factors[j-i+1];
- }
- *nFact=j;
-} /* factorize */
-
-/****************************************************************************
- After N is factored the parameters that control the stages are generated.
- For each stage we have:
- sofar : the product of the radices so far.
- actual : the radix handled in this stage.
- remain : the product of the remaining radices.
- ****************************************************************************/
-
-static bool transTableSetup(int sofar[], int actual[], int remain[],
- int *nFact,
- int *nPoints)
-{
- int i;
-
- factorize(*nPoints, nFact, actual);
- if (actual[1] > maxPrimeFactor)
- {
- // T.Grill - replaced the printfs by a post
- post("FFT: Prime factor of FFT length is too large (%d) - aborted",actual[1]);
- return false;
- }
-
- remain[0]=*nPoints;
- sofar[1]=1;
- remain[1]=*nPoints / actual[1];
- for (i=2; i<=*nFact; i++)
- {
- sofar[i]=sofar[i-1]*actual[i-1];
- remain[i]=remain[i-1] / actual[i];
- }
- return true;
-} /* transTableSetup */
-
-/****************************************************************************
- The sequence y is the permuted input sequence x so that the following
- transformations can be performed in-place, and the final result is the
- normal order.
- ****************************************************************************/
-
-static void permute(int nPoint, int nFact,
- int fact[], int remain[],
- REAL xRe[], REAL xIm[],
- REAL yRe[], REAL yIm[])
-
-{
- int i,j,k;
- int count[maxFactorCount];
-
- for (i=1; i<=nFact; i++) count[i]=0;
- k=0;
- for (i=0; i<=nPoint-2; i++)
- {
- yRe[i] = xRe[k];
- yIm[i] = xIm[k];
- j=1;
- k=k+remain[j];
- count[1] = count[1]+1;
- while (count[j] >= fact[j])
- {
- count[j]=0;
- k=k-remain[j-1]+remain[j+1];
- j=j+1;
- count[j]=count[j]+1;
- }
- }
- yRe[nPoint-1]=xRe[nPoint-1];
- yIm[nPoint-1]=xIm[nPoint-1];
-} /* permute */
-
-
-/****************************************************************************
- Twiddle factor multiplications and transformations are performed on a
- group of data. The number of multiplications with 1 are reduced by skipping
- the twiddle multiplication of the first stage and of the first group of the
- following stages.
- ***************************************************************************/
-
-static void initTrig(int radix)
-{
- int i;
- double w,xre,xim,xre1,xim1;
-
- w=2*pi/radix;
- trigRe[0]=1; trigIm[0]=0;
- xre1=xre=cos(w);
- xim1=xim=-sin(w);
- trigRe[1]=xre; trigIm[1]=xim;
- for (i=2; i<radix; i++)
- {
- trigRe[i] = xre1 = xre*trigRe[i-1] - xim*trigIm[i-1];
- trigIm[i] = xim1 = xim*trigRe[i-1] + xre*trigIm[i-1];
-// trigRe[i] = xre1 = xre*xre1 - xim*xim1;
-// trigIm[i] = xim1 = xim*xre1 + xre*xim1;
- }
-} /* initTrig */
-
-static void fft_2(REAL aRe[], REAL aIm[])
-{
- double gem;
- gem=zRe[0] + zRe[1];
- zRe[1]=zRe[0] - zRe[1]; zRe[0]=gem;
- gem=zIm[0] + zIm[1];
- zIm[1]=zIm[0] - zIm[1]; zIm[0]=gem;
-}
-
-static void fft_3(REAL aRe[], REAL aIm[])
-{
- REAL t1_re,t1_im;
- REAL m2_re,m2_im;
- REAL m1_re,m1_im;
- REAL s1_re,s1_im;
- t1_re=zRe[1] + zRe[2]; t1_im=zIm[1] + zIm[2];
- zRe[0]=zRe[0] + t1_re; zIm[0]=zIm[0] + t1_im;
- m1_re=c3_1*t1_re; m1_im=c3_1*t1_im;
- m2_re=c3_2*(zIm[1] - zIm[2]);
- m2_im=c3_2*(zRe[2] - zRe[1]);
- s1_re=zRe[0] + m1_re; s1_im=zIm[0] + m1_im;
- zRe[1]=s1_re + m2_re; zIm[1]=s1_im + m2_im;
- zRe[2]=s1_re - m2_re; zIm[2]=s1_im - m2_im;
-}
-
-static void fft_4(REAL aRe[], REAL aIm[])
-{
- REAL t1_re,t1_im, t2_re,t2_im;
- REAL m2_re,m2_im, m3_re,m3_im;
-
- t1_re=aRe[0] + aRe[2]; t1_im=aIm[0] + aIm[2];
- t2_re=aRe[1] + aRe[3]; t2_im=aIm[1] + aIm[3];
-
- m2_re=aRe[0] - aRe[2]; m2_im=aIm[0] - aIm[2];
- m3_re=aIm[1] - aIm[3]; m3_im=aRe[3] - aRe[1];
-
- aRe[0]=t1_re + t2_re; aIm[0]=t1_im + t2_im;
- aRe[2]=t1_re - t2_re; aIm[2]=t1_im - t2_im;
- aRe[1]=m2_re + m3_re; aIm[1]=m2_im + m3_im;
- aRe[3]=m2_re - m3_re; aIm[3]=m2_im - m3_im;
-} /* fft_4 */
-
-
-static void fft_5(REAL aRe[], REAL aIm[])
-{
- REAL t1_re,t1_im, t2_re,t2_im, t3_re,t3_im;
- REAL t4_re,t4_im, t5_re,t5_im;
- REAL m2_re,m2_im, m3_re,m3_im, m4_re,m4_im;
- REAL m1_re,m1_im, m5_re,m5_im;
- REAL s1_re,s1_im, s2_re,s2_im, s3_re,s3_im;
- REAL s4_re,s4_im, s5_re,s5_im;
-
- t1_re=aRe[1] + aRe[4]; t1_im=aIm[1] + aIm[4];
- t2_re=aRe[2] + aRe[3]; t2_im=aIm[2] + aIm[3];
- t3_re=aRe[1] - aRe[4]; t3_im=aIm[1] - aIm[4];
- t4_re=aRe[3] - aRe[2]; t4_im=aIm[3] - aIm[2];
- t5_re=t1_re + t2_re; t5_im=t1_im + t2_im;
- aRe[0]=aRe[0] + t5_re; aIm[0]=aIm[0] + t5_im;
- m1_re=c5_1*t5_re; m1_im=c5_1*t5_im;
- m2_re=c5_2*(t1_re - t2_re); m2_im=c5_2*(t1_im - t2_im);
-
- m3_re=-c5_3*(t3_im + t4_im); m3_im=c5_3*(t3_re + t4_re);
- m4_re=-c5_4*t4_im; m4_im=c5_4*t4_re;
- m5_re=-c5_5*t3_im; m5_im=c5_5*t3_re;
-
- s3_re=m3_re - m4_re; s3_im=m3_im - m4_im;
- s5_re=m3_re + m5_re; s5_im=m3_im + m5_im;
- s1_re=aRe[0] + m1_re; s1_im=aIm[0] + m1_im;
- s2_re=s1_re + m2_re; s2_im=s1_im + m2_im;
- s4_re=s1_re - m2_re; s4_im=s1_im - m2_im;
-
- aRe[1]=s2_re + s3_re; aIm[1]=s2_im + s3_im;
- aRe[2]=s4_re + s5_re; aIm[2]=s4_im + s5_im;
- aRe[3]=s4_re - s5_re; aIm[3]=s4_im - s5_im;
- aRe[4]=s2_re - s3_re; aIm[4]=s2_im - s3_im;
-} /* fft_5 */
-
-static void fft_8()
-{
- REAL aRe[4], aIm[4], bRe[4], bIm[4], gem;
-
- aRe[0] = zRe[0]; bRe[0] = zRe[1];
- aRe[1] = zRe[2]; bRe[1] = zRe[3];
- aRe[2] = zRe[4]; bRe[2] = zRe[5];
- aRe[3] = zRe[6]; bRe[3] = zRe[7];
-
- aIm[0] = zIm[0]; bIm[0] = zIm[1];
- aIm[1] = zIm[2]; bIm[1] = zIm[3];
- aIm[2] = zIm[4]; bIm[2] = zIm[5];
- aIm[3] = zIm[6]; bIm[3] = zIm[7];
-
- fft_4(aRe, aIm); fft_4(bRe, bIm);
-
- gem = c8*(bRe[1] + bIm[1]);
- bIm[1] = c8*(bIm[1] - bRe[1]);
- bRe[1] = gem;
- gem = bIm[2];
- bIm[2] =-bRe[2];
- bRe[2] = gem;
- gem = c8*(bIm[3] - bRe[3]);
- bIm[3] =-c8*(bRe[3] + bIm[3]);
- bRe[3] = gem;
-
- zRe[0] = aRe[0] + bRe[0]; zRe[4] = aRe[0] - bRe[0];
- zRe[1] = aRe[1] + bRe[1]; zRe[5] = aRe[1] - bRe[1];
- zRe[2] = aRe[2] + bRe[2]; zRe[6] = aRe[2] - bRe[2];
- zRe[3] = aRe[3] + bRe[3]; zRe[7] = aRe[3] - bRe[3];
-
- zIm[0] = aIm[0] + bIm[0]; zIm[4] = aIm[0] - bIm[0];
- zIm[1] = aIm[1] + bIm[1]; zIm[5] = aIm[1] - bIm[1];
- zIm[2] = aIm[2] + bIm[2]; zIm[6] = aIm[2] - bIm[2];
- zIm[3] = aIm[3] + bIm[3]; zIm[7] = aIm[3] - bIm[3];
-} /* fft_8 */
-
-static void fft_10()
-{
- REAL aRe[5], aIm[5], bRe[5], bIm[5];
-
- aRe[0] = zRe[0]; bRe[0] = zRe[5];
- aRe[1] = zRe[2]; bRe[1] = zRe[7];
- aRe[2] = zRe[4]; bRe[2] = zRe[9];
- aRe[3] = zRe[6]; bRe[3] = zRe[1];
- aRe[4] = zRe[8]; bRe[4] = zRe[3];
-
- aIm[0] = zIm[0]; bIm[0] = zIm[5];
- aIm[1] = zIm[2]; bIm[1] = zIm[7];
- aIm[2] = zIm[4]; bIm[2] = zIm[9];
- aIm[3] = zIm[6]; bIm[3] = zIm[1];
- aIm[4] = zIm[8]; bIm[4] = zIm[3];
-
- fft_5(aRe, aIm); fft_5(bRe, bIm);
-
- zRe[0] = aRe[0] + bRe[0]; zRe[5] = aRe[0] - bRe[0];
- zRe[6] = aRe[1] + bRe[1]; zRe[1] = aRe[1] - bRe[1];
- zRe[2] = aRe[2] + bRe[2]; zRe[7] = aRe[2] - bRe[2];
- zRe[8] = aRe[3] + bRe[3]; zRe[3] = aRe[3] - bRe[3];
- zRe[4] = aRe[4] + bRe[4]; zRe[9] = aRe[4] - bRe[4];
-
- zIm[0] = aIm[0] + bIm[0]; zIm[5] = aIm[0] - bIm[0];
- zIm[6] = aIm[1] + bIm[1]; zIm[1] = aIm[1] - bIm[1];
- zIm[2] = aIm[2] + bIm[2]; zIm[7] = aIm[2] - bIm[2];
- zIm[8] = aIm[3] + bIm[3]; zIm[3] = aIm[3] - bIm[3];
- zIm[4] = aIm[4] + bIm[4]; zIm[9] = aIm[4] - bIm[4];
-} /* fft_10 */
-
-static void fft_odd(int radix)
-{
- REAL rere, reim, imre, imim;
- int i,j,k,n,max;
-
- n = radix;
- max = (n + 1)/2;
- for (j=1; j < max; j++)
- {
- vRe[j] = zRe[j] + zRe[n-j];
- vIm[j] = zIm[j] - zIm[n-j];
- wRe[j] = zRe[j] - zRe[n-j];
- wIm[j] = zIm[j] + zIm[n-j];
- }
-
- for (j=1; j < max; j++)
- {
- zRe[j]=zRe[0];
- zIm[j]=zIm[0];
- zRe[n-j]=zRe[0];
- zIm[n-j]=zIm[0];
- k=j;
- for (i=1; i < max; i++)
- {
- rere = trigRe[k] * vRe[i];
- imim = trigIm[k] * vIm[i];
- reim = trigRe[k] * wIm[i];
- imre = trigIm[k] * wRe[i];
-
- zRe[n-j] += rere + imim;
- zIm[n-j] += reim - imre;
- zRe[j] += rere - imim;
- zIm[j] += reim + imre;
-
- k = k + j;
- if (k >= n) k = k - n;
- }
- }
- for (j=1; j < max; j++)
- {
- zRe[0]=zRe[0] + vRe[j];
- zIm[0]=zIm[0] + wIm[j];
- }
-} /* fft_odd */
-
-
-static void twiddleTransf(int sofarRadix, int radix, int remainRadix,
- REAL yRe[], REAL yIm[])
-
-{ /* twiddleTransf */
- double cosw, sinw, gem;
-
- initTrig(radix);
- omega = 2*pi/(double)(sofarRadix*radix);
- cosw = cos(omega);
- sinw = -sin(omega);
- tw_re = 1.0;
- tw_im = 0;
- dataOffset=0;
- groupOffset=dataOffset;
- adr=groupOffset;
- for (dataNo=0; dataNo<sofarRadix; dataNo++)
- {
- if (sofarRadix>1)
- {
- twiddleRe[0] = 1.0;
- twiddleIm[0] = 0.0;
- twiddleRe[1] = tw_re;
- twiddleIm[1] = tw_im;
- for (twNo=2; twNo<radix; twNo++)
- {
- twiddleRe[twNo]=tw_re*twiddleRe[twNo-1]
- - tw_im*twiddleIm[twNo-1];
- twiddleIm[twNo]=tw_im*twiddleRe[twNo-1]
- + tw_re*twiddleIm[twNo-1];
- }
- gem = cosw*tw_re - sinw*tw_im;
- tw_im = sinw*tw_re + cosw*tw_im;
- tw_re = gem;
- }
- for (groupNo=0; groupNo<remainRadix; groupNo++)
- {
- if ((sofarRadix>1) && (dataNo > 0))
- {
- zRe[0]=yRe[adr];
- zIm[0]=yIm[adr];
- blockNo=1;
- do {
- adr = adr + sofarRadix;
- zRe[blockNo]= twiddleRe[blockNo] * yRe[adr]
- - twiddleIm[blockNo] * yIm[adr];
- zIm[blockNo]= twiddleRe[blockNo] * yIm[adr]
- + twiddleIm[blockNo] * yRe[adr];
-
- blockNo++;
- } while (blockNo < radix);
- }
- else
- for (blockNo=0; blockNo<radix; blockNo++)
- {
- zRe[blockNo]=yRe[adr];
- zIm[blockNo]=yIm[adr];
- adr=adr+sofarRadix;
- }
- switch(radix) {
- // T.Grill - replaced the inlined code by their function counterparts
- case 2 : fft_2(zRe,zIm); break;
- case 3 : fft_3(zRe,zIm); break;
- case 4 : fft_4(zRe,zIm); break;
- case 5 : fft_5(zRe,zIm); break;
- case 8 : fft_8(); break;
- case 10 : fft_10(); break;
- default : fft_odd(radix); break;
- }
- adr=groupOffset;
- for (blockNo=0; blockNo<radix; blockNo++)
- {
- yRe[adr]=zRe[blockNo]; yIm[adr]=zIm[blockNo];
- adr=adr+sofarRadix;
- }
- groupOffset=groupOffset+sofarRadix*radix;
- adr=groupOffset;
- }
- dataOffset=dataOffset+1;
- groupOffset=dataOffset;
- adr=groupOffset;
- }
-} /* twiddleTransf */
-
-bool mixfft(int n, REAL *xRe, REAL *xIm,REAL *yRe, REAL *yIm)
-{
- int sofarRadix[maxFactorCount],
- actualRadix[maxFactorCount],
- remainRadix[maxFactorCount];
- int nFactor;
- int count;
-
- pi = 4*atan(1.);
-
- if(!transTableSetup(sofarRadix, actualRadix, remainRadix, &nFactor, &n)) return false;
- permute(n, nFactor, actualRadix, remainRadix, xRe, xIm, yRe, yIm);
-
- for (count=1; count<=nFactor; count++)
- twiddleTransf(sofarRadix[count], actualRadix[count], remainRadix[count],
- yRe, yIm);
- return true;
-} /* fft */
-
diff --git a/externals/grill/vasp/source/obj_chns.cpp b/externals/grill/vasp/source/obj_chns.cpp
deleted file mode 100644
index 1e7dfb67..00000000
--- a/externals/grill/vasp/source/obj_chns.cpp
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
-
-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.
-
-*/
-
-#include "main.h"
-#include "classes.h"
-#include "util.h"
-#include "buflib.h"
-
-
-/*! \class vasp_channel
- \remark \b vasp.channel
- \brief Sets channel index of vasp.
- \since 0.0.8
- \param cmdln.1 int - index of vasp vector
- \param inlet vasp - is stored and indexed vasp vector output
- \param inlet bang - triggers indexed vasp vector output
- \param inlet set - vasp to be stored (and not immediately output)
- \retval outlet modified vasp
-*/
-class vasp_channel:
- public vasp_tx
-{
- FLEXT_HEADER_S(vasp_channel,vasp_tx,Setup)
-
-public:
- vasp_channel(I argc,const t_atom *argv):
- ix(0)
- {
- if(argc >= 1 && CanbeInt(argv[0]))
- ix = GetAInt(argv[0]);
- else if(argc)
- post("%s - Index argument invalid -> set to 0",thisName());
-
- AddInAnything(2);
- AddOutAnything();
- }
-
- static V Setup(t_classid c)
- {
- FLEXT_CADDMETHOD(c,1,m_ix);
- FLEXT_CADDATTR_VAR(c,"index",ix,m_ix);
- }
-
- V m_ix(I i) { ix = i; }
-
- virtual Vasp *x_work()
- {
- Vasp *ret = new Vasp(ref);
- ret->Channel(ix);
- return ret;
- }
-
- virtual V m_help() { post("%s - Set channel index of vectors in vasp",thisName()); }
-
-protected:
- I ix;
-
-private:
- FLEXT_CALLBACK_I(m_ix);
- FLEXT_CALLSET_I(m_ix);
- FLEXT_ATTRGET_I(ix);
-};
-
-VASP_LIB_V("vasp.channel vasp.c",vasp_channel)
-
-
-
-/*! \class vasp_qc
- \remark \b vasp.c?
- \brief Gets channel index of a vasp.
- \since 0.0.8
- \param inlet vasp - is stored and output triggered
- \param inlet bang - triggers output
- \param inlet set - vasp to be stored
- \retval outlet int - channel index of stored vasp
-
- \note Always returns index of 0th vasp
- \note No output for invalid vasp?
-*/
-class vasp_qchannel:
- public vasp_op
-{
- FLEXT_HEADER(vasp_qchannel,vasp_op)
-
-public:
- vasp_qchannel()
- {
- AddInAnything();
- AddOutInt();
- }
-
- virtual V m_bang()
- {
- if(ref.Ok()) {
- if(ref.Vectors() > 1)
- post("%s - more vectors in vasp, only considering first",thisName());
-
- ToOutInt(0,ref.Vector(0).Channel());
- }
- else
- post("%s - Invalid vasp, no output",thisName());
- }
-
- virtual V m_help() { post("%s - Get channel index of 0th vector in vasp",thisName()); }
-};
-
-VASP_LIB("vasp.channel? vasp.c?",vasp_qchannel)
-
-
-/*! \class vasp_qchannels
- \remark \b vasp.channels?
- \brief Gets number of channels of a vasp.
- \since 0.1.3
- \param inlet vasp - is stored and output triggered
- \param inlet bang - triggers output
- \param inlet set - vasp to be stored
- \retval outlet int - channels of stored vasp
-
- \note No output for invalid vasp?
-*/
-class vasp_qchannels:
- public vasp_op
-{
- FLEXT_HEADER(vasp_qchannels,vasp_op)
-
-public:
- vasp_qchannels()
- {
- AddInAnything();
- AddOutInt();
- }
-
- virtual V m_bang()
- {
- if(ref.Ok()) {
- if(ref.Vectors() > 1)
- post("%s - more vectors in vasp, only considering first",thisName());
-
- VBuffer *buf = BufLib::Get(ref.Vector(0).Symbol());
- ToOutInt(0,buf->Channels());
- delete buf;
- }
- else
- post("%s - Invalid vasp, no output",thisName());
- }
-
- virtual V m_help() { post("%s - Get channel index of 0th vector in vasp",thisName()); }
-};
-
-VASP_LIB("vasp.channels?",vasp_qchannels)
-
-
-
diff --git a/externals/grill/vasp/source/obj_frames.cpp b/externals/grill/vasp/source/obj_frames.cpp
deleted file mode 100644
index 875bcdc6..00000000
--- a/externals/grill/vasp/source/obj_frames.cpp
+++ /dev/null
@@ -1,241 +0,0 @@
-/*
-
-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.
-
-*/
-
-#include "main.h"
-#include "classes.h"
-#include "util.h"
-
-
-/*! \class vasp_frames
- \remark \b vasp.frames
- \brief Sets frame count of vasp.
- \since 0.0.1
- \param cmdln.1 [_time=0] - frame count in time units
- \param inlet.1 vasp - is stored and output triggered
- \param inlet.1 bang - triggers output
- \param inlet.1 set - vasp to be stored
- \param inlet.2 _time - frame count in time units
- \retval outlet vasp - modified vasp
-
- \todo Implement unit processing.
-*/
-class vasp_frames:
- public vasp_tx
-{
- FLEXT_HEADER_S(vasp_frames,vasp_tx,Setup)
-
-public:
- vasp_frames(I argc,const t_atom *argv,BL abs = true):
- frms(0),setf(false)
- {
- if(argc && CanbeFloat(argv[0]))
- m_arg(GetAFloat(argv[0]));
- else if(argc) {
- post("%s - argument invalid -> ignored",thisName());
- }
-
- AddInAnything();
- AddInFloat();
- AddOutAnything();
-
- if(abs) FLEXT_ADDATTR_VAR("frames",frms,m_arg);
- }
-
- static V Setup(t_classid c)
- {
- FLEXT_CADDMETHOD(c,1,m_arg);
- }
-
- virtual V m_arg(F f)
- {
- frms = (I)f; //! \todo unit processing
- setf = true;
- }
-
- virtual Vasp *x_work()
- {
- Vasp *ret = new Vasp(ref);
- if(setf) ret->Frames(frms);
- return ret;
- }
-
- virtual V m_help() { post("%s - Set a vasp's frame count",thisName()); }
-protected:
- I frms;
- BL setf;
-
-private:
- FLEXT_CALLBACK_F(m_arg);
- FLEXT_CALLSET_I(m_arg);
- FLEXT_ATTRGET_I(frms);
-};
-
-VASP_LIB_V("vasp.frames vasp.f",vasp_frames)
-
-
-
-
-/*! \class vasp_dframes
- \remark \b vasp.frames+
- \brief Sets frame count of vasp differentially.
- \since 0.0.1
- \param cmdln.1 [_time=0] - increase of frame count in time units
- \param inlet.1 vasp - is stored and output triggered
- \param inlet.1 bang - triggers output
- \param inlet.1 set - vasp to be stored
- \param inlet.2 _time - increase of frame count in time units
- \retval outlet vasp - modified vasp
-
- \todo Implement unit processing.
-*/
-class vasp_dframes:
- public vasp_frames
-{
- FLEXT_HEADER(vasp_dframes,vasp_frames)
-
-public:
- vasp_dframes(I argc,const t_atom *argv): vasp_frames(argc,argv) {}
-
- virtual Vasp *x_work()
- {
- Vasp *ret = new Vasp(ref);
- if(setf) ret->FramesD(frms);
- return ret;
- }
-
- virtual V m_help() { post("%s - Raise/lower a vasp's frame count",thisName()); }
-};
-
-VASP_LIB_V("vasp.frames+ vasp.f+",vasp_dframes)
-
-
-
-/*! \class vasp_mframes
- \remark \b vasp.frames*
- \brief Sets frame count of vasp by a factor
- \since 0.0.6
- \param cmdln.1 [_number=1] - multiply of frame count
- \param inlet.1 vasp - is stored and output triggered
- \param inlet.1 bang - triggers output
- \param inlet.1 set - vasp to be stored
- \param inlet.2 _number - multiply of frame count
- \retval outlet vasp - modified vasp
-*/
-class vasp_mframes:
- public vasp_frames
-{
- FLEXT_HEADER_S(vasp_mframes,vasp_frames,Setup)
-
-public:
- vasp_mframes(I argc,const t_atom *argv):
- vasp_frames(argc,argv,false)
- {
- if(argc && CanbeFloat(argv[0])) m_arg(GetAFloat(argv[0]));
- }
-
- static V Setup(t_classid c)
- {
- FLEXT_CADDATTR_VAR(c,"factor",factor,m_arg);
- }
-
- virtual Vasp *x_work()
- {
- Vasp *ret = new Vasp(ref);
- if(setf) ret->FramesM(factor);
- return ret;
- }
-
- virtual V m_help() { post("%s - Multiply a vasp's frame count",thisName()); }
-
- virtual V m_arg(F f)
- {
- factor = f;
- setf = true;
- }
-
-protected:
- F factor;
- FLEXT_CALLSET_F(m_arg);
- FLEXT_ATTRGET_F(factor);
-};
-
-VASP_LIB_V("vasp.frames* vasp.f*",vasp_mframes)
-
-
-
-/*! \class vasp_rframes
- \remark \b vasp.frames/
- \brief Sets frame count of vasp by a divisor
- \since 0.0.6
- \param cmdln.1 [_number=1] - multiply of frame count
- \param inlet.1 vasp - is stored and output triggered
- \param inlet.1 bang - triggers output
- \param inlet.1 set - vasp to be stored
- \param inlet.2 _number - divisor of frame count
- \retval outlet vasp - modified vasp
-*/
-class vasp_rframes:
- public vasp_mframes
-{
- FLEXT_HEADER(vasp_rframes,vasp_mframes)
-
-public:
- vasp_rframes(I argc,const t_atom *argv): vasp_mframes(argc,argv) {}
-
- virtual Vasp *x_work()
- {
- Vasp *ret = new Vasp(ref);
- if(setf) ret->FramesR(factor);
- return ret;
- }
-
- virtual V m_help() { post("%s - Divide a vasp's frame count",thisName()); }
-};
-
-VASP_LIB_V("vasp.frames/ vasp.f/",vasp_rframes)
-
-
-
-/*! \class vasp_qframes
- \remark \b vasp.frames?
- \brief Get frame count in time units
- \since 0.0.1
- \param inlet vasp - is stored and output triggered
- \param inlet bang - triggers output
- \param inlet set - vasp to be stored
- \retval outlet _time - frame count of vasp in time units
-
- \note Outputs 0 if vasp is undefined or invalid
-
- \todo Implement unit processing
- \todo Should we provide a cmdln default vasp?
- \todo Should we inhibit output for invalid vasps?
-*/
-class vasp_qframes:
- public vasp_op
-{
- FLEXT_HEADER(vasp_qframes,vasp_op)
-
-public:
-
- vasp_qframes()
- {
- AddInAnything();
- AddOutInt();
- }
-
- virtual V m_bang() { ToOutInt(0,ref.ChkFrames()); } //! \todo unit processing
-
- virtual V m_help() { post("%s - Get a vasp's frame count",thisName()); }
-};
-
-VASP_LIB("vasp.frames? vasp.f?",vasp_qframes)
-
-
diff --git a/externals/grill/vasp/source/obj_imm.cpp b/externals/grill/vasp/source/obj_imm.cpp
deleted file mode 100644
index 258d5049..00000000
--- a/externals/grill/vasp/source/obj_imm.cpp
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
-
-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.
-
-*/
-
-/*! \file vasp_imm.cpp
- \brief Definitions for immediate vasps
-*/
-
-#include "main.h"
-#include "classes.h"
-#include "util.h"
-#include "buflib.h"
-#include "oploop.h"
-
-
-/*! \class vasp_imm
- \remark \b vasp.imm
- \brief Get vasp immediate.
- \since 0.0.6
- \param inlet.1 vasp - is stored and output triggered
- \param inlet.1 bang - triggers output
- \param inlet.1 set - vasp to be stored
- \param inlet.1 frames - minimum frame length
- \param inlet.2 int - minimum frame length
- \retval outlet vasp! - vasp immediate
-
-*/
-class vasp_imm:
- public vasp_op
-{
- FLEXT_HEADER_S(vasp_imm,vasp_op,Setup)
-
-public:
- vasp_imm(I argc,const t_atom *argv):
- frms(0),zero(true)
- {
- if(argc >= 1 && CanbeInt(argv[0]))
- m_frames(GetAInt(argv[0]));
- else if(argc)
- post("%s - Frame count argument invalid -> ignored",thisName());
-
- AddInAnything();
- AddInInt();
- AddOutAnything();
- }
-
- static V Setup(t_classid c)
- {
- FLEXT_CADDMETHOD(c,1,m_frames);
- FLEXT_CADDATTR_VAR(c,"frames",frms,m_frames);
- FLEXT_CADDATTR_VAR1(c,"zero",zero);
- }
-
- V m_frames(I n) { frms = n; }
-
- virtual V m_bang()
- {
- if(!ref.Ok() || !ref.Check()) {
-/*
- if(!frms)
- post("%s - No length defined!",thisName());
- else
-*/
- {
- ImmBuf ibuf(frms,zero);
- Vasp ret(frms,Vasp::Ref(ibuf));
- ToOutVasp(0,ret);
- }
- }
- else if(ref.Vectors() > 1)
- post("%s - More than one vector in vasp!",thisName());
- else {
- VBuffer *buf = ref.Buffer(0);
- const I len = buf->Length(),chns = buf->Channels();
-
- // size of memory reservation (at least frms samples)
- const I rlen = frms > len?frms:len;
-
- ImmBuf imm(rlen,false);
-
- S *dst = imm.Pointer();
- const S *src = buf->Pointer();
-
-// post("!copy: src: %p,%i,%i -> dst: %p,%i",src,len,chns,dst,rlen);
-
- register int i;
- _DE_LOOP(i,len, ( dst[i] = *src,src += chns ) )
- if(zero && rlen > len) ZeroSamples(dst+len,rlen-len);
-
- Vasp::Ref vr(imm);
-
-// post("!vr: %s,%i",vr.Ok()?vr.Symbol().Name():"***",vr.Offset());
-
- Vasp ret(len,vr);
- ToOutVasp(0,ret);
-
- delete buf;
- }
- }
-
- virtual V m_help() { post("%s - Get immediate vasp vectors",thisName()); }
-
-protected:
-
- I frms;
- BL zero;
-
-private:
- FLEXT_CALLBACK_I(m_frames)
- FLEXT_CALLSET_I(m_frames);
- FLEXT_ATTRGET_I(frms);
- FLEXT_ATTRVAR_B(zero);
-};
-
-VASP_LIB_V("vasp.imm vasp.!",vasp_imm)
-
-
diff --git a/externals/grill/vasp/source/obj_offs.cpp b/externals/grill/vasp/source/obj_offs.cpp
deleted file mode 100644
index 6e1a584e..00000000
--- a/externals/grill/vasp/source/obj_offs.cpp
+++ /dev/null
@@ -1,179 +0,0 @@
-/*
-
-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.
-
-*/
-
-#include "main.h"
-#include "classes.h"
-#include "util.h"
-
-
-/*! \class vasp_offset
- \remark \b vasp.offset
- \brief Sets offset of vasp vectors.
- \since 0.0.1
- \param cmdln.1 [_time=0] - offset into buffer(s)
- \param inlet.1 vasp - is stored and output triggered
- \param inlet.1 bang - triggers output
- \param inlet.1 set - vasp to be stored
- \param inlet.2 _time - offset into buffer(s)
- \retval outlet vasp - modified vasp
-
- \attention Normally vasp vectors have individual offsets - this operations sets all the offsets to equal values.
- \todo Implement unit processing.
-*/
-class vasp_offset:
- public vasp_tx
-{
- FLEXT_HEADER_S(vasp_offset,vasp_tx,Setup)
-
-public:
- vasp_offset(I argc,const t_atom *argv):
- offs(0),seto(false)
- {
- if(argc >= 1 && CanbeFloat(argv[0]))
- m_offs(GetAFloat(argv[0]));
- else if(argc)
- post("%s - Offset argument invalid -> ignored",thisName());
-
- AddInAnything();
- AddInFloat();
- AddOutAnything();
- }
-
- static V Setup(t_classid c)
- {
- FLEXT_CADDMETHOD(c,1,m_offs);
- FLEXT_CADDATTR_VAR(c,"frames",offs,m_offs);
- }
-
- V m_offs(F o)
- {
- offs = (I)o; //! \todo unit processing
- seto = true;
- }
-
- virtual Vasp *x_work()
- {
- Vasp *ret = new Vasp(ref);
- if(seto) ret->Offset(offs);
- return ret;
- }
-
- virtual V m_help() { post("%s - Set a vasp's offset(s) into the vector buffers",thisName()); }
-protected:
- I offs;
- BL seto;
-
-private:
- FLEXT_CALLBACK_F(m_offs);
- FLEXT_CALLSET_I(m_offs);
- FLEXT_ATTRGET_I(offs);
-};
-
-VASP_LIB_V("vasp.offset vasp.o",vasp_offset)
-
-
-
-
-/*! \class vasp_doffset
- \remark \b vasp.offset+
- \brief Sets offset of vasp vectors differentially.
- \since 0.0.1
- \param cmdln.1 [_time=0] - increase offset of into buffer(s)
- \param inlet.1 vasp - is stored and output triggered
- \param inlet.1 bang - triggers output
- \param inlet.1 set - vasp to be stored
- \param inlet.2 _time - increase of offset into buffer(s)
- \retval outlet vasp - modified vasp
-
- \todo Implement unit processing
-*/
-class vasp_doffset:
- public vasp_offset
-{
- FLEXT_HEADER(vasp_doffset,vasp_offset)
-
-public:
- vasp_doffset(I argc,const t_atom *argv): vasp_offset(argc,argv) {}
-
- virtual Vasp *x_work()
- {
- Vasp *ret = new Vasp(ref);
- if(seto) ret->OffsetD(offs);
- return ret;
- }
-
- virtual V m_help() { post("%s - Shift a vasp's offset(s) into the vector buffers",thisName()); }
-};
-
-VASP_LIB_V("vasp.offset+ vasp.o+",vasp_doffset)
-
-
-
-/*! \class vasp_qoffset
- \remark \b vasp.offset?
- \brief Get offset of singled vector vasp.
- \since 0.0.1
- \param inlet vasp - is stored and output triggered
- \param inlet bang - triggers output
- \param inlet set - vasp to be stored
- \retval outlet _time - offset into vector buffer
-
- \note Outputs 0 if vasp is undefined or invalid
- \note Only works for a vasp with one vector. No output otherwise.
-
- \todo Implement unit processing
- \todo Should we provide a cmdln default vasp?
- \todo Should we inhibit output for invalid vasps?
-*/
-class vasp_qoffset:
- public vasp_op
-{
- FLEXT_HEADER(vasp_qoffset,vasp_op)
-
-public:
-
- vasp_qoffset()
- {
- AddInAnything();
-// AddOutAnything();
- AddOutFloat();
- }
-
- virtual V m_bang()
- {
- if(!ref.Ok())
- post("%s - Invalid vasp!",thisName());
- else if(ref.Vectors() > 1)
- post("%s - More than one vector in vasp!",thisName());
- else {
- I o = 0;
- if(ref.Vectors() == 1) {
- o = ref.Vector(0).Offset();
- if(o < 0) o = 0;
- else {
- VBuffer *buf = ref.Buffer(0);
- if(buf) {
- I f = buf->Frames();
- if(o > f) o = f;
- delete buf;
- }
- }
- }
- //! \todo unit processing
-// ToOutVasp(0,ref);
- ToOutFloat(0,o);
- }
- }
-
- virtual V m_help() { post("%s - Get a single vectored vasp's offset into the buffer",thisName()); }
-};
-
-VASP_LIB("vasp.offset? vasp.o?",vasp_qoffset)
-
diff --git a/externals/grill/vasp/source/obj_part.cpp b/externals/grill/vasp/source/obj_part.cpp
deleted file mode 100644
index 59c79db3..00000000
--- a/externals/grill/vasp/source/obj_part.cpp
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
-
-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.
-
-*/
-
-#include "main.h"
-#include "classes.h"
-#include "util.h"
-
-
-/*! \class vasp_part
- \remark \b vasp.part
- \brief Gets parts of vasp vectors.
- \since 0.0.1
- \param cmdln.1 list - list of part lengts
- \param inlet.1 vasp - is stored and output triggered
- \param inlet.1 bang - triggers output
- \param inlet.1 set - vasp to be stored
- \param inlet.2 list - list of part lengts
- \retval outlet.1 vasp - consecutive vasp parts
- \retval outlet.2 vasp - remainder
-
- \todo Implement unit processing.
- \remarks Output zero length vasps?
-*/
-class vasp_part:
- public vasp_op
-{
- FLEXT_HEADER_S(vasp_part,vasp_op,Setup)
-
-public:
- vasp_part(I argc,const t_atom *argv):
- parts(0),part(NULL)
- {
- m_part(argc,argv);
-
- AddInAnything(2);
- AddOutAnything(2);
- }
-
- ~vasp_part() { if(part) delete[] part; }
-
- static V Setup(t_classid c)
- {
- FLEXT_CADDMETHOD_(c,1,"list",m_part);
- FLEXT_CADDATTR_VAR(c,"parts",m_getpart,m_setpart);
- }
-
- V m_part(I argc,const t_atom *argv)
- {
- if(part) delete[] part; parts = 0;
- part = new I[argc];
- for(I i = 0; i < argc; ++i) {
- BL warn = false;
- I p = (I)GetAFloat(argv[i]); // \todo unit processing
- if(p < 0 && !warn) {
- post("%s - invalid part length(s) -> set to 0",thisName());
- p = 0; warn = true;
- }
- part[i] = p; ++parts;
- }
- }
-
- V m_getpart(AtomList &ret)
- {
- ret(parts);
- for(I i = 0; i < parts; ++i) SetInt(ret[i],part[i]);
- }
-
- V m_setpart(const AtomList &ret) { m_part(ret.Count(),ret.Atoms()); }
-
- virtual V m_bang()
- {
- if(!ref.Ok()) {
- post("%s - Invalid vasp!",thisName());
- return;
- }
-
- I fr = ref.ChkFrames(),o = 0,f = 0;
- for(I i = 0; i < parts && (fr < 0 || fr); ++i) {
- I p = part[i];
- if(fr >= 0) { p = min(p,fr); fr -= p; }
-
- Vasp ret(ref);
- ret.Frames(p);
- ret.OffsetD(o);
- ToOutVasp(0,ret);
-
- o += p;
- }
-
- if(fr) {
- Vasp ret(ref);
- ret.Frames(fr);
- ret.OffsetD(o);
- ToOutVasp(1,ret);
- }
- }
-
- virtual V m_help() { post("%s - Return consecutive vasps with lengths given by argument list",thisName()); }
-protected:
- I parts,*part;
-
- FLEXT_CALLBACK_V(m_part)
- FLEXT_CALLVAR_V(m_getpart,m_setpart);
-};
-
-VASP_LIB_V("vasp.part",vasp_part)
-
-
diff --git a/externals/grill/vasp/source/obj_peaks.cpp b/externals/grill/vasp/source/obj_peaks.cpp
deleted file mode 100644
index 2a22979b..00000000
--- a/externals/grill/vasp/source/obj_peaks.cpp
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
-
-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.
-
-*/
-
-#include "main.h"
-#include "classes.h"
-#include "util.h"
-#include <math.h>
-
-
-/*! \class vasp_qpeaks
- \remark \b vasp.peaks?
- \brief Get most pronounced peaks of a single vasp vector.
- \since 0.0.6
- \param inlet vasp - is stored and output triggered
- \param inlet bang - triggers output
- \param inlet set - vasp to be stored
- \retval outlet.0 list - peak positions
- \retval outlet.1 list - peak values
-
- \note Outputs nothing if vasp is undefined or invalid
- \note Only works for a vasp with one vector. No output otherwise.
- \todo Units for peak position list
-*/
-class vasp_qpeaks:
- public vasp_op
-{
- FLEXT_HEADER_S(vasp_qpeaks,vasp_op,Setup)
-
-public:
- vasp_qpeaks(I argc,const t_atom *argv):
- peaks(1)
- {
- if(argc >= 1 && CanbeInt(argv[0]))
- m_peaks(GetAInt(argv[0]));
- else if(argc)
- post("%s - Number argument invalid -> ignored",thisName());
-
- AddInAnything();
- AddInInt();
- AddOutAnything(2);
- }
-
- static V Setup(t_classid c)
- {
- FLEXT_CADDMETHOD(c,1,m_peaks);
- FLEXT_CADDATTR_VAR(c,"peaks",peaks,m_peaks);
- }
-
- V m_peaks(I n) { peaks = n; }
-
- virtual V m_bang()
- {
- if(!ref.Ok())
- post("%s - Invalid vasp!",thisName());
- else if(ref.Vectors() > 1)
- post("%s - More than one vector in vasp!",thisName());
- else {
- VBuffer *buf = ref.Buffer(0);
- I i,cnt = buf->Length(),pkfnd = 0;
- S *p = buf->Pointer();
-
- I mxpk = min(cnt,peaks);
- t_atom *pos = new t_atom[mxpk],*lst = new t_atom[mxpk];
- for(i = 0; i < mxpk; ++i) SetFloat(lst[i],0);
-
- for(i = 0; i < cnt; ++i) {
- const F v = fabs(p[i]);
-
- if(v && v > GetFloat(lst[mxpk-1])) {
- I ix;
-
- for(ix = min(pkfnd-1,mxpk-1); ix >= 0; --ix) {
- if(v > GetFloat(lst[ix])) {
- if(ix < mxpk-1) {
- pos[ix+1] = pos[ix];
- lst[ix+1] = lst[ix];
- }
- }
- else break;
- }
- ++ix;
-
- SetFloat(pos[ix],i);
- SetFloat(lst[ix],v);
-
- if(++pkfnd > mxpk) pkfnd = mxpk;
- }
- }
-
- ToOutAnything(0,sym_list,pkfnd,pos);
- ToOutAnything(1,sym_list,pkfnd,lst);
- delete[] pos;
- delete[] lst;
-
- delete buf;
- }
- }
-
- virtual V m_help() { post("%s - Get list of most pronounced peaks of a vasp vector",thisName()); }
-
-protected:
- I peaks;
-
-private:
- FLEXT_CALLBACK_I(m_peaks);
- FLEXT_CALLSET_I(m_peaks);
- FLEXT_ATTRGET_I(peaks);
-};
-
-VASP_LIB_V("vasp.peaks?",vasp_qpeaks)
-
-
diff --git a/externals/grill/vasp/source/obj_q.cpp b/externals/grill/vasp/source/obj_q.cpp
deleted file mode 100644
index 9756f4a4..00000000
--- a/externals/grill/vasp/source/obj_q.cpp
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
-
-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.
-
-*/
-
-#include "main.h"
-#include "classes.h"
-#include "util.h"
-
-
-/*! \class vasp_list
- \remark \b vasp.list
- \brief Get samples of a single vasp vector.
- \since 0.0.1
- \param inlet vasp - is stored and output triggered
- \param inlet bang - triggers output
- \param inlet set - vasp to be stored
- \retval outlet vector - vasp samples
-
- \note Outputs 0 if vasp is undefined or invalid
- \note Only works for a vasp with one vector. No output otherwise.
-*/
-class vasp_list:
- public vasp_op
-{
- FLEXT_HEADER(vasp_list,vasp_op)
-
-public:
-
- vasp_list()
- {
- AddInAnything();
- AddOutList();
- }
-
- virtual V m_bang()
- {
- if(!ref.Ok())
- post("%s - Invalid vasp!",thisName());
- else if(ref.Vectors() > 1)
- post("%s - More than one vector in vasp!",thisName());
- else {
- VBuffer *buf = ref.Buffer(0);
- I cnt = buf->Length();
- S *p = buf->Pointer();
- AtomList lst(cnt);
- for(I i = 0; i < cnt; ++i,++p) SetFloat(lst[i],*p);
- ToOutList(0,lst);
-
- delete buf;
- }
- }
-
- virtual V m_help() { post("%s - Get list of samples of a vasp vector",thisName()); }
-};
-
-VASP_LIB("vasp.list vasp.?",vasp_list)
-
-
-
-/*! \class vasp_nonzero
- \remark \b vasp.nonzero
- \brief Get samples of a single vasp vector.
- \since 0.0.2
- \param inlet vasp - is stored and output triggered
- \param inlet bang - triggers output
- \param inlet set - vasp to be stored
- \retval outlet.0 list - non-zero samples positions
- \retval outlet.1 list - non-zero sample values
-
- \note Outputs 0 if vasp is undefined or invalid
- \note Only works for a vasp with one vector. No output otherwise.
- \todo units for position list
-*/
-class vasp_nonzero:
- public vasp_op
-{
- FLEXT_HEADER(vasp_nonzero,vasp_op)
-
-public:
-
- vasp_nonzero()
- {
- AddInAnything();
- AddOutList(2);
- }
-
- virtual V m_bang()
- {
- if(!ref.Ok())
- post("%s - Invalid vasp!",thisName());
- else if(ref.Vectors() > 1)
- post("%s - More than one vector in vasp!",thisName());
- else {
- VBuffer *buf = ref.Buffer(0);
- I i,cnt = buf->Length(),cp,ci;
- S *p = buf->Pointer();
- for(cp = i = 0; i < cnt; ++i,++p) if(*p) ++cp;
-
- AtomList pos(cp),lst(cp);
- p = buf->Pointer();
- for(ci = i = 0; ci < cp; ++i,++p)
- if(*p) {
- SetFloat(pos[ci],i);
- SetFloat(lst[ci],*p);
- ++ci;
- }
- ToOutList(0,pos);
- ToOutList(1,lst);
-
- delete buf;
- }
- }
-
- virtual V m_help() { post("%s - Get list of non-zero samples of a vasp vector",thisName()); }
-};
-
-VASP_LIB("vasp.nonzero vasp.??",vasp_nonzero)
-
diff --git a/externals/grill/vasp/source/obj_radio.cpp b/externals/grill/vasp/source/obj_radio.cpp
deleted file mode 100644
index 8932e801..00000000
--- a/externals/grill/vasp/source/obj_radio.cpp
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
-
-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.
-
-*/
-
-/*! \file obj_radio.cpp
- \brief objects for radio messages.
-*/
-
-#include "main.h"
-#include "classes.h"
-
-
-/*! \class vasp_radio
- \remark \b vasp.radio
- \brief Lets only radio messages pass through.
- \since 0.0.6
- \param inlet.1 * - any message
- \retval outlet.1 radio messages
- \retval outlet.2 other messages
-*/
-class vasp_radio:
- public flext_base
-{
- FLEXT_HEADER_S(vasp_radio,flext_base,Setup)
-
-public:
-
- vasp_radio()
- {
- AddInAnything();
- AddOutAnything(2);
- }
-
- static V Setup(t_classid c)
- {
- FLEXT_CADDMETHOD(c,0,m_any);
- }
-
- virtual V m_any(const t_symbol *s,I argc,const t_atom *argv);
-
- virtual V m_help() { post("%s - split into radio and non-radio messages",thisName()); }
-private:
- FLEXT_CALLBACK_A(m_any);
-};
-
-VASP_LIB("vasp.radio",vasp_radio)
-
-
-V vasp_radio::m_any(const t_symbol *s,I argc,const t_atom *argv)
-{
- ToOutAnything(s == vasp_base::sym_radio?0:1,s,argc,argv);
-}
-
diff --git a/externals/grill/vasp/source/obj_size.cpp b/externals/grill/vasp/source/obj_size.cpp
deleted file mode 100644
index af4ba62e..00000000
--- a/externals/grill/vasp/source/obj_size.cpp
+++ /dev/null
@@ -1,265 +0,0 @@
-/*
-
-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.
-
-*/
-
-#include "main.h"
-#include "classes.h"
-#include "util.h"
-
-
-/*! \class vasp_size
- \remark \b vasp.size
- \brief Resize buffer.
- \since 0.0.6
- \param cmdln.1 [_time=0] - size of buffer
- \param inlet.1 vasp - is stored and output triggered
- \param inlet.1 bang - triggers output
- \param inlet.1 set - vasp to be stored
- \param inlet.2 _time - offset into buffer(s)
- \retval outlet vasp - modified vasp
-
- \attention Normally vasp vectors have individual offsets - this operations sets all the buffer sizes to equal values.
- \todo Implement unit processing.
-*/
-class vasp_size:
- public vasp_tx
-{
- FLEXT_HEADER_S(vasp_size,vasp_tx,Setup)
-
-public:
- vasp_size(I argc,const t_atom *argv,BL abs = true):
- size(0),sets(false),keep(true),zero(true)
- {
- if(argc >= 1 && CanbeFloat(argv[0]))
- m_arg(GetAFloat(argv[0]));
- else if(argc)
- post("%s - Offset argument invalid -> ignored",thisName());
-
- AddInAnything();
- AddInFloat();
- AddOutAnything();
-
- if(abs) FLEXT_ADDATTR_VAR("frames",size,m_arg);
- }
-
- static V Setup(t_classid c)
- {
- FLEXT_CADDMETHOD(c,1,m_arg);
- FLEXT_CADDATTR_VAR1(c,"keep",keep);
- FLEXT_CADDATTR_VAR1(c,"zero",zero);
- }
-
- virtual V m_arg(F s)
- {
- size = (I)s; // \todo unit processing
- sets = true;
- }
-
- virtual Vasp *x_work()
- {
- Vasp *ret = new Vasp(ref);
- if(sets) ret->Size(size,keep,zero);
- return ret;
- }
-
- virtual V m_help() { post("%s - Set the size of the vector buffers",thisName()); }
-protected:
- I size;
- BL sets,keep,zero;
-
-private:
- FLEXT_CALLBACK_F(m_arg);
- FLEXT_CALLSET_I(m_arg);
- FLEXT_ATTRGET_I(size);
- FLEXT_ATTRVAR_B(keep);
- FLEXT_ATTRVAR_B(zero);
-};
-
-VASP_LIB_V("vasp.size vasp.s",vasp_size)
-
-
-
-
-/*! \class vasp_dsize
- \remark \b vasp.size+
- \brief Sets vector buffer sizes differentially.
- \since 0.0.6
- \param cmdln.1 [_time=0] - increase offset of into buffer(s)
- \param inlet.1 vasp - is stored and output triggered
- \param inlet.1 bang - triggers output
- \param inlet.1 set - vasp to be stored
- \param inlet.2 _time - increase of offset into buffer(s)
- \retval outlet vasp - modified vasp
-
- \todo Implement unit processing
-*/
-class vasp_dsize:
- public vasp_size
-{
- FLEXT_HEADER(vasp_dsize,vasp_size)
-
-public:
- vasp_dsize(I argc,const t_atom *argv): vasp_size(argc,argv) {}
-
- virtual Vasp *x_work()
- {
- Vasp *ret = new Vasp(ref);
- if(sets) ret->SizeD(size);
- return ret;
- }
-
- virtual V m_help() { post("%s - Increase the size of the vector buffers",thisName()); }
-};
-
-VASP_LIB_V("vasp.size+ vasp.s+",vasp_dsize)
-
-
-
-/*! \class vasp_msize
- \remark \b vasp.size*
- \brief Sets vector buffer sizes by a factor
- \since 0.0.6
- \param cmdln.1 [_number=1] - factor for size
- \param inlet.1 vasp - is stored and output triggered
- \param inlet.1 bang - triggers output
- \param inlet.1 set - vasp to be stored
- \param inlet.2 _number - factor for size
- \retval outlet vasp - modified vasp
-*/
-class vasp_msize:
- public vasp_size
-{
- FLEXT_HEADER_S(vasp_msize,vasp_size,Setup)
-
-public:
- vasp_msize(I argc,const t_atom *argv):
- vasp_size(argc,argv,false)
- {
- if(argc && CanbeFloat(argv[0])) m_arg(GetAFloat(argv[0]));
- }
-
- static V Setup(t_classid c)
- {
- FLEXT_CADDATTR_VAR(c,"factor",factor,m_arg);
- }
-
- virtual Vasp *x_work()
- {
- Vasp *ret = new Vasp(ref);
- if(sets) ret->SizeM(factor);
- return ret;
- }
-
- virtual V m_help() { post("%s - Multiply the size of the vector buffers",thisName()); }
-
- virtual V m_arg(F f)
- {
- factor = f;
- sets = true;
- }
-
-protected:
- R factor;
- FLEXT_CALLSET_F(m_arg);
- FLEXT_ATTRGET_F(factor);
-};
-
-VASP_LIB_V("vasp.size* vasp.s*",vasp_msize)
-
-
-
-/*! \class vasp_rsize
- \remark \b vasp.size/
- \brief Sets vector buffer sizes by a factor
- \since 0.0.6
- \param cmdln.1 [_number=1] - divisor for size
- \param inlet.1 vasp - is stored and output triggered
- \param inlet.1 bang - triggers output
- \param inlet.1 set - vasp to be stored
- \param inlet.2 _number - divisor for size
- \retval outlet vasp - modified vasp
-*/
-class vasp_rsize:
- public vasp_msize
-{
- FLEXT_HEADER(vasp_rsize,vasp_msize)
-
-public:
- vasp_rsize(I argc,const t_atom *argv): vasp_msize(argc,argv) {}
-
- virtual Vasp *x_work()
- {
- Vasp *ret = new Vasp(ref);
- if(sets) ret->SizeR(factor);
- return ret;
- }
-
- virtual V m_help() { post("%s - Divide the size of the vector buffers",thisName()); }
-};
-
-VASP_LIB_V("vasp.size/ vasp.s/",vasp_rsize)
-
-
-
-/*! \class vasp_qsize
- \remark \b vasp.size?
- \brief Get size of a vector buffer.
- \since 0.0.6
- \param inlet vasp - is stored and output triggered
- \param inlet bang - triggers output
- \param inlet set - vasp to be stored
- \retval outlet _time - offset into vector buffer
-
- \note Outputs 0 if vasp is undefined or invalid
- \note Only works for a vasp with one vector. No output otherwise.
-
- \todo Implement unit processing
- \todo Should we provide a cmdln default vasp?
- \todo Should we inhibit output for invalid vasps?
-*/
-class vasp_qsize:
- public vasp_op
-{
- FLEXT_HEADER(vasp_qsize,vasp_op)
-
-public:
-
- vasp_qsize()
- {
- AddInAnything();
-// AddOutAnything();
- AddOutFloat();
- }
-
- virtual V m_bang()
- {
- if(!ref.Check())
- post("%s - Invalid vasp!",thisName());
- else if(ref.Vectors() > 1)
- post("%s - More than one vector in vasp!",thisName());
- else {
- I s = 0;
- if(ref.Vectors() == 1) {
- VBuffer *buf = ref.Buffer(0);
- if(buf) {
- s = buf->Frames();
- delete buf;
- }
- }
- //! \todo unit processing
-// ToOutVasp(0,ref);
- ToOutFloat(0,s);
- }
- }
-
- virtual V m_help() { post("%s - Get the buffer size of a vector",thisName()); }
-};
-
-VASP_LIB("vasp.size? vasp.s?",vasp_qsize)
-
diff --git a/externals/grill/vasp/source/obj_split.cpp b/externals/grill/vasp/source/obj_split.cpp
deleted file mode 100644
index 341179d4..00000000
--- a/externals/grill/vasp/source/obj_split.cpp
+++ /dev/null
@@ -1,290 +0,0 @@
-/*
-
-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.
-
-*/
-
-#include "main.h"
-#include "classes.h"
-#include "util.h"
-
-
-/*! \class vasp_split
- \remark \b vasp.split
- \brief Splits a vasp into a number of vectors and the remainder.
- \since 0.0.1
- \param cmdln.1 int - number of vectors to split vasp into (excl. one for the remainder vectors)
- \param inlet.1 vasp - is stored and triggered
- \param inlet.1 bang - triggers output
- \param inlet.1 set - vasp to be stored
- \retval outlet.n vasp - vector of stored vasp
- \retval outlet.+ vasp - remainder of stored vasp
-
- \note if there is no remainder outputs a bang
-*/
-class vasp_split:
- public vasp_op
-{
- FLEXT_HEADER(vasp_split,vasp_op)
-
-public:
- vasp_split(I argc,const t_atom *argv)
- {
- I cnt = -1;
- if(argc) {
- if(CanbeInt(argv[0])) cnt = GetAInt(argv[0]);
- if(cnt <= 1) {
- post("%s - integer argument invalid: set to 2",thisName());
- cnt = 2;
- }
- }
- else cnt = 2;
-
- AddInAnything();
- AddOutAnything(cnt+1);
- }
-
- virtual V m_bang()
- {
- if(!ref.Ok()) {
- post("%s - Invalid vasp!",thisName());
- return;
- }
-
- I outs = CntOut()-1,rem = ref.Vectors()-outs;
- for(I i = min(outs,ref.Vectors())-1; i >= 0; --i) {
- Vasp v(ref.Frames(),ref.Vector(i));
- ToOutVasp(i,v);
- }
- if(rem > 0) {
- Vasp v(ref.Frames(),ref.Vector(outs));
- for(I i = 1; i < rem; ++i) v.AddVector(ref.Vector(outs+i));
- ToOutVasp(outs,v);
- }
- else
- ToOutBang(outs);
- }
-
- virtual V m_help() { post("%s - Split a vasp into its vectors",thisName()); }
-};
-
-VASP_LIB_V("vasp.split",vasp_split)
-
-
-/*! \class vasp_join
- \remark \b vasp.join
- \brief Joins several vasps into one.
- \since 0.0.1
- \param cmdln.1 int - number of vasp slots
- \param inlet.1 vasp - is stored and output triggered
- \param inlet.1 bang - triggers output
- \param inlet.1 set - vasp to be stored
- \param inlet.1 reset - clears slots
- \param inlet.+n vasp - is stored in this slot
- \retval outlet vasp - joined vasp
-
- The several vectors of the several vasps are all joined into one vasp.
-
- \note On different vasp frame count the minmum frame count is taken.
- \note The latest vector input to a slot is taken for the resulting vasp
-*/
-class vasp_join:
- public vasp_tx
-{
- FLEXT_HEADER_S(vasp_join,vasp_tx,Setup)
-
-public:
- vasp_join(I argc,const t_atom *argv):
- cnt(-1),vi(NULL)
- {
- if(argc) {
- if(CanbeInt(argv[0])) cnt = GetAInt(argv[0]);
- if(cnt <= 1) {
- post("%s - integer argument invalid: set to 2",thisName());
- cnt = 2;
- }
- }
- else cnt = 2;
-
- vi = new Vasp *[cnt-1];
- for(I i = 0; i < cnt-1; ++i) vi[i] = NULL;
-
- AddInAnything(cnt);
- AddOutAnything();
- }
-
- ~vasp_join() { if(vi) delete[] vi; }
-
- static V Setup(t_classid c)
- {
- FLEXT_CADDMETHOD_(c,0,"reset",m_reset);
- }
-
- virtual Vasp *x_work() {
- CVasp *ret = new CVasp(ref);
- for(I i = 0; i < cnt-1; ++i) if(vi[i]) *ret += *vi[i];
- return ret;
- }
-
- V m_reset()
- {
- ref.Clear();
- for(I i = 0; i < cnt-1; ++i) if(vi[i]) { delete vi[i]; vi[i] = NULL; }
- }
-
- virtual bool m_method_(I inlet,const t_symbol *s,I argc,const t_atom *argv)
- {
- if(inlet > 0 && s == sym_vasp) {
- if(vi[inlet-1]) delete vi[inlet-1];
- vi[inlet-1] = new Vasp(argc,argv);
- return true;
- }
- else
- return vasp_tx::m_method_(inlet,s,argc,argv);
- }
-
- virtual V m_help() { post("%s - Join several vasps into one",thisName()); }
-private:
- I cnt;
- Vasp **vi;
-
- FLEXT_CALLBACK(m_reset)
-};
-
-VASP_LIB_V("vasp.join",vasp_join)
-
-
-
-/*! \class vasp_spit
- \remark \b vasp.spit
- \brief Spit out vectors of a vasp consecutively.
- \since 0.0.1
- \param inlet.1 vasp - is stored and triggered
- \param inlet.1 bang - triggers output
- \param inlet.1 set - vasp to be stored
- \retval outlet.n vasp - vectors of stored vasp
- \retval outlet.+ bang - triggered after last spit
-*/
-class vasp_spit:
- public vasp_op
-{
- FLEXT_HEADER(vasp_spit,vasp_op)
-
-public:
- vasp_spit(I argc,const t_atom *argv)
- {
- I n = 1;
- if(argc >= 1) n = GetAInt(argv[0]);
- if(n < 1) {
- post("%s - illegal outlet count (%i) -> set to 1",thisName(),n);
- n = 1;
- }
-
- AddInAnything();
- AddOutAnything(n);
- AddOutBang();
- }
-
- virtual V m_bang()
- {
- if(!ref.Ok()) {
- post("%s - Invalid vasp!",thisName());
- return;
- }
-
- I outs = CntOut()-1,rem = ref.Vectors();
- for(I vi = 0; rem;) {
- I r = min(rem,outs);
- for(I i = 0; i < r; ++i) {
- Vasp v(ref.Frames(),ref.Vector(vi+i));
- ToOutVasp(outs-1-i,v);
- }
- vi += r;
- rem -= r;
- }
- ToOutBang(outs);
- }
-
- virtual V m_help() { post("%s - Spit out vectors of a vasp",thisName()); }
-};
-
-VASP_LIB_V("vasp.spit",vasp_spit)
-
-
-/*! \class vasp_gather
- \remark \b vasp.gather
- \brief Gathers several consecutive vasps into one.
- \since 0.0.1
- \param cmdln.1 int - number of vasp slots
- \param inlet.1 vasp - is stored and output triggered
- \param inlet.1 bang - triggers output
- \param inlet.1 set - sets result vasp
- \param inlet.1 reset - clears result
- \param inlet.2 vasp - add to result vasp
- \retval outlet vasp - gathered vasp
-
- The several incoming vectors are all gathered into one vasp.
-
- \note On different vasp frame count the minimum frame count is taken.
-*/
-class vasp_gather:
- public vasp_tx
-{
- FLEXT_HEADER_S(vasp_gather,vasp_tx,Setup)
-
-public:
- vasp_gather(I argc,const t_atom *argv)
- {
- cnt = 0;
- if(argc >= 1) cnt = GetAInt(argv[0]);
- if(cnt < 0) {
- post("%s - illegal count (%i) -> set to 0 (triggered mode)",thisName(),cnt);
- cnt = 0;
- }
- rem = cnt;
-
- AddInAnything(2);
- AddOutAnything();
- }
-
- static V Setup(t_classid c)
- {
- FLEXT_CADDMETHOD_(c,0,"reset",m_reset);
- FLEXT_CADDMETHOD_(c,1,"vasp",m_add);
- }
-
- virtual Vasp *x_work()
- {
- CVasp *ret = new CVasp(ref);
- *ret += cdst;
- m_reset();
- return ret;
- }
-
- V m_reset() { ref.Clear(); cdst.Clear(); rem = cnt; }
-
- virtual I m_set(I argc,const t_atom *argv) { rem = cnt; return vasp_tx::m_set(argc,argv); }
-
- V m_add(I argc,const t_atom *argv)
- {
- cdst += Vasp(argc,argv);
- if(cnt && !--rem) m_bang();
- }
-
- virtual V m_help() { post("%s - Gather several vasps into one",thisName()); }
-private:
- I cnt,rem;
- CVasp cdst;
-
- FLEXT_CALLBACK(m_reset)
- FLEXT_CALLBACK_V(m_add)
-};
-
-VASP_LIB_V("vasp.gather",vasp_gather)
-
-
-
diff --git a/externals/grill/vasp/source/obj_sync.cpp b/externals/grill/vasp/source/obj_sync.cpp
deleted file mode 100644
index b6ad0963..00000000
--- a/externals/grill/vasp/source/obj_sync.cpp
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
-
-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.
-
-*/
-
-#include "main.h"
-#include "classes.h"
-#include "util.h"
-
-
-/*! \class vasp_sync
- \remark \b vasp.sync
- \brief Waits for all inlets to be hit (by vasps/anything) to trigger output.
- \since 0.0.1
- \param cmdln.1 int - number of sync inlets
- \param inlet.1 vasp - is stored
- \param inlet.1 bang - triggers output
- \param inlet.1 set - vasp to be stored
- \param inlet.1 reset - clear all hit flags
- \param inlet.+n vasp/anything - sets hit flag
- \retval outlet.* vasp - stored vasps
-
- \todo Message for selection if only vasp input triggers (or any one).
- \todo Message for selection of manual or auto reset upon trigger
-*/
-class vasp_sync:
- public vasp_op
-{
- FLEXT_HEADER_S(vasp_sync,vasp_op,Setup)
-
-public:
- vasp_sync(I argc,const t_atom *argv):
- autoreset(true),vasponly(false)
- {
- I cnt = -1;
- if(argc) {
- if(CanbeInt(argv[0])) cnt = GetAInt(argv[0]);
- if(cnt <= 1) {
- post("%s - integer argument invalid: set to 2",thisName());
- cnt = 2;
- }
- }
- else cnt = 2;
-
- flags = new BL[cnt];
- stored = new Vasp[cnt-1];
-
- AddInAnything(cnt);
- AddOutAnything(cnt);
- }
-
- static V Setup(t_classid c)
- {
- FLEXT_CADDMETHOD_(c,0,"reset",m_reset);
- }
-
- virtual BL Init()
- {
- BL ret = vasp_op::Init();
- m_reset();
- return ret;
- }
-
- ~vasp_sync()
- {
- if(flags) delete[] flags;
- if(stored) delete[] stored;
- }
-
- V chkbang(I n,Vasp *a = NULL)
- {
- if(a && n > 0) {
- stored[n-1] = *a;
- delete a;
- }
-
- BL f = flags[n];
- flags[n] = true;
- if(!f) { // flags have changed
-
- BL all = true;
- for(I i = 0; i < CntIn(); ++i) all = all && flags[i];
-
- if(all) {
- if(ref.Ok()) {
- for(I i = CntIn()-1; i > 0; --i) ToOutVasp(i,stored[i-1]);
- ToOutVasp(0,ref);
- }
- else ToOutBang(0);
-
- if(autoreset) m_reset();
- }
- }
- }
-
- virtual V m_bang() { chkbang(0); }
-
- V m_reset()
- {
- for(I i = 0; i < CntIn(); ++i) flags[i] = false;
- }
-
- virtual bool m_method_(I inlet,const t_symbol *s,I argc,const t_atom *argv)
- {
- if(inlet > 0 && (!vasponly || s == sym_vasp)) {
- Vasp *a = new Vasp(argc,argv);
- chkbang(inlet,a);
- return true;
- }
- else
- return vasp_op::m_method_(inlet,s,argc,argv);
- }
-
- virtual V m_help() { post("%s - Synchronize a number of vasps (default 2)",thisName()); }
-private:
- BL autoreset,vasponly;
- BL *flags;
- Vasp *stored;
-
- FLEXT_CALLBACK(m_reset)
-};
-
-VASP_LIB_V("vasp.sync",vasp_sync)
-
-
diff --git a/externals/grill/vasp/source/obj_vasp.cpp b/externals/grill/vasp/source/obj_vasp.cpp
deleted file mode 100644
index 9b8cfb5d..00000000
--- a/externals/grill/vasp/source/obj_vasp.cpp
+++ /dev/null
@@ -1,205 +0,0 @@
-/*
-
-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.
-
-*/
-
-/*! \file obj_vasp.cpp
- \brief basic vasp objects.
-*/
-
-#include "main.h"
-#include "classes.h"
-#include "util.h"
-
-
-/*! \class vasp_v
- \remark \b vasp
- \brief Stores vasp messages.
- \since 0.0.1
- \param cmdln.* vasp - to be stored
- \param inlet.1 vasp - is stored and output
- \param inlet.1 list - if possible list is converted to vasp format
- \param inlet.1 bang - triggers stored Vasp output
- \param inlet.1 set vasp - Vasp is stored (and not immediately output)
- \param inlet.2 vasp - Vasp is stored (and not immediately output)
- \retval outlet vasp
-*/
-class vasp_v:
- public vasp_tx
-{
- FLEXT_HEADER_S(vasp_v,vasp_tx,Setup)
-
-public:
-
- vasp_v(I argc,const t_atom *argv)
- {
- m_set(argc,argv);
-
- AddInAnything(2);
- AddOutAnything();
- }
-
- static V Setup(t_classid c)
- {
- FLEXT_CADDMETHOD_(c,0,"list",m_vasp);
-
- FLEXT_CADDMETHOD_(c,1,"list",m_set);
- FLEXT_CADDMETHOD_(c,1,"vasp",m_set);
- FLEXT_CADDMETHOD_(c,1,"radio",a_radio);
- }
-
- V a_radio(I,const t_atom *) {}
-
- virtual Vasp *x_work() { return new Vasp(ref); }
-
- virtual V m_help() { post("%s - Store and output a vasp",thisName()); }
-private:
- FLEXT_CALLBACK_V(a_radio);
-};
-
-VASP_LIB_V("vasp",vasp_v)
-
-
-
-/*! \class vasp_update
- \remark \b vasp.update
- \brief Refreshes buffer graphics for a vasp.
- \since 0.0.1
- \param inlet vasp - is stored and output
- \param inlet bang - triggers stored vasp output
- \param inlet set - vasp to be stored (and not immediately output)
- \retval outlet vasp
-
- \note In Max/MSP only necessary when buffer is in another window.
-*/
-class vasp_update:
- public vasp_tx
-{
- FLEXT_HEADER(vasp_update,vasp_tx)
-
-public:
- vasp_update()
- {
- AddInAnything();
- AddOutAnything();
- }
-
- virtual Vasp *x_work()
- {
- ref.Refresh();
- return new Vasp(ref);
- }
-
- virtual V m_help() { post("%s - Update graphics of a vasp",thisName()); }
-};
-
-VASP_LIB("vasp.update vasp.u",vasp_update)
-
-
-
-/*! \class vasp_check
- \remark \b vasp.check
- \brief Check vasp dimensions.
- \since 0.0.1
- \param inlet vasp - is stored and output
- \param inlet bang - triggers stored vasp output
- \param inlet set - vasp to be stored (and not immediately output)
- \retval outlet vasp
-
- \remark checks and corrects frame count
- \remark checks channel index... no correction, no output on error!
-*/
-class vasp_check:
- public vasp_tx
-{
- FLEXT_HEADER(vasp_check,vasp_tx)
-
-public:
- vasp_check()
- {
- AddInAnything();
- AddOutAnything();
- }
-
- virtual Vasp *x_work()
- {
- Vasp *ret = new Vasp(ref);
- I fr = ret->ChkFrames(); // maximum common frame length
- ret->Frames(fr);
-
- BL chok = true;
-
- for(I i = 0; i < ret->Vectors(); ++i) {
- VBuffer *buf = ret->Buffer(i);
- chok = chok && buf->Ok() && buf->Channel() == ret->Vector(i).Channel();
- delete buf;
- }
-
- if(chok)
- return ret;
- else {
- delete ret;
- return NULL;
- }
- }
-
- virtual V m_help() { post("%s - Check vasp dimensions",thisName()); }
-};
-
-VASP_LIB("vasp.check vasp.chk",vasp_check)
-
-
-
-/*! \class vasp_multi
- \remark \b vasp.m
- \brief Outputs multiple (identical) vasps.
- \since 0.0.1
- \param cmdln.1 int - number of vasp outlets
- \param inlet vasp - is stored and output
- \param inlet bang - triggers stored Vasp output
- \param inlet set - vasp to be stored (and not immediately output)
- \retval outlet.* vasp
-
- \note Outputs in right to left order.
-*/
-class vasp_multi:
- public vasp_op
-{
- FLEXT_HEADER(vasp_multi,vasp_op)
-
-public:
-
- vasp_multi(I argc,const t_atom *argv)
- {
- I cnt = -1;
- if(argc) {
- if(CanbeInt(argv[0])) cnt = GetAInt(argv[0]);
- if(cnt <= 1) {
- post("%s - integer argument invalid: set to 2",thisName());
- cnt = 2;
- }
- }
- else cnt = 2;
-
- AddInAnything();
- AddOutAnything(cnt);
- }
-
- virtual V m_bang()
- {
- if(ref.Check())
- for(I i = CntOut()-1; i >= 0; --i) ToOutVasp(i,ref);
- else
- post("%s - Invalid vasp",thisName());
- }
-
- virtual V m_help() { post("%s - Output a vasp multiple times",thisName()); }
-};
-
-VASP_LIB_V("vasp.multi vasp.m",vasp_multi)
-
diff --git a/externals/grill/vasp/source/obj_vecs.cpp b/externals/grill/vasp/source/obj_vecs.cpp
deleted file mode 100644
index d056189e..00000000
--- a/externals/grill/vasp/source/obj_vecs.cpp
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
-
-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.
-
-*/
-
-#include "main.h"
-#include "classes.h"
-#include "util.h"
-
-
-/*! \class vasp_vector
- \remark \b vasp.vector
- \brief Gets indexed vector of a vasp.
- \since 0.0.1
- \param cmdln.1 int - index of vasp vector
- \param inlet vasp - is stored and indexed vasp vector output
- \param inlet bang - triggers indexed vasp vector output
- \param inlet set - vasp to be stored (and not immediately output)
- \retval outlet.1 vasp - single indexed vector of vasp
- \retval outlet.2 vasp - remainder of vasp
-
- \note Outputs only on valid index
- \todo Output remainder as vasp.
-*/
-class vasp_vector:
- public vasp_tx
-{
- FLEXT_HEADER_S(vasp_vector,vasp_tx,Setup)
-
-public:
- vasp_vector(I argc,const t_atom *argv):
- ix(0)
- {
- if(argc >= 1 && CanbeInt(argv[0]))
- ix = GetAInt(argv[0]);
- else if(argc)
- post("%s - Index argument invalid -> set to 0",thisName());
-
- AddInAnything(2);
- AddOutAnything();
- }
-
- static V Setup(t_classid c)
- {
- FLEXT_CADDMETHOD(c,1,m_ix);
- FLEXT_CADDATTR_VAR(c,"index",ix,m_ix);
- }
-
- V m_ix(I i) { ix = i; }
-
- virtual Vasp *x_work() { return ix < ref.Vectors()?new Vasp(ref.Frames(),ref.Vector(ix)):NULL; }
-
- virtual V m_help() { post("%s - Get one vector of a vasp",thisName()); }
-
-protected:
- I ix;
-
-private:
- FLEXT_CALLBACK_I(m_ix);
- FLEXT_CALLSET_I(m_ix);
- FLEXT_ATTRGET_I(ix);
-};
-
-VASP_LIB_V("vasp.vector vasp.n",vasp_vector)
-
-
-
-/*! \class vasp_qn
- \remark \b vasp.n?
- \brief Gets number of vector of a vasp.
- \since 0.0.1
- \param inlet vasp - is stored and output triggered
- \param inlet bang - triggers output
- \param inlet set - vasp to be stored
- \retval outlet int - number of vectors in stored vasp
-
- \note Outputs 0 if vasp is undefined or invalid.
-
- \todo Should we disable output with invalid vasp?
-*/
-class vasp_qvectors:
- public vasp_op
-{
- FLEXT_HEADER(vasp_qvectors,vasp_op)
-
-public:
- vasp_qvectors()
- {
- AddInAnything();
-// AddOutAnything();
- AddOutInt();
- }
-
- virtual V m_bang()
- {
-// ToOutVasp(0,ref);
- ToOutInt(0,ref.Ok()?ref.Vectors():0);
- }
-
- virtual V m_help() { post("%s - Get number of vectors of a vasp",thisName()); }
-};
-
-VASP_LIB("vasp.vectors? vasp.n?",vasp_qvectors)
-
-
-
diff --git a/externals/grill/vasp/source/opbase.cpp b/externals/grill/vasp/source/opbase.cpp
deleted file mode 100644
index 5abcb9fa..00000000
--- a/externals/grill/vasp/source/opbase.cpp
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
-
-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.
-
-*/
-
-#include "main.h"
-#include "opbase.h"
-#include "opdefs.h"
-
-Vasp *VaspOp::m_run(OpParam &p,CVasp &src,CVasp *dst,opfun fun)
-{
- Vasp *ret = NULL;
- RVecBlock *vecs = GetRVecs(p.opname,src,dst);
- if(vecs) {
- ret = DoOp(vecs,fun,p);
- delete vecs;
- }
-
- return ret;
-}
-
-Vasp *VaspOp::m_cun(OpParam &p,CVasp &src,CVasp *dst,opfun fun)
-{
- Vasp *ret = NULL;
- CVecBlock *vecs = GetCVecs(p.opname,src,dst);
- if(vecs) {
- ret = DoOp(vecs,fun,p);
- delete vecs;
- }
-
- return ret;
-}
-
-Vasp *VaspOp::m_rbin(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst,opfun fun)
-{
- Vasp *ret = NULL;
- BL argvasp = arg.IsVasp();
-
- RVecBlock *vecs = argvasp?GetRVecs(p.opname,src,arg.GetVasp(),dst):GetRVecs(p.opname,src,dst);
- if(vecs) {
- if(arg.CanbeDouble()) p.rbin.arg = arg.GetADouble();
- else if(arg.IsEnv()) {
- if(p.args != 1)
- ERRINTERNAL();
- else
- p.arg[0].SetE(&arg.GetEnv());
- }
-
- ret = DoOp(vecs,fun,p);
- delete vecs;
- }
-
- return ret;
-}
-
-Vasp *VaspOp::m_cbin(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst,opfun fun)
-{
- Vasp *ret = NULL;
- BL argvasp = arg.IsVasp();
-
- CVecBlock *vecs = argvasp?GetCVecs(p.opname,src,arg.GetVasp(),dst):GetCVecs(p.opname,src,dst);
- if(vecs) {
- if(arg.CanbeComplex()) {
- CX z = arg.GetAComplex();
- p.cbin.rarg = z.real;
- p.cbin.iarg = z.imag;
- }
- else if(arg.IsEnv()) {
- if(p.args != 1)
- ERRINTERNAL();
- else
- p.arg[0].SetE(&arg.GetEnv());
- }
-
- ret = DoOp(vecs,fun,p);
- delete vecs;
- }
-
- return ret;
-}
diff --git a/externals/grill/vasp/source/opbase.h b/externals/grill/vasp/source/opbase.h
deleted file mode 100644
index bba4a3a6..00000000
--- a/externals/grill/vasp/source/opbase.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-
-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_OPBASE_H
-#define __VASP_OPBASE_H
-
-#include "main.h"
-#include "classes.h"
-#include "vecblk.h"
-#include "opparam.h"
-
-
-namespace VaspOp {
- typedef BL opfun(OpParam &p);
-
- // -------- prepare vectors and do vector operation -----------
- // in opvecs.cpp
-
- RVecBlock *GetRVecs(const C *op,CVasp &src,CVasp *dst = NULL);
- CVecBlock *GetCVecs(const C *op,CVasp &src,CVasp *dst = NULL,BL full = false);
- RVecBlock *GetRVecs(const C *op,CVasp &src,const CVasp &arg,CVasp *dst = NULL,I multi = -1,BL ssize = true);
- CVecBlock *GetCVecs(const C *op,CVasp &src,const CVasp &arg,CVasp *dst = NULL,I multi = -1,BL ssize = true,BL full = false);
-
- Vasp *DoOp(RVecBlock *vecs,opfun *fun,OpParam &p,BL symm = false);
- Vasp *DoOp(CVecBlock *vecs,opfun *fun,OpParam &p,BL symm = false);
-
- // -------- transformations -----------------------------------
- // in opbase.cpp
-
- // unary functions
- Vasp *m_run(OpParam &p,CVasp &src,CVasp *dst,opfun fun); // real unary (one vec or real)
- Vasp *m_cun(OpParam &p,CVasp &src,CVasp *dst,opfun fun); // complex unary (one vec or complex)
-
- // binary functions
- Vasp *m_rbin(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst,opfun fun); // real binary (one vec or real)
- Vasp *m_cbin(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst,opfun fun); // complex binary (one vec or complex)
-
-}
-
-#endif
diff --git a/externals/grill/vasp/source/opdefs.h b/externals/grill/vasp/source/opdefs.h
deleted file mode 100644
index 833163dc..00000000
--- a/externals/grill/vasp/source/opdefs.h
+++ /dev/null
@@ -1,495 +0,0 @@
-/*
-
-VASP modular - vector assembling signal processor / objects for Max/MSP and PD
-
-Copyright (c) 2002-2003 Thomas Grill (xovo@gmx.net)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-#ifndef __VASP_OPDEFS_H
-#define __VASP_OPDEFS_H
-
-#include "oploop.h"
-#include "opbase.h"
-
-#ifdef VASP_CHN1
-#define _D_ALWAYS1 1
-#else
-#define _D_ALWAYS1 0
-#endif
-
-
-namespace VecOp {
-
-// multi-layer templates
-
-template<class T,class OP,int LR>
-inline BL vec_un(T *v,const T *a,I n = 0) {
- const I _n = LR?LR:n;
- for(I i = 0; i < _n; ++i) OP::run(v[i],a[i]);
- return true;
-}
-
-template<class T,class OP,int LR>
-inline BL vec_un(T *v,T a,I n = 0) {
- const I _n = LR?LR:n;
- for(I i = 0; i < _n; ++i) OP::run(v[i],a);
- return true;
-}
-
-template<class T,class TR,class OP,int LR>
-inline BL vec_bin(T *v,const T *a,const TR *b,I n = 0) {
- const I _n = LR?LR:n;
- for(I i = 0; i < _n; ++i) OP::rbin(v[i],a[i],b[i]);
- return true;
-}
-
-template<class T,class TR,class OP,int LR>
-inline BL vec_bin(T *v,const T *a,TR b,I n = 0) {
- const I _n = LR?LR:n;
- for(I i = 0; i < _n; ++i) OP::rbin(v[i],a[i],b);
- return true;
-}
-
-/*! \brief skeleton for unary real operations
-*/
-template<class T,class OP> BL V__run(register const T *sr,I rss,register T *dr,I rds,I frames)
-{
- register I i;
- if(sr == dr && OP::run_opt() >= 3)
- if((_D_ALWAYS1 || rds == 1) && OP::run_opt() >= 2)
- _DE_LOOP(i,frames, ( OP::run(*dr,*dr), dr++ ) )
- else
- _DE_LOOP(i,frames, ( OP::run(*dr,*dr), dr += rds ) )
- else
- if((_D_ALWAYS1 || (rss == 1 && rds == 1)) && OP::run_opt() >= 2)
- _DE_LOOP(i,frames, ( OP::run(*dr,*sr), sr++,dr++ ) )
- else
- _DE_LOOP(i,frames, ( OP::run(*dr,*sr), sr += rss,dr += rds ) )
- return true;
-}
-
-
-/*! \brief skeleton for unary complex operations
-*/
-template<class T,class OP> BL V__cun(register const T *sr,register const T *si,I rss,I iss,register T *dr,register T *di,I rds,I ids,I frames)
-{
- register I i;
- if(sr == dr && si == di && OP::cun_opt() >= 3)
- if((_D_ALWAYS1 || (rds == 1 && ids == 1)) && OP::cun_opt() >= 2)
- _DE_LOOP(i,frames, ( OP::cun(*dr,*di,*dr,*di), dr++,di++ ) )
- else
- _DE_LOOP(i,frames, ( OP::cun(*dr,*di,*dr,*di), dr += rds,di += ids ) )
- else
- if((_D_ALWAYS1 || (rss == 1 && iss == 1 && rds == 1 && ids == 1)) && OP::cun_opt() >= 2)
- _DE_LOOP(i,frames, ( OP::cun(*dr,*di,*sr,*si), sr++,si++,dr++,di++ ) )
- else
- _DE_LOOP(i,frames, ( OP::cun(*dr,*di,*sr,*si), sr += rss,si += iss,dr += rds,di += ids ) )
- return true;
-}
-
-template<class T,class OP> BL V__vun(I layers,register const T *sr,register T *dr,I frames)
-{
- register I i;
- switch(layers) {
- case 1:
- V__run<T,OP>(sr,1,dr,1,frames);
- break;
- case 2:
- _DF_LOOP(i,frames, ( vec_un<T,OP,2>(dr,sr,2), sr += 2, dr += 2) )
- break;
- case 3:
- _DF_LOOP(i,frames, ( vec_un<T,OP,3>(dr,sr,3), sr += 3, dr += 3) )
- break;
- case 4:
- _DF_LOOP(i,frames, ( vec_un<T,OP,4>(dr,sr,4), sr += 4, dr += 4) )
- break;
- default:
- _DF_LOOP(i,frames, ( vec_un<T,OP,0>(dr,sr,layers), sr += layers, dr += layers) )
- break;
- }
- return true;
-}
-
-
-template<class T,class OP> BL V__rbin(register const T *sr,I rss,register T *dr,I rds,register const T *ar,I ras,I frames)
-{
- register I i;
- if(sr == dr && OP::rbin_opt() >= 3)
- if((_D_ALWAYS1 || (rds == 1 && ras == 1)) && OP::rbin_opt() >= 2)
- _DE_LOOP(i,frames, ( OP::rbin(*dr,*dr,*ar), dr++,ar++ ) )
- else
- _DE_LOOP(i,frames, ( OP::rbin(*dr,*dr,*ar), dr += rds,ar += ras ) )
- else
- if((_D_ALWAYS1 || (rss == 1 && rds == 1 && ras == 1)) && OP::rbin_opt() >= 2)
- _DE_LOOP(i,frames, ( OP::rbin(*dr,*sr,*ar), sr++,dr++,ar++ ) )
- else
- _DE_LOOP(i,frames, ( OP::rbin(*dr,*sr,*ar), sr += rss,dr += rds,ar += ras ) )
- return true;
-}
-
-template<class T,class OP> BL V__cbin(register const T *sr,register const T *si,I rss,I iss,register T *dr,register T *di,I ids,I rds,const T *ar,const T *ai,I ras,I ias,I frames)
-{
- register I i;
- if(sr == dr && si == di && OP::cbin_opt() >= 3)
- if((_D_ALWAYS1 || (rds == 1 && ids == 1 && ras == 1 && ias == 1)) && OP::cbin_opt() >= 2)
- _DE_LOOP(i,frames, ( OP::cbin(*dr,*di,*dr,*di,*ar,*ai), dr++,di++,ar++,ai++ ) )
- else
- _DE_LOOP(i,frames, ( OP::cbin(*dr,*di,*dr,*di,*ar,*ai), dr += rds,di += ids,ar += ras,ai += ias ) )
- else
- _DE_LOOP(i,frames, ( OP::cbin(*dr,*di,*sr,*si,*ar,*ai), sr += rss,si += iss,dr += rds,di += ids,ar += ras,ai += ias ) )
- return true;
-}
-
-
-template<class TR> class _A__vector {
-public:
- static BL unroll() { return true; }
- static TR ev(const TR *a,I i,I m) { return a[i*m]; }
-};
-
-template<class TR> class _A__scalar {
-public:
- static BL unroll() { return true; }
- static TR ev(TR a,I i,I m) { return a; }
-};
-
-class _A__env {
-public:
- static BL unroll() { return false; }
- static R ev(Env::Iter &a,I i,I m) { return a.ValFwd(i); }
-};
-
-template<class T,class TA,class TR,class OP,class EVARG> BL Vx__rbin(register const T *sr,I rss,register T *dr,I rds,TA ar,I frames)
-{
- register I i;
- if(sr == dr && OP::rbin_opt() >= 3)
- if((_D_ALWAYS1 || rds == 1) && OP::rbin_opt() >= 2)
- _DQ_LOOP(EVARG::unroll(),i,frames, ( OP::rbin(*dr,*dr,EVARG::ev(ar,i,1)), dr++ ) )
- else
- _DQ_LOOP(EVARG::unroll(),i,frames, ( OP::rbin(*dr,*dr,EVARG::ev(ar,i,1)), dr += rds ) )
- else
- if((_D_ALWAYS1 || rss == 1 && rds == 1) && OP::rbin_opt() >= 2)
- _DQ_LOOP(EVARG::unroll(),i,frames, ( OP::rbin(*dr,*sr,EVARG::ev(ar,i,1)), sr++,dr++ ) )
- else
- _DQ_LOOP(EVARG::unroll(),i,frames, ( OP::rbin(*dr,*sr,EVARG::ev(ar,i,1)), sr += rss,dr += rds ) )
- return true;
-}
-
-template<class T,class TA1,class TA2,class TR,class OP,class EVARG1,class EVARG2> BL Vx__cbin(register const T *sr,register const T *si,I rss,I iss,register T *dr,register T *di,I ids,I rds,TA1 ar,TA2 ai,I ras,I ias,I frames)
-{
- register I i;
- if(sr == dr && si == di && OP::cbin_opt() >= 3)
- if((_D_ALWAYS1 || (rds == 1 && ids == 1 && ras == 1 && ias == 1)) && OP::cbin_opt() >= 2)
- _DQ_LOOP(EVARG1::unroll() && EVARG2::unroll(),i,frames, ( OP::cbin(*dr,*di,*dr,*di,EVARG1::ev(ar,i,1),EVARG2::ev(ai,i,1)), dr++,di++ ) )
- else
- _DQ_LOOP(EVARG1::unroll() && EVARG2::unroll(),i,frames, ( OP::cbin(*dr,*di,*dr,*di,EVARG1::ev(ar,i,ras),EVARG2::ev(ai,i,ias)), dr += rds,di += ids ) )
- else
- _DQ_LOOP(EVARG1::unroll() && EVARG2::unroll(),i,frames, ( OP::cbin(*dr,*di,*sr,*si,EVARG1::ev(ar,i,ras),EVARG2::ev(ai,i,ias)), sr += rss,si += iss,dr += rds,di += ids ) )
- return true;
-}
-
-template<class T,class TA,class TR,class OP,class EVARG> BL Vx__vbin(I layers,register const T *sr,register T *dr,TA ar,I frames)
-{
- register I i;
- switch(layers) {
- case 1:
- Vx__rbin<T,TA,TR,OP,EVARG>(sr,1,dr,1,ar,frames);
- break;
- case 2:
- _DF_LOOP(i,frames, ( vec_bin<T,TR,OP,2>(dr,sr,EVARG::ev(ar,i,2),2), sr += 2, dr += 2) )
- break;
- case 3:
- _DF_LOOP(i,frames, ( vec_bin<T,TR,OP,3>(dr,sr,EVARG::ev(ar,i,3),3), sr += 3, dr += 3) )
- break;
- case 4:
- _DF_LOOP(i,frames, ( vec_bin<T,TR,OP,4>(dr,sr,EVARG::ev(ar,i,4),4), sr += 4, dr += 4) )
- break;
- default:
- _DF_LOOP(i,frames, ( vec_bin<T,TR,OP,0>(dr,sr,EVARG::ev(ar,i,layers),layers), sr += layers, dr += layers) )
- break;
- }
- return true;
-}
-
-template<class T,class OP> inline BL V__vbin(I layers,register const T *sr,register T *dr,register const T *ar,I frames)
-{
- return Vx__vbin<T,const T *,T,OP,_A__vector<T> >(layers,sr,dr,ar,frames);
-}
-
-/*! \brief skeleton for binary real operations
-*/
-template<class T,class OP> BL _F__rbin(OpParam &p)
-{
- if(p.HasArg() && p.arg[0].Is()) {
- switch(p.arg[0].argtp) {
- case OpParam::Arg::arg_v: {
- V__rbin<T,OP>(p.rsdt,p.rss,p.rddt,p.rds,p.arg[0].v.rdt,p.arg[0].v.rs,p.frames);
- break;
- }
- case OpParam::Arg::arg_env: {
- Env::Iter it(*p.arg[0].e.env); it.Init(0);
- Vx__rbin<T,Env::Iter &,R,OP,_A__env >(p.rsdt,p.rss,p.rddt,p.rds,it,p.frames);
- break;
- }
- case OpParam::Arg::arg_x: {
- Vx__rbin<T,R,T,OP,_A__scalar<R> >(p.rsdt,p.rss,p.rddt,p.rds,p.arg[0].x.r,p.frames);
- break;
- }
- }
- }
- else {
- Vx__rbin<T,T,T,OP,_A__scalar<T> >(p.rsdt,p.rss,p.rddt,p.rds,p.rbin.arg,p.frames);
- }
- return true;
-}
-
-
-/*! \brief skeleton for binary complex operations
-*/
-template<class T,class OP> BL _F__cbin(OpParam &p)
-{
- if(p.HasArg() && p.arg[0].Is()) {
- switch(p.arg[0].argtp) {
- case OpParam::Arg::arg_v: {
- if(p.arg[0].v.idt)
- V__cbin<T,OP>(p.rsdt,p.isdt,p.rss,p.iss,p.rddt,p.iddt,p.rds,p.ids,p.arg[0].v.rdt,p.arg[0].v.idt,p.arg[0].v.rs,p.arg[0].v.is,p.frames);
- else
- Vx__cbin<T,const T *,T,T,OP,_A__vector<T>,_A__scalar<T> >(p.rsdt,p.isdt,p.rss,p.iss,p.rddt,p.iddt,p.rds,p.ids,p.arg[0].v.rdt,0,p.arg[0].v.rs,1,p.frames);
- break;
- }
- case OpParam::Arg::arg_env: {
- Env::Iter it(*p.arg[0].e.env); it.Init(0);
- Vx__cbin<T,Env::Iter &,T,R,OP,_A__env,_A__scalar<T> >(p.rsdt,p.isdt,p.rss,p.iss,p.rddt,p.iddt,p.rds,p.ids,it,0,1,1,p.frames);
- break;
- }
- case OpParam::Arg::arg_x: {
- Vx__cbin<T,R,R,R,OP,_A__scalar<R>,_A__scalar<R> >(p.rsdt,p.isdt,p.rss,p.iss,p.rddt,p.iddt,p.rds,p.ids,p.arg[0].x.r,p.arg[0].x.i,1,1,p.frames);
- break;
- }
- }
- }
- else {
- Vx__cbin<T,T,T,T,OP,_A__scalar<T>,_A__scalar<T> >(p.rsdt,p.isdt,p.rss,p.iss,p.rddt,p.iddt,p.rds,p.ids,p.cbin.rarg,p.cbin.iarg,1,1,p.frames);
- }
- return true;
-}
-
-/*! \brief skeleton for real operations with parameter block
-*/
-template<class T,class ARG,class OP> BL V__rop(ARG p,register const S *sr,I rss,register S *dr,I rds,I frames)
-{
- register I i;
- if(sr == dr && OP::rop_opt() >= 3)
- if((_D_ALWAYS1 || rds == 1) && OP::rop_opt() >= 2)
- _DE_LOOP(i,frames, ( OP::rop(*dr,*dr,p), dr++ ) )
- else
- _DE_LOOP(i,frames, ( OP::rop(*dr,*dr,p), dr += rds ) )
- else
- if((_D_ALWAYS1 || (rss == 1 && p.rds == 1)) && OP::rop_opt() >= 2)
- _DE_LOOP(i,frames, ( OP::rop(*dr,*sr,p), sr++,dr++ ) )
- else
- _DE_LOOP(i,frames, ( OP::rop(*dr,*sr,p), sr += rss,dr += rds ) )
- return true;
-}
-
-/*! \brief skeleton for complex operations with parameter block
-*/
-template<class T,class ARG,class OP> BL V__cop(ARG p,register const S *sr,register const S *si,I rss,I iss,register S *dr,register S *di,I rds,I ids,I frames)
-{
- register I i;
- if(sr == dr && si == di && OP::cop_opt() >= 3)
- if((_D_ALWAYS1 || (rds == 1 && ids == 1)) && OP::cop_opt() >= 2)
- _DE_LOOP(i,frames, ( OP::cop(*dr,*di,*dr,*di,p), dr++,di++ ) )
- else
- _DE_LOOP(i,frames, ( OP::cop(*dr,*di,*dr,*di,p), dr += rds,di += ids ) )
- else
- if((_D_ALWAYS1 || (p.rss == 1 && p.iss == 1 && p.rds == 1 && p.ids == 1)) && OP::cop_opt() >= 2)
- _DE_LOOP(i,frames, ( OP::cop(*dr,*di,*sr,*si,p), sr++,si++,dr++,di++ ) )
- else
- _DE_LOOP(i,frames, ( OP::cop(*dr,*di,*sr,*si,p), sr += rss,si += iss,dr += rds,di += ids ) )
- return true;
-}
-
-
-template<class T> BL _d__run(V fun(T &v,T a),OpParam &p)
-{
- int i;
- if(p.rds == 1 && p.rss == 1)
- _DE_LOOP(i,p.frames, ( fun(p.rddt[i],p.rsdt[i]) ) )
- else
- _DF_LOOP(i,p.frames, ( fun(p.rddt[p.rds*i],p.rsdt[p.rss*i]) ) )
- return true;
-}
-
-template<class T> BL _d__cun(V fun(T &rv,T &iv,T ra,T ia),OpParam &p)
-{
- int i;
- if(p.rds == 1 && p.ids == 1 && p.rss == 1 && p.iss == 1)
- _DE_LOOP(i,p.frames, ( fun(p.rddt[i],p.iddt[i],p.rsdt[i],p.isdt[i]) ) )
- else
- _DF_LOOP(i,p.frames, ( fun(p.rddt[p.rds*i],p.iddt[p.ids*i],p.rsdt[p.rss*i],p.isdt[p.iss*i]) ) )
- return true;
-}
-
-template<class T> BL _d__rbin(V fun(T &v,T a,T b),OpParam &p)
-{
- int i;
- if(p.HasArg() && p.arg[0].Is()) {
- switch(p.arg[0].argtp) {
- case OpParam::Arg::arg_v: {
- const T *adr = p.arg[0].v.rdt;
- const I asr = p.arg[0].v.rs;
- _DF_LOOP(i,p.frames, ( fun(p.rddt[p.rds*i],p.rsdt[p.rss*i],adr[asr*i]) ) )
- break;
- }
- case OpParam::Arg::arg_env: {
- Env::Iter it(*p.arg[0].e.env); it.Init(0);
- _DF_LOOP(i,p.frames, ( fun(p.rddt[p.rds*i],p.rsdt[p.rss*i],it.ValFwd(i)) ) )
- break;
- }
- case OpParam::Arg::arg_x: {
- const T av = p.arg[0].x.r;
- _DF_LOOP(i,p.frames, ( fun(p.rddt[p.rds*i],p.rsdt[p.rss*i],av) ) )
- break;
- }
- }
- }
- else {
- _DF_LOOP(i,p.frames, ( fun(p.rddt[p.rds*i],p.rsdt[p.rss*i],p.rbin.arg) ) )
- }
- return true;
-}
-
-template<class T> BL _d__cbin(V fun(T &rv,T &iv,T ra,T ia,T rb,T ib),OpParam &p)
-{
- int i;
- if(p.HasArg() && p.arg[0].Is()) {
- switch(p.arg[0].argtp) {
- case OpParam::Arg::arg_v: {
- const T *adr = p.arg[0].v.rdt,*adi = p.arg[0].v.idt;
- const I asr = p.arg[0].v.rs,asi = p.arg[0].v.is;
- if(adi)
- _DF_LOOP(i,p.frames, ( fun(p.rddt[p.rds*i],p.iddt[p.ids*i],p.rsdt[p.rss*i],p.isdt[p.iss*i],adr[asr*i],adi[asi*i]) ) )
- else
- _DF_LOOP(i,p.frames, ( fun(p.rddt[p.rds*i],p.iddt[p.ids*i],p.rsdt[p.rss*i],p.isdt[p.iss*i],adr[asr*i],0) ) )
- break;
- }
- case OpParam::Arg::arg_env: {
- Env::Iter it(*p.arg[0].e.env); it.Init(0);
- _DF_LOOP(i,p.frames, ( fun(p.rddt[p.rds*i],p.iddt[p.ids*i],p.rsdt[p.rss*i],p.isdt[p.iss*i],it.ValFwd(i),0) ) )
- break;
- }
- case OpParam::Arg::arg_x: {
- const T avr = p.arg[0].x.r,avi = p.arg[0].x.i;
- _DF_LOOP(i,p.frames, ( fun(p.rddt[p.rds*i],p.iddt[p.ids*i],p.rsdt[p.rss*i],p.isdt[p.iss*i],avr,avi) ) )
- break;
- }
- }
- }
- else {
- _DF_LOOP(i,p.frames, ( fun(p.rddt[p.rds*i],p.iddt[p.ids*i],p.rsdt[p.rss*i],p.isdt[p.iss*i],p.cbin.rarg,p.cbin.iarg) ) )
- }
- return true;
-}
-
-template<class T> BL _d__rop(V fun(T &v,T a,OpParam &p),OpParam &p)
-{
- int i;
- if(p.rds == 1 && p.rss == 1)
- _DE_LOOP(i,p.frames, ( fun(p.rddt[i],p.rsdt[i],p) ) )
- else
- _DF_LOOP(i,p.frames, ( fun(p.rddt[p.rds*i],p.rsdt[p.rss*i],p) ) )
- return true;
-}
-
-template<class T> BL _d__cop(V fun(T &rv,T &iv,T ra,T ia,OpParam &p),OpParam &p)
-{
- int i;
- if(p.rds == 1 && p.ids == 1 && p.rss == 1 && p.iss == 1)
- _DE_LOOP(i,p.frames, ( fun(p.rddt[i],p.iddt[i],p.rsdt[i],p.isdt[i],p) ) )
- else
- _DF_LOOP(i,p.frames, ( fun(p.rddt[p.rds*i],p.iddt[p.ids*i],p.rsdt[p.rss*i],p.isdt[p.iss*i],p) ) )
- return true;
-}
-
-
-/*
-template<class T,class CL> inline BL _D__run(OpParam &p) { return V__run<T,CL>(p.rsdt,p.rss,p.rddt,p.rds,p.frames); }
-template<class T,class CL> inline BL _D__cun(OpParam &p) { return V__cun<T,CL>(p.rsdt,p.isdt,p.rss,p.iss,p.rddt,p.iddt,p.rds,p.ids,p.frames); }
-template<class T,class CL> inline BL _D__rbin(OpParam &p) { return _F__rbin<T,CL>(p); }
-template<class T,class CL> inline BL _D__cbin(OpParam &p) { return _F__cbin<T,CL>(p); }
-template<class T,class CL> inline BL _D__rop(OpParam &p) { return V__rop<T,OpParam &,CL>(p,p.rsdt,p.rss,p.rddt,p.rds,p.frames); }
-template<class T,class CL> inline BL _D__cop(OpParam &p) { return V__cop<T,OpParam &,CL>(p,p.rsdt,p.isdt,p.rss,p.iss,p.rddt,p.iddt,p.rds,p.ids,p.frames); }
-
-#ifdef VASP_COMPACT
- template<class T,class CL> BL D__run(OpParam &p) { return _d__run<T>(CL::run,p); }
- template<class T,class CL> BL D__cun(OpParam &p) { return _d__cun<T>(CL::cun,p); }
- template<class T,class CL> BL D__rbin(OpParam &p) { return _d__rbin<T>(CL::rbin,p); }
- template<class T,class CL> BL D__cbin(OpParam &p) { return _d__cbin<T>(CL::cbin,p); }
- template<class T,class CL> BL D__rop(OpParam &p) { return _d__rop<T>(CL::rop,p); }
- template<class T,class CL> BL D__cop(OpParam &p) { return _d__cop<T>(CL::cop,p); }
-#else
- template<class T,class CL> BL D__run(OpParam &p) { return CL::run_opt()?_D__run<T,CL>(p):_d__run<T>(CL::run,p); }
- template<class T,class CL> BL D__cun(OpParam &p) { return CL::cun_opt()?_D__cun<T,CL>(p):_d__cun<T>(CL::cun,p); }
- template<class T,class CL> BL D__rbin(OpParam &p) { return CL::rbin_opt()?_D__rbin<T,CL>(p):_d__rbin<T>(CL::rbin,p); }
- template<class T,class CL> BL D__cbin(OpParam &p) { return CL::cbin_opt()?_D__cbin<T,CL>(p):_d__cbin<T>(CL::cbin,p); }
- template<class T,class CL> BL D__rop(OpParam &p) { return CL::rop_opt()?_D__rop<T,CL>(p):_d__rop<T>(CL::rop,p); }
- template<class T,class CL> BL D__cop(OpParam &p) { return CL::cop_opt()?_D__cop<T,CL>(p):_d__cop<T>(CL::cop,p); }
-#endif
-*/
-
-// MSVC 6 can't handle optimization here!! (silently produces wrong code!!!)
-
-#define _D__run(T,CL,p) V__run< T,CL >(p.rsdt,p.rss,p.rddt,p.rds,p.frames)
-#define _D__cun(T,CL,p) V__cun< T,CL >(p.rsdt,p.isdt,p.rss,p.iss,p.rddt,p.iddt,p.rds,p.ids,p.frames)
-#define _D__rbin(T,CL,p) _F__rbin< T,CL >(p)
-#define _D__cbin(T,CL,p) _F__cbin< T,CL >(p)
-#define _D__rop(T,CL,p) V__rop< T,OpParam &,CL >(p,p.rsdt,p.rss,p.rddt,p.rds,p.frames)
-#define _D__cop(T,CL,p) V__cop< T,OpParam &,CL >(p,p.rsdt,p.isdt,p.rss,p.iss,p.rddt,p.iddt,p.rds,p.ids,p.frames)
-
-#if defined(VASP_COMPACT) || (defined(_MSC_VER) && _MSC_VER < 1300)
- #define D__run(T,CL,p) _d__run< T >(CL::run,p)
- #define D__cun(T,CL,p) _d__cun< T >(CL::cun,p)
- #define D__rbin(T,CL,p) _d__rbin< T >(CL::rbin,p)
- #define D__cbin(T,CL,p) _d__cbin< T >(CL::cbin,p)
- #define D__rop(T,CL,p) _d__rop< T >(CL::rop,p)
- #define D__cop(T,CL,p) _d__cop< T >(CL::cop,p)
-#else
- #define D__run(T,CL,p) ( CL::run_opt()?_D__run(T,CL,p):_d__run<T>(CL::run,p) )
- #define D__cun(T,CL,p) ( CL::cun_opt()?_D__cun(T,CL,p):_d__cun<T>(CL::cun,p) )
- #define D__rbin(T,CL,p) ( CL::rbin_opt()?_D__rbin(T,CL,p):_d__rbin<T>(CL::rbin,p) )
- #define D__cbin(T,CL,p) ( CL::cbin_opt()?_D__cbin(T,CL,p):_d__cbin<T>(CL::cbin,p) )
- #define D__rop(T,CL,p) ( CL::rop_opt()?_D__rop(T,CL,p):_d__rop<T>(CL::rop,p) )
- #define D__cop(T,CL,p) ( CL::cop_opt()?_D__cop(T,CL,p):_d__cop<T>(CL::cop,p) )
-#endif
-
-
-// process multi-dimensional data
-
-template<class T> inline BL V__vmulti(BL vbin(I layers,const T *sr,T *dr,const T *ar,I len),I layers,const T *sr,T *dr,const T *ar,I dim,const I *dims)
-{
- if(dim == 1 || !dims) {
- return vbin(layers,sr,dr,ar,dims?dims[0]:dim);
- }
- else if(dim > 1) {
- // calculate stride for next dimensions
- I i,s,str = layers*dims[0];
- for(i = 1; i < dim-1; ++i) str *= dims[i];
- const I dimn = dims[i];
-
- for(s = i = 0; i < dimn; ++i,s += str)
- V__vmulti(vbin,layers,sr+s,dr+s,ar+s,dim-1,dims);
- return true;
- }
- else
- return false;
-}
-
-
-
-} // namespace VecOp
-
-#endif
diff --git a/externals/grill/vasp/source/opfuns.h b/externals/grill/vasp/source/opfuns.h
deleted file mode 100644
index 7abbec6f..00000000
--- a/externals/grill/vasp/source/opfuns.h
+++ /dev/null
@@ -1,529 +0,0 @@
-/*
-
-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_OPFUNS_H
-#define __VASP_OPFUNS_H
-
-#include "opdefs.h"
-#include <math.h>
-#include "util.h"
-
-
-namespace VecOp {
-
- // assignment
-
- template<class T> class f_copy {
- public:
- static I run_opt() { return 3; }
- static V run(T &v,T a) { v = a; }
- static I cun_opt() { return 2; }
- static V cun(T &rv,T &iv,T ra,T ia) { rv = ra,iv = ia; }
- };
-
- template<class T> class f_set {
- public:
- static I rbin_opt() { return 3; }
- static V rbin(T &v,T,T b) { v = b; }
- static I cbin_opt() { return 2; }
- static V cbin(T &rv,T &iv,T,T,T rb,T ib) { rv = rb,iv = ib; }
- };
-
- // arithmetic
-
- template<class T> class f_add {
- public:
- static I rbin_opt() { return 3; }
- static V rbin(T &v,T a,T b) { v = a+b; }
- static I cbin_opt() { return 2; }
- static V cbin(T &rv,T &iv,T ra,T ia,T rb,T ib) { rv = ra+rb,iv = ia+ib; }
- };
-
- template<class T> class f_sub {
- public:
- static I rbin_opt() { return 3; }
- static V rbin(T &v,T a,T b) { v = a-b; }
- static I cbin_opt() { return 2; }
- static V cbin(T &rv,T &iv,T ra,T ia,T rb,T ib) { rv = ra-rb,iv = ia-ib; }
- };
-
- template<class T> class f_subr {
- public:
- static I rbin_opt() { return 2; }
- static V rbin(T &v,T a,T b) { v = b-a; }
- static I cbin_opt() { return 2; }
- static V cbin(T &rv,T &iv,T ra,T ia,T rb,T ib) { rv = rb-ra,iv = ib-ia; }
- };
-
- template<class T> class f_mul {
- public:
- static I rbin_opt() { return 3; }
- static V rbin(T &v,T a,T b) { v = a*b; }
- static I cbin_opt() { return 1; }
- static V cbin(T &rv,T &iv,T ra,T ia,T rb,T ib) { rv = ra*rb-ia*ib, iv = ra*ib+rb*ia; }
- };
-
- template<class T> class f_div {
- public:
- static I rbin_opt() { return 2; }
- static V rbin(T &v,T a,T b) { v = a/b; }
-
- static I cbin_opt() { return 0; }
- static V cbin(T &rv,T &iv,T ra,T ia,T rb,T ib)
- {
- register const T den = sqabs(rb,ib);
- rv = (ra*rb+ia*ib)/den;
- iv = (ia*rb-ra*ib)/den;
- }
- };
-
- template<class T> class f_divr {
- public:
- static I rbin_opt() { return 2; }
- static V rbin(T &v,T a,T b) { v = b/a; }
-
- static I cbin_opt() { return 0; }
- static V cbin(T &rv,T &iv,T ra,T ia,T rb,T ib)
- {
- register const T den = sqabs(ra,ia);
- rv = (rb*ra+ib*ia)/den;
- iv = (ib*ra-rb*ia)/den;
- }
- };
-
- template<class T> class f_mod {
- public:
- static I rbin_opt() { return 0; }
- static V rbin(T &v,T a,T b) { v = fmod(a,b); }
- };
-
- template<class T> class f_abs {
- public:
- static I run_opt() { return 0; }
- static V run(T &v,T a) { v = fabs(a); }
- static I cun_opt() { return 0; }
- static V cun(T &rv,T &iv,T ra,T ia) { rv = sqrt(ra*ra+ia*ia),iv = 0; }
- };
-
- template<class T> class f_sign {
- public:
- static I run_opt() { return 0; }
- static V run(T &v,T a) { v = (a == 0?0:(a < 0?-1.:1.)); }
- };
-
- template<class T> class f_sqr {
- public:
- static I run_opt() { return 3; }
- static V run(T &v,T a) { v = a*a; }
- static I cun_opt() { return 1; }
- static V cun(T &rv,T &iv,T ra,T ia) { rv = ra*ra-ia*ia; iv = ra*ia*2; }
- };
-
- template<class T> class f_ssqr {
- public:
- static I run_opt() { return 0; }
- static V run(T &v,T a) { v = a*fabs(a); }
- };
-
-
- template<class T> class f_sumq {
- public:
- static I rop_opt() { return 2; }
- static V rop(T &,T ra,OpParam &p)
- {
- p.norm.minmax += ra;
- }
- };
-
- // transcendent
-
- template<class T> class f_powi {
- public:
- static I cop_opt() { return 0; }
- static V cop(T &rv,T &iv,T ra,T ia,OpParam &p)
- {
- register const I powi = p.ibin.arg;
- register T rt,it; VecOp::f_sqr<T>::cun(rt,it,ra,ia);
- for(I i = 2; i < powi; ++i) VecOp::f_mul<T>::cbin(rt,it,rt,it,ra,ia);
- rv = rt,iv = it;
- }
- };
-
- template<class T> class f_pow {
- public:
- static I rbin_opt() { return 0; }
- static V rbin(T &v,T a,T b) { v = pow(fabs(a),b)*sgn(a); }
-
- static I cbin_opt() { return 0; }
- static V cbin(T &rv,T &iv,T ra,T ia,T rb,T)
- {
- register const T _abs = sqrt(sqabs(ra,ia));
- if(_abs) {
- register const T _p = pow(_abs,rb)/_abs;
- rv = _p*ra,iv = _p*ia;
- }
- else
- rv = iv = 0;
- }
- protected:
- static T sgn(T x) { return x?(x > 0?1:-1):0; }
- };
-
- template<class T> class f_sqrt {
- public:
- static I run_opt() { return 0; }
- static V run(T &v,T a) { v = sqrt(fabs(a)); }
- };
-
- template<class T> class f_ssqrt {
- public:
- static I run_opt() { return 0; }
- static V run(T &v,T a) { v = sqrt(fabs(a))*sgn(a); }
- };
-
-
- template<class T> class f_exp {
- public:
- static I run_opt() { return 0; }
- static V run(T &v,T a) { v = exp(a); }
- };
-
- template<class T> class f_log {
- public:
- static I run_opt() { return 0; }
- static V run(T &v,T a) { v = log(a); } // \todo detect NANs
- };
-
- // comparisons
-
- template<class T> class f_lwr {
- public:
- static I rbin_opt() { return 1; }
- static V rbin(T &v,T a,T b) { v = a < b?1:0; }
- };
-
- template<class T> class f_gtr {
- public:
- static I rbin_opt() { return 1; }
- static V rbin(T &v,T a,T b) { v = a > b?1:0; }
- };
-
- template<class T> class f_alwr {
- public:
- static I rbin_opt() { return 0; }
- static V rbin(T &v,T a,T b) { v = fabs(a) < fabs(b)?1:0; }
- };
-
- template<class T> class f_agtr {
- public:
- static I rbin_opt() { return 0; }
- static V rbin(T &v,T a,T b) { v = fabs(a) > fabs(b)?1:0; }
- };
-
- template<class T> class f_leq {
- public:
- static I rbin_opt() { return 1; }
- static V rbin(T &v,T a,T b) { v = a <= b?1:0; }
- };
-
- template<class T> class f_geq {
- public:
- static I rbin_opt() { return 1; }
- static V rbin(T &v,T a,T b) { v = a >= b?1:0; }
- };
-
- template<class T> class f_aleq {
- public:
- static I rbin_opt() { return 0; }
- static V rbin(T &v,T a,T b) { v = fabs(a) <= fabs(b)?1:0; }
- };
-
- template<class T> class f_ageq {
- public:
- static I rbin_opt() { return 0; }
- static V rbin(T &v,T a,T b) { v = fabs(a) >= fabs(b)?1:0; }
- };
-
- template<class T> class f_equ {
- public:
- static I rbin_opt() { return 1; }
- static V rbin(T &v,T a,T b) { v = a == b?1:0; }
- };
-
- template<class T> class f_neq {
- public:
- static I rbin_opt() { return 1; }
- static V rbin(T &v,T a,T b) { v = a != b?1:0; }
- };
-
- // min/max
-
- template<class T> class f_min {
- public:
- static I rbin_opt() { return 1; }
- static V rbin(T &v,T a,T b) { v = a < b?a:b; }
-
- static I cbin_opt() { return 0; }
- static V cbin(T &rv,T &iv,T ra,T ia,T rb,T ib)
- {
- if(sqabs(ra,ia) < sqabs(rb,ib)) rv = ra,iv = ia;
- else rv = rb,iv = ib;
- }
- };
-
- template<class T> class f_max {
- public:
- static I rbin_opt() { return 1; }
- static V rbin(T &v,T a,T b) { v = a > b?a:b; }
-
- static I cbin_opt() { return 0; }
- static V cbin(T &rv,T &iv,T ra,T ia,T rb,T ib)
- {
- if(sqabs(ra,ia) > sqabs(rb,ib)) rv = ra,iv = ia;
- else rv = rb,iv = ib;
- }
- };
-
- template<class T> class f_minmax {
- public:
- static I cun_opt() { return 0; }
- static V cun(T &rv,T &iv,T ra,T ia)
- {
- if(ra < ia) rv = ra,iv = ia;
- else rv = ia,iv = ra;
- }
- };
-
- template<class T> class f_minq {
- public:
- static I rop_opt() { return 0; }
- static V rop(T &,T ra,OpParam &p)
- {
- if(ra < p.norm.minmax) p.norm.minmax = ra;
- }
-
- static I cop_opt() { return 0; }
- static V cop(T &,T &,T ra,T ia,OpParam &p)
- {
- register T s = sqabs(ra,ia);
- if(s < p.norm.minmax) p.norm.minmax = s;
- }
- };
-
- template<class T> class f_maxq {
- public:
- static I rop_opt() { return 0; }
- static V rop(T &,T ra,OpParam &p)
- {
- if(ra > p.norm.minmax) p.norm.minmax = ra;
- }
-
- static I cop_opt() { return 0; }
- static V cop(T &,T &,T ra,T ia,OpParam &p)
- {
- register T s = sqabs(ra,ia);
- if(s > p.norm.minmax) p.norm.minmax = s;
- }
- };
-
- template<class T> class f_aminq {
- public:
- static I rop_opt() { return 0; }
- static V rop(T &,T ra,OpParam &p)
- {
- register T s = fabs(ra);
- if(s < p.norm.minmax) p.norm.minmax = s;
- }
- };
-
- template<class T> class f_amaxq {
- public:
- static I rop_opt() { return 0; }
- static V rop(T &,T ra,OpParam &p)
- {
- register T s = fabs(ra);
- if(s > p.norm.minmax) p.norm.minmax = s;
- }
- };
-
-
- // gating
-
- template<class T> class f_gate {
- public:
- static I rbin_opt() { return 0; }
- static V rbin(T &rv,T ra,T rb) { rv = fabs(ra) >= rb?ra:0; }
-
- static I cbin_opt() { return 0; }
- static V cbin(T &rv,T &iv,T ra,T ia,T rb,T)
- {
- register const T _abs = sqabs(ra,ia);
-
- if(_abs >= rb*rb) rv = ra,iv = ia;
- else rv = iv = 0;
- }
- };
-
- template<class T> class f_igate {
- public:
- static I rbin_opt() { return 0; }
- static V rbin(T &rv,T ra,T rb) { rv = fabs(ra) <= rb?ra:0; }
-
- static I cbin_opt() { return 0; }
- static V cbin(T &rv,T &iv,T ra,T ia,T rb,T)
- {
- register const T _abs = sqabs(ra,ia);
-
- if(_abs <= rb*rb) rv = ra,iv = ia;
- else rv = iv = 0;
- }
- };
-
- // complex
-
- template<class T> class f_norm {
- public:
- static I cun_opt() { return 0; }
- static V cun(T &rv,T &iv,T ra,T ia)
- {
- register T f = sqabs(ra,ia);
- if(f) { f = 1./sqrt(f); rv = ra*f,iv = ia*f; }
- else rv = iv = 0;
- }
- };
-
- template<class T> class f_conj {
- public:
- static I cun_opt() { return 2; }
- static V cun(T &,T &iv,T,T ia) { iv = -ia; }
- };
-
- template<class T> class f_polar {
- public:
- static I cun_opt() { return 0; }
- static V cun(T &rv,T &iv,T ra,T ia) { rv = sqrt(sqabs(ra,ia)),iv = arg(ra,ia); }
- };
-
- template<class T> class f_rect {
- public:
- static I cun_opt() { return 0; }
- static V cun(T &rv,T &iv,T ra,T ia) { rv = ra*cos(ia),iv = ra*sin(ia); }
- };
-
- template<class T> class f_radd {
- public:
- static I cbin_opt() { return 0; }
- static V cbin(T &rv,T &iv,T ra,T ia,T rb,T)
- {
- register const T _abs = sqrt(sqabs(ra,ia))+rb;
- register const T _phi = arg(ra,ia);
-
- rv = _abs*cos(_phi),iv = _abs*sin(_phi);
- }
- };
-
- // extra
-
- template<class T> class f_fix {
- public:
- /*! \brief Bashes denormals and NANs to zero
-
- \param a argument list
- \param v destination vasp (NULL for in-place operation)
- \return normalized destination vasp
- */
- static I run_opt() { return 0; }
- static V run(T &v,T a)
- {
- if(a != a) // NAN
- v = 0;
- else {
- // denormal bashing (doesn't propagate to the next stage)
-
- static const T anti_denormal = (T)1.e-18;
- a += anti_denormal;
- a -= anti_denormal;
- v = a;
- }
- }
- };
-
-}
-
-
-
-#define DEFOP(T,FUN,OP,KIND) \
-namespace VecOp { inline BL FUN(OpParam &p) { return D__##KIND(T,f_##OP < T > ,p); } }
-
-
-#define DEFVEC_R(T,OP) \
- static BL r_##OP (I len,T *dr,I rds,const T *sr,I rss) { return VecOp::V__rbin<T,VecOp::f_##OP <T> >(sr,rss,dr,rds,len); } \
- static BL v_##OP##_(I layers,const T *sr,T *dr,const T *ar,I len) { return VecOp::V__vbin<T,VecOp::f_##OP <T> >(layers,sr,dr,ar,len); } \
- static BL v_##OP (I dim,const I *dims,I layers,T *dr,const T *sr,const T *ar) { return VecOp::V__vmulti<T>(v_##OP##_,layers,sr,dr,ar,dim,dims); }
-
-#define DEFVEC_C(T,OP) \
- static BL c_##OP (I len,T *dr,T *di,I rds,I ids,const T *sr,I rss,I iss) { return VecOp::V__cbin<T,VecOp::f_##OP <T> >(sr,rss,iss,dr,rds,ids,len); }
-
-#define DEFVEC_B(T,OP) DEFVEC_R(T,OP) DEFVEC_C(T,OP)
-
-
-template<class T>
-class VecFun {
-public:
- DEFVEC_B(T,copy)
-
- DEFVEC_B(T,add)
- DEFVEC_B(T,sub)
- DEFVEC_B(T,subr)
- DEFVEC_B(T,mul)
- DEFVEC_B(T,div)
- DEFVEC_B(T,divr)
- DEFVEC_R(T,mod)
- DEFVEC_B(T,abs)
- DEFVEC_R(T,sign)
- DEFVEC_B(T,sqr)
- DEFVEC_R(T,ssqr)
-
- DEFVEC_C(T,powi)
- DEFVEC_B(T,pow)
- DEFVEC_R(T,sqrt)
- DEFVEC_R(T,ssqrt)
- DEFVEC_R(T,exp)
- DEFVEC_R(T,log)
-
- DEFVEC_R(T,lwr)
- DEFVEC_R(T,gtr)
- DEFVEC_R(T,alwr)
- DEFVEC_R(T,agtr)
- DEFVEC_R(T,leq)
- DEFVEC_R(T,geq)
- DEFVEC_R(T,aleq)
- DEFVEC_R(T,ageq)
- DEFVEC_R(T,equ)
- DEFVEC_R(T,neq)
-
- DEFVEC_B(T,min)
- DEFVEC_B(T,max)
- DEFVEC_C(T,minmax)
- DEFVEC_C(T,gate)
- DEFVEC_C(T,igate)
-
- DEFVEC_C(T,norm)
- DEFVEC_C(T,conj)
- DEFVEC_C(T,polar)
- DEFVEC_C(T,rect)
- DEFVEC_C(T,radd)
-
- DEFVEC_R(T,fix)
-};
-
-
-
-#endif
diff --git a/externals/grill/vasp/source/oploop.h b/externals/grill/vasp/source/oploop.h
deleted file mode 100644
index ec805c13..00000000
--- a/externals/grill/vasp/source/oploop.h
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
-
-VASP modular - vector assembling signal processor / objects for Max/MSP and PD
-
-Copyright (c) 2002-2006 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-#ifndef __VASP_OPLOOP_H
-#define __VASP_OPLOOP_H
-
-#define _D_BLOCK 4096
-
-#define _D_MIN(a,b) ((a) < (b)?(a):(b))
-
-#ifdef FLEXT_THREADS
-
- #define _D_LOOP(VAR,LEN) { \
- for(register int __i__ = 0; __i__ < LEN; flext_base::ThrYield()) { \
- register const I __m__ = _D_MIN(LEN,__i__+_D_BLOCK); \
- for(; __i__ < __m__; ++__i__) { VAR = __i__;
-
- #define _E_LOOP } if(__i__ < __m__) break; }}
-
- #define _D_WHILE(COND) { \
- for(; (COND) ; flext_base::ThrYield()) { \
- register I __i__ = 0; \
- for(; __i__ < _D_BLOCK && (COND); ++__i__) {
-
- #define _E_WHILE } if(__i__ < _D_BLOCK) break; }}
-
-#else
-
- #define _D_LOOP(VAR,LEN) { \
- for(VAR = 0; VAR < LEN; ++VAR) {
-
- #define _E_LOOP }}
-
- #define _D_WHILE(COND) { \
- while(COND) {
-
- #define _E_WHILE }}
-
-#endif
-
-
-#define _DE_WHILE(COND,BODY) { _D_WHILE(COND) BODY; _E_WHILE }
-#define _DF_LOOP(VAR,LEN,BODY) { _D_LOOP(VAR,LEN) BODY; _E_LOOP }
-
-#ifdef VASP_COMPACT
-
- #define _DE_LOOP(VAR,LEN,BODY) _DF_LOOP(VAR,LEN,BODY)
-
-#else
-
- #ifdef FLEXT_THREADS
-
- #define _DE_LOOP(VAR,LEN,BODY) { \
- for(VAR = 0; VAR < LEN; flext_base::ThrYield()) { \
- register const I __m__ = _D_MIN(LEN,VAR+_D_BLOCK); \
- for(; VAR <= __m__-4; ) { \
- BODY; ++VAR; \
- BODY; ++VAR; \
- BODY; ++VAR; \
- BODY; ++VAR; \
- } \
- for(; VAR < __m__; ++VAR) { \
- BODY; \
- } \
- } \
- }
-
- #else
-
- #define _DE_LOOP(VAR,LEN,BODY) { \
- for(VAR = 0; VAR <= LEN-4; ) { \
- BODY; ++VAR; \
- BODY; ++VAR; \
- BODY; ++VAR; \
- BODY; ++VAR; \
- } \
- for(; VAR < LEN; ++VAR) { \
- BODY; \
- } \
- }
-
- #endif
-
-#endif
-
-#define _DQ_LOOP(UNROLL,VAR,LEN,BODY) { if(UNROLL) _DE_LOOP(VAR,LEN,BODY) else _DF_LOOP(VAR,LEN,BODY) }
-
-#endif
diff --git a/externals/grill/vasp/source/opparam.cpp b/externals/grill/vasp/source/opparam.cpp
deleted file mode 100644
index 1c1fd450..00000000
--- a/externals/grill/vasp/source/opparam.cpp
+++ /dev/null
@@ -1,255 +0,0 @@
-/*
-
-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.
-
-*/
-
-#include "main.h"
-#include "opparam.h"
-//#include <math.h>
-
-/*
-// Duplication of breakpoint lists should be avoided
-OpParam::Arg &OpParam::Arg::operator =(const Arg &op)
-{
- Clear();
-
- switch(argtp = op.argtp) {
- case arg_x: x = op.x; break;
- case arg_v: v = op.v; break;
- case arg_bp: {
- // Copy breakpoint list (find a different way, e.g. store them in a pool)
- bp.pts = op.bp.pts;
- bp.pt = new R[bp.pts];
- for(I i = 0; i < bp.pts; ++i)
- bp.pt[i] = op.bp.pt[i];
- break;
- }
- }
-
- return *this;
-}
-*/
-V OpParam::Arg::Clear()
-{
-// if(argtp == arg_bp && bp.pt) delete[] bp.pt;
- argtp = arg_;
-}
-
-OpParam::Arg &OpParam::Arg::SetX(S r,S i)
-{
- Clear();
- argtp = arg_x;
- x.r = r,x.i = i;
- return *this;
-}
-
-OpParam::Arg &OpParam::Arg::SetV(S *r,I rs,S *i,I is)
-{
- Clear();
- argtp = arg_v;
- v.rdt = r,v.rs = rs;
- v.idt = i,v.is = is;
- return *this;
-}
-
-/*
-OpParam::Arg &OpParam::Arg::SetB(I pts,const R *pt)
-{
- Clear();
- argtp = arg_bp;
- bp.pts = pts;
- bp.pt = new R[pts];
- for(I ix = 0; ix < pts; ix) bp.pt[ix] = pt[ix];
- return *this;
-}
-*/
-
-OpParam::Arg &OpParam::Arg::SetE(const Env *env)
-{
- Clear();
- argtp = arg_env;
- e.env = env;
- return *this;
-}
-
-
-/*
-V OpParam::SDR_Rev() { SR_Rev(); DR_Rev(); }
-V OpParam::SDI_Rev() { SI_Rev(); DI_Rev(); }
-V OpParam::SDC_Rev() { SDR_Rev(); SDI_Rev(); }
-V OpParam::ADR_Rev() { AR_Rev(); DR_Rev(); }
-V OpParam::ADI_Rev() { AI_Rev(); DI_Rev(); }
-V OpParam::ADC_Rev() { ADR_Rev(); ADI_Rev(); }
-V OpParam::SADR_Rev() { SR_Rev(); AR_Rev(); DR_Rev(); }
-V OpParam::SADI_Rev() { SI_Rev(); AI_Rev(); DI_Rev(); }
-V OpParam::SADC_Rev() { SADR_Rev(); SADI_Rev(); }
-*/
-
-OpParam::OpParam(const C *opnm,I nargs):
- opname(opnm),frames(0),args(0),arg(NULL),
- /*part(false),*/ ovrlap(false),revdir(false),oddrem(false)
-{
- InitArgs(nargs);
-}
-
-OpParam::~OpParam() { Clear(); }
-
-V OpParam::InitArgs(I n)
-{
- if(arg) Clear();
- args = n;
- if(args) arg = new Arg[args];
-}
-
-V OpParam::Clear()
-{
- if(arg) { delete[] arg; arg = NULL; }
- args = 0;
-}
-
-
-/*! \brief Reverse direction of real vector operation
- \todo Check for existence of vectors!
-*/
-V OpParam::R_Rev()
-{
-
- SR_Rev();
- DR_Rev();
- AR_Rev();
- revdir = true;
-}
-
-/*! \brief Reverse direction of complex vector operation
- \todo Check for existence of vectors!
-*/
-V OpParam::C_Rev()
-{
- SR_Rev(); SI_Rev();
- DR_Rev(); DI_Rev();
- AR_Rev(); AI_Rev();
- revdir = true;
-}
-
-
-V OpParam::AR_Rev(I bl)
-{
- if(arg[bl].argtp == Arg::arg_v && arg[bl].v.rdt)
- arg[bl].v.rdt -= (frames-1)*(arg[bl].v.rs = -arg[bl].v.rs);
-}
-
-V OpParam::AI_Rev(I bl)
-{
- if(arg[bl].argtp == Arg::arg_v && arg[bl].v.idt)
- arg[bl].v.idt -= (frames-1)*(arg[bl].v.is = -arg[bl].v.is);
-}
-
-BL OpParam::AR_In(I bl) const
-{
- return arg[bl].argtp == Arg::arg_v && arg[bl].v.rdt && rddt > arg[bl].v.rdt && rddt < arg[bl].v.rdt+frames*arg[bl].v.rs;
-}
-
-BL OpParam::AI_In(I bl) const
-{
- return arg[bl].argtp == Arg::arg_v && arg[bl].v.idt && iddt > arg[bl].v.idt && iddt < arg[bl].v.idt+frames*arg[bl].v.is;
-}
-
-BL OpParam::AR_Can(I bl) const
-{
- return arg[bl].argtp != Arg::arg_v || !arg[bl].v.rdt || arg[bl].v.rdt <= rddt || arg[bl].v.rdt >= rddt+frames*rds;
-}
-
-BL OpParam::AI_Can(I bl) const
-{
- return arg[bl].argtp != Arg::arg_v || !arg[bl].v.idt || arg[bl].v.idt <= iddt || arg[bl].v.idt >= iddt+frames*ids;
-}
-
-BL OpParam::AR_Ovr(I bl) const
-{
- return arg[bl].argtp == Arg::arg_v && arg[bl].v.rdt && rddt != arg[bl].v.rdt && rddt < arg[bl].v.rdt+frames*arg[bl].v.rs && arg[bl].v.rdt < rddt+frames*rds;
-}
-
-BL OpParam::AI_Ovr(I bl) const
-{
- return arg[bl].argtp == Arg::arg_v && arg[bl].v.idt && iddt != arg[bl].v.idt && iddt < arg[bl].v.idt+frames*arg[bl].v.is && arg[bl].v.idt < iddt+frames*ids;
-}
-
-
-
-BL OpParam::AR_In() const
-{
- for(I i = 0; i < args; ++i)
- if(AR_In(i)) return true;
- return false;
-}
-
-BL OpParam::AI_In() const
-{
- for(I i = 0; i < args; ++i)
- if(AI_In(i)) return true;
- return false;
-}
-
-BL OpParam::AR_Can() const
-{
- for(I i = 0; i < args; ++i)
- if(!AR_Can(i)) return false;
- return true;
-}
-
-BL OpParam::AI_Can() const
-{
- for(I i = 0; i < args; ++i)
- if(!AI_Can(i)) return false;
- return true;
-}
-
-BL OpParam::AR_Ovr() const
-{
- for(I i = 0; i < args; ++i)
- if(!AR_Ovr(i)) return false;
- return true;
-}
-
-BL OpParam::AI_Ovr() const
-{
- for(I i = 0; i < args; ++i)
- if(!AI_Ovr(i)) return false;
- return true;
-}
-
-
-V OpParam::AR_Rev()
-{
- for(I i = 0; i < args; ++i) AR_Rev(i);
-}
-
-V OpParam::AI_Rev()
-{
- for(I i = 0; i < args; ++i) AI_Rev(i);
-}
-
-V OpParam::SkipOddMiddle()
-{
- if(symm == 0 && oddrem) {
- // don't process middle sample!
- if(revdir) rsdt += rss,rddt += rds;
- frames--;
- }
-}
-
-V OpParam::SkipOddMiddle(S m)
-{
- if(symm == 0 && oddrem) {
- // set and skip middle sample!
- frames--;
- if(revdir) *rddt = m,rsdt += rss,rddt += rds;
- else rddt[frames] = m;
- }
-}
-
diff --git a/externals/grill/vasp/source/opparam.h b/externals/grill/vasp/source/opparam.h
deleted file mode 100644
index 1c0193d4..00000000
--- a/externals/grill/vasp/source/opparam.h
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
-
-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_OPPARAM_H
-#define __VASP_OPPARAM_H
-
-#include "vecblk.h"
-#include "arg.h"
-
-class OpParam {
-public:
- OpParam(const C *opnm,I args);
- ~OpParam();
-
- V InitArgs(I nargs);
- V Clear();
-
- BL HasArg() const { return arg != NULL; }
-
- const C *opName() const { return opname; }
-
- // check for overlap
- // \remark if on same vector, stride is the same for src, arg, dst!
- inline BL SR_In() const { return rddt > rsdt && rddt < rsdt+frames*rss; }
- inline BL SI_In() const { return iddt > isdt && iddt < isdt+frames*iss; }
- BL AR_In(I bl) const;
- BL AI_In(I bl) const;
- BL AR_In() const;
- BL AI_In() const;
-
- // Can we reverse direction?
- inline BL SR_Can() const { return rsdt <= rddt || rsdt >= rddt+frames*rds; }
- inline BL SI_Can() const { return isdt <= iddt || isdt >= iddt+frames*ids; }
- BL AR_Can(I bl) const;
- BL AI_Can(I bl) const;
- BL AR_Can() const;
- BL AI_Can() const;
-
- // does it overlap? (works only with rss,rds,ras.... > 0)
- inline BL SR_Ovr() const { return rddt != rsdt && rddt < rsdt+frames*rss && rsdt < rddt+frames*rds; }
- inline BL SI_Ovr() const { return iddt != isdt && iddt < isdt+frames*iss && isdt < iddt+frames*ids; }
- BL AR_Ovr(I bl) const;
- BL AI_Ovr(I bl) const;
- BL AR_Ovr() const;
- BL AI_Ovr() const;
-
- V AR_Rev();
- V AI_Rev();
-
- V R_Rev();
- V C_Rev();
-
- V SkipOddMiddle();
- V SkipOddMiddle(S m);
-
- const C *opname;
- I frames,symm,args;
- BL ovrlap,revdir,oddrem;
- S *rsdt,*isdt; I rss,iss;
- S *rddt,*iddt; I rds,ids;
-
- class Arg
- {
- public:
- Arg(): argtp(arg_) {}
-// Arg(const Arg &op) { operator =(op); }
- ~Arg() { Clear(); }
- V Clear();
-
- BL Is() const { return argtp != arg_; }
-
-// Arg &operator =(const Arg &op);
-// Arg &operator =(const Argument &arg);
-
- Arg &SetX(S r,S i = 0);
- Arg &SetV(S *r,I rs,S *i = NULL,I is = 0);
- Arg &SetE(const Env *bp);
-
- struct env_t { const Env *env; };
- struct v_t { S *rdt,*idt; I rs,is; };
- struct x_t { R r,i; };
-
- enum { arg_ = 0,arg_x,arg_v,arg_env } argtp;
- union {
- x_t x;
- v_t v;
- env_t e;
- };
- };
-
- Arg *arg;
-
- union {
- struct { R coef,carry; I rep; } flt;
- struct { R carry; I rep; } intdif;
- struct { BL cx; R density; I cnt; } peaks;
- struct { R ph,phinc; } gen;
- struct { R factor,center; I mode,fill; } tilt;
- struct { R cur,inc; } bvl;
- struct { R sh; I ish; I fill; } sh;
- struct { I wndtp; BL inv,mul; R p1,p2,p3; } wnd;
- struct { R minmax,scl; } norm;
- struct { I arg; } ibin;
- struct { R arg; } rbin;
- struct { R rarg,iarg; } cbin;
- struct { I *order; } perm;
- struct { R val; I offs,dif,dir,slope; BL incl; } srch;
- };
-
-private:
- // reverse direction
- inline V SR_Rev() { rsdt -= (frames-1)*(rss = -rss); }
- inline V SI_Rev() { isdt -= (frames-1)*(iss = -iss); }
- V AR_Rev(I bl);
- V AI_Rev(I bl);
- inline V DR_Rev() { rddt -= (frames-1)*(rds = -rds); }
- inline V DI_Rev() { iddt -= (frames-1)*(ids = -ids); }
-
-};
-
-#endif
diff --git a/externals/grill/vasp/source/oppermute.h b/externals/grill/vasp/source/oppermute.h
deleted file mode 100644
index 45221a1f..00000000
--- a/externals/grill/vasp/source/oppermute.h
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
-
-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_OPPERMUTE_H
-#define __VASP_OPPERMUTE_H
-
-#include "opparam.h"
-#include "oploop.h"
-
-#define PERMTMPL
-#define MAXPERMDIM 2
-
-template<class T>
-inline void permswap(T &a,T &b) { register T t = a; a = b; b = t; }
-
-#ifdef PERMTMPL
-template<class T,int origination(int pos, int sz,OpParam &p)>
-void permutation1(OpParam &p)
-#else
-template<class T>
-void permutation1(OpParam &p,int (*origination)(int pos, int sz,OpParam &p))
-#endif
-{
- T *ddt = p.rddt;
- const I ds = p.rds;
- const I sz = p.frames;
-
- if(ddt != p.rsdt) {
- // not in place
- const T *sdt = p.rsdt;
- const I ss = p.rss;
- I i;
- _DE_LOOP(i,sz, ( ddt[origination(i,sz,p)*ds] = sdt[i*ss] ) )
- }
- else {
- // in place
- // \todo try to come from both sides!
- I i;
- _D_LOOP(i,sz-1)
- int cur = i;
- do { cur = origination(cur,sz,p); } while(cur < i);
- if(cur > i) {
- // swap
- permswap(ddt[cur*ds],ddt[i*ds]);
- }
- _E_LOOP
- }
-}
-
-#ifdef PERMTMPL
-template<class T,int origination(int pos, int sz,OpParam &p)>
-void permutation2(OpParam &p)
-#else
-template<class T>
-void permutation2(OpParam &p,int (*origination)(int pos, int sz,OpParam &p))
-#endif
-{
- T *rddt = p.rddt,*iddt = p.iddt;
- const I rds = p.rds,ids = p.ids;
- const I sz = p.frames;
- bool rinpl = rddt == p.rsdt,iinpl = iddt == p.isdt;
-
- if(rinpl == iinpl) {
- // re and im both in place
- I i;
- _D_LOOP(i,sz-1)
- int cur = i;
- do { cur = origination(cur,sz,p); } while(cur < i);
- if(cur > i) {
- // swap
- permswap(rddt[cur*rds],rddt[i*rds]);
- permswap(iddt[cur*ids],iddt[i*ids]);
- }
- _E_LOOP
- }
- else {
- if(!rinpl) {
- const T *sdt = p.rsdt;
- const I ss = p.rss;
- I i;
- if(ss == 1 && rds == 1)
- _DE_LOOP(i,sz, ( *(rddt++) = *(sdt++) ) )
- else
- _DE_LOOP(i,sz, ( *rddt = *sdt,rddt += rds,sdt += ss ) )
- rddt = p.rddt;
- }
- else permutation1<T>(p,origination);
-
- if(!iinpl) {
- const T *sdt = p.isdt;
- const I ss = p.iss;
- I i;
- if(ss == 1 && ids == 1)
- _DE_LOOP(i,sz, ( *(iddt++) = *(sdt++) ) )
- else
- _DE_LOOP(i,sz, ( *iddt = *sdt,iddt += ids,sdt += ss ) )
- iddt = p.iddt;
- }
- else {
- permswap(p.rddt,p.iddt); permswap(p.rds,p.ids);
- permutation1<T>(p,origination);
- permswap(p.rddt,p.iddt); permswap(p.rds,p.ids);
- }
- }
-}
-
-#ifdef PERMTMPL
-#define PERMUTATION(tp,dim,p,func) permutation ## dim <tp,func>(p)
-#else
-#define PERMUTATION(tp,dim,p,func) permutation ## dim <tp>(p,func)
-#endif
-
-#endif
-
diff --git a/externals/grill/vasp/source/ops.h b/externals/grill/vasp/source/ops.h
deleted file mode 100644
index 00dc8e44..00000000
--- a/externals/grill/vasp/source/ops.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
-
-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/source/ops_arith.cpp b/externals/grill/vasp/source/ops_arith.cpp
deleted file mode 100644
index eb05f8a0..00000000
--- a/externals/grill/vasp/source/ops_arith.cpp
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
-
-VASP modular - vector assembling signal processor / objects for Max/MSP and PD
-
-Copyright (c) 2002-2003 Thomas Grill (xovo@gmx.net)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-#include "main.h"
-#include "ops_arith.h"
-#include "opdefs.h"
-#include "util.h"
-#include <math.h>
-
-
-VASP_BINARY("vasp.+",add,true,VASP_ARG_R(0),"Adds a value, envelope or vasp")
-VASP_BINARY("vasp.-",sub,true,VASP_ARG_R(0),"Subtracts a value, envelope or vasp")
-VASP_BINARY("vasp.!-",subr,true,VASP_ARG_R(0),"Reverse subtracts a value, envelope or vasp")
-VASP_BINARY("vasp.*",mul,true,VASP_ARG_R(1),"Multiplies with a value, envelope or vasp")
-VASP_BINARY("vasp./",div,true,VASP_ARG_R(1),"Divides by a value, envelope or vasp")
-VASP_BINARY("vasp.!/",divr,true,VASP_ARG_R(1),"Reverse divides by a value, envelope or vasp")
-VASP_BINARY("vasp.%",mod,true,VASP_ARG_R(0),"Calculates the remainder of the division by a value, envelope or vasp")
-
-// -----------------------------------------------------
-
-VASP_UNARY("vasp.sqr",sqr,true,"Calculates the square")
-VASP_UNARY("vasp.ssqr",ssqr,true,"Calculates the square with preservation of the sign")
-
-// -----------------------------------------------------
-
-VASP_UNARY("vasp.sign",sign,true,"Calculates the sign (signum function)")
-VASP_UNARY("vasp.abs",abs,true,"Calculates the absolute value")
-
-
-
-/*! \class vasp_qsum
- \remark \b vasp.sum?
- \brief Get sum of sample values
- \since 0.1.3
- \param inlet vasp - is stored and output triggered
- \param inlet bang - triggers output
- \param inlet set - vasp to be stored
- \retval outlet float - sample value sum
-
- \todo Should we provide a cmdln default vasp?
- \todo Should we inhibit output for invalid vasps?
- \remark Returns 0 for a vasp with 0 frames
-*/
-class vasp_qsum:
- public vasp_unop
-{
- FLEXT_HEADER(vasp_qsum,vasp_unop)
-
-public:
- vasp_qsum(): vasp_unop(true,XletCode(xlet_float,0)) {}
-
- virtual Vasp *do_opt(OpParam &p)
- {
- p.norm.minmax = 0;
- CVasp cref(ref);
- Vasp *ret = VaspOp::m_qsum(p,cref);
- return ret;
- }
-
- virtual Vasp *tx_work()
- {
- OpParam p(thisName(),0);
- Vasp *ret = do_opt(p);
- ToOutFloat(1,p.norm.minmax);
- return ret;
- }
-
- virtual V m_help() { post("%s - Get the sum of a vasp's sample values",thisName()); }
-};
-
-VASP_LIB("vasp.sum?",vasp_qsum)
-
diff --git a/externals/grill/vasp/source/ops_arith.h b/externals/grill/vasp/source/ops_arith.h
deleted file mode 100644
index dd8f88b3..00000000
--- a/externals/grill/vasp/source/ops_arith.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
-
-VASP modular - vector assembling signal processor / objects for Max/MSP and PD
-
-Copyright (c) 2002-2003 Thomas Grill (xovo@gmx.net)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-*/
-
-#ifndef __VASP_OPS_ARITH_H
-#define __VASP_OPS_ARITH_H
-
-#include "opfuns.h"
-
-// Arithmetic math functions
-
-DEFOP(S,d_add,add,rbin)
-DEFOP(S,d_sub,sub,rbin)
-DEFOP(S,d_subr,subr,rbin)
-DEFOP(S,d_mul,mul,rbin)
-DEFOP(S,d_div,div,rbin)
-DEFOP(S,d_divr,divr,rbin)
-DEFOP(S,d_mod,mod,rbin)
-
-DEFOP(S,d_sqr,sqr,run)
-DEFOP(S,d_ssqr,ssqr,run)
-
-DEFOP(S,d_sign,sign,run)
-DEFOP(S,d_abs,abs,run)
-
-DEFOP(S,d_sumq,sumq,rop)
-
-
-namespace VaspOp {
-
- inline Vasp *m_add(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst = NULL) { return m_rbin(p,src,arg,dst,VecOp::d_add); } // add to (one vec or real)
- inline Vasp *m_sub(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst = NULL) { return m_rbin(p,src,arg,dst,VecOp::d_sub); } // sub from (one vec or real)
- inline Vasp *m_subr(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst = NULL) { return m_rbin(p,src,arg,dst,VecOp::d_subr); } // reverse sub from (one vec or real)
- inline Vasp *m_mul(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst = NULL) { return m_rbin(p,src,arg,dst,VecOp::d_mul); } // mul with (one vec or real)
- inline Vasp *m_div(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst = NULL) { return m_rbin(p,src,arg,dst,VecOp::d_div); } // div by (one vec or real)
- inline Vasp *m_divr(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst = NULL) { return m_rbin(p,src,arg,dst,VecOp::d_divr); } // reverse div by (one vec or real)
- inline Vasp *m_mod(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst = NULL) { return m_rbin(p,src,arg,dst,VecOp::d_mod); } // modulo by (one vec or real)
-
- inline Vasp *m_sqr(OpParam &p,CVasp &src,CVasp *dst = NULL) { return m_run(p,src,dst,VecOp::d_sqr); } // unsigned square
- inline Vasp *m_ssqr(OpParam &p,CVasp &src,CVasp *dst = NULL) { return m_run(p,src,dst,VecOp::d_ssqr); } // signed square
-
- inline Vasp *m_sign(OpParam &p,CVasp &src,CVasp *dst = NULL) { return m_run(p,src,dst,VecOp::d_sign); } // sign function
- inline Vasp *m_abs(OpParam &p,CVasp &src,CVasp *dst = NULL) { return m_run(p,src,dst,VecOp::d_abs); } // absolute values
-
- inline Vasp *m_qsum(OpParam &p,CVasp &src) { return m_run(p,src,NULL,VecOp::d_sumq); } // get sum of sample values
-}
-
-#endif
diff --git a/externals/grill/vasp/source/ops_assign.cpp b/externals/grill/vasp/source/ops_assign.cpp
deleted file mode 100644
index e0adc444..00000000
--- a/externals/grill/vasp/source/ops_assign.cpp
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
-
-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.
-
-*/
-
-#include "main.h"
-#include "ops_assign.h"
-#include "opdefs.h"
-
-
-VASP_BINARY("vasp.set vasp.=",set,false,VASP_ARG_R(0),"Assigns a value, envelope or vasp")
-VASP_BINARY("vasp.cset vasp.c=",cset,false,VASP_ARG_R(0),"Assigns a complex value, real envelope or vasp")
-
-
-
-Vasp *VaspOp::m_copy(OpParam &p,CVasp &src,CVasp &arg)
-{
- Vasp *s = NULL,*d = NULL;
- RVecBlock *vecs = GetRVecs(p.opname,src,&arg);
- if(vecs) {
- d = DoOp(vecs,VecOp::d_copy,p);
- s = vecs->SrcVasp();
- if(d) arg = *d; else { arg.Clear(); delete d; }
- delete vecs;
- }
- return s;
-}
-
-Vasp *VaspOp::m_ccopy(OpParam &p,CVasp &src,CVasp &arg)
-{
- Vasp *s = NULL,*d = NULL;
- CVecBlock *vecs = GetCVecs(p.opname,src,&arg);
- if(vecs) {
- d = DoOp(vecs,VecOp::d_ccopy,p);
- s = vecs->SrcVasp();
- if(d) arg = *d; else { arg.Clear(); delete d; }
- delete vecs;
- }
- return s;
-}
-
-
-class vasp_copy:
- public vasp_anyop
-{
- FLEXT_HEADER(vasp_copy,vasp_anyop)
-public:
-
- vasp_copy(I argc,const t_atom *argv): vasp_anyop(argc,argv,VASP_ARG(),true,XletCode(xlet_any,0)) {}
-
- virtual V m_to(I,const t_atom *) { post("s - destination vasp is ignored!",thisName()); }
-
- virtual Vasp *do_copy(OpParam &p,CVasp &dst) { CVasp cref(ref); return VaspOp::m_copy(p,cref,dst); }
-
- virtual Vasp *tx_work(const Argument &arg)
- {
- OpParam p(thisName(),0);
-
- if(arg.CanbeVasp()) {
- CVasp dst(arg.GetAVasp());
- Vasp *ret = do_copy(p,dst);
- ToOutVasp(1,dst);
- return ret;
- }
- else {
- post("%s - argument is not a valid vasp!",thisName()); // \todo check earlier!
- return NULL;
- }
- }
-
- virtual V m_help() { post("%s - Copies the triggering vasp to the argument vasp",thisName()); }
-};
-VASP_LIB_V("vasp.copy vasp.->",vasp_copy)
-
-
-class vasp_ccopy:
- public vasp_copy
-{
- FLEXT_HEADER(vasp_ccopy,vasp_copy)
-public:
-
- vasp_ccopy(I argc,const t_atom *argv): vasp_copy(argc,argv) {}
-
- virtual Vasp *do_copy(OpParam &p,CVasp &dst) { CVasp cref(ref); return VaspOp::m_ccopy(p,cref,dst); }
-
- virtual V m_help() { post("%s - Copies complex pairs of the triggering vasp to the argument vasp",thisName()); }
-};
-VASP_LIB_V("vasp.ccopy vasp.c->",vasp_ccopy)
-
-
diff --git a/externals/grill/vasp/source/ops_assign.h b/externals/grill/vasp/source/ops_assign.h
deleted file mode 100644
index 78a3392e..00000000
--- a/externals/grill/vasp/source/ops_assign.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
-
-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_ASSIGN_H
-#define __VASP_OPS_ASSIGN_H
-
-#include "opfuns.h"
-
-// Assignment functions
-
-DEFOP(S,d_copy,copy,run)
-DEFOP(S,d_ccopy,copy,cun)
-
-DEFOP(S,d_set,set,rbin)
-DEFOP(S,d_cset,set,cbin)
-
-
-namespace VaspOp {
- inline Vasp *m_set(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst = NULL) { return m_rbin(p,src,arg,dst,VecOp::d_set); } // copy to (one vec or real)
- inline Vasp *m_cset(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst = NULL) { return m_cbin(p,src,arg,dst,VecOp::d_cset); } // complex copy (pairs of vecs or complex)
-
- Vasp *m_copy(OpParam &p,CVasp &src,CVasp &dst);
- Vasp *m_ccopy(OpParam &p,CVasp &src,CVasp &dst);
-}
-
-#endif
diff --git a/externals/grill/vasp/source/ops_carith.cpp b/externals/grill/vasp/source/ops_carith.cpp
deleted file mode 100644
index 5a964cca..00000000
--- a/externals/grill/vasp/source/ops_carith.cpp
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
-
-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.
-
-*/
-
-#include "main.h"
-#include "ops_carith.h"
-#include "ops_assign.h"
-#include "opdefs.h"
-#include "util.h"
-#include <math.h>
-
-
-VASP_BINARY("vasp.c+",cadd,true,VASP_ARG_R(0),"adds a complex value or vasp")
-VASP_BINARY("vasp.c-",csub,true,VASP_ARG_R(0),"subtracts a complex value or vasp")
-VASP_BINARY("vasp.c!-",csubr,true,VASP_ARG_R(0),"reverse subtracts a complex value or vasp")
-VASP_BINARY("vasp.c*",cmul,true,VASP_ARG_R(1),"multiplies by a complex value or vasp")
-VASP_BINARY("vasp.c/",cdiv,true,VASP_ARG_R(1),"divides by a complex value or vasp")
-VASP_BINARY("vasp.c!/",cdivr,true,VASP_ARG_R(1),"reverse divides by a complex value or vasp")
-
-
-// -----------------------------------------------------
-
-
-VASP_UNARY("vasp.csqr",csqr,true,"complex square")
-
-// -----------------------------------------------------
-
-Vasp *VaspOp::m_cpowi(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst)
-{
- Vasp *ret = NULL;
- CVecBlock *vecs = GetCVecs(p.opname,src,dst);
- if(vecs) {
- I powi = 1;
- if(arg.IsList() && arg.GetList().Count() >= 1 && flext::CanbeInt(arg.GetList()[0]))
- powi = flext::GetAInt(arg.GetList()[0]);
- else
- post("%s - power arg is invalid -> set to 1",p.opname);
-
- if(powi < 0) {
- post("%s - negative integer power is not allowed",p.opname);
- }
- else {
- switch(powi) {
- case 0: {
- p.cbin.rarg = 1,p.cbin.iarg = 0;
- ret = DoOp(vecs,VecOp::d_cset,p);
- break;
- }
- case 1: {
- // set arg to src
- ret = DoOp(vecs,VecOp::d_ccopy,p);
- break;
- }
- case 2: {
- ret = DoOp(vecs,VecOp::d_csqr,p);
- break;
- }
- default: {
- p.ibin.arg = powi;
- ret = DoOp(vecs,VecOp::d_cpowi,p);
- break;
- }
- }
- }
-
- delete vecs;
- }
- return ret;
-}
-
-VASP_ANYOP("vasp.cpowi",cpowi,0,true,VASP_ARG_I(1),"complex integer power")
-
-// -----------------------------------------------------
-
-VASP_UNARY("vasp.cabs",cabs,true,"set real part to complex absolute value, imaginary part becomes zero")
-
diff --git a/externals/grill/vasp/source/ops_carith.h b/externals/grill/vasp/source/ops_carith.h
deleted file mode 100644
index 04514a10..00000000
--- a/externals/grill/vasp/source/ops_carith.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
-
-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_CARITH_H
-#define __VASP_OPS_CARITH_H
-
-#include "opfuns.h"
-
-// Arithmetic math functions
-
-DEFOP(S,d_cadd,add,cbin)
-DEFOP(S,d_csub,sub,cbin)
-DEFOP(S,d_csubr,subr,cbin)
-DEFOP(S,d_cmul,mul,cbin)
-DEFOP(S,d_cdiv,div,cbin)
-DEFOP(S,d_cdivr,divr,cbin)
-
-DEFOP(S,d_csqr,sqr,cun)
-
-DEFOP(S,d_cpowi,powi,cop)
-
-DEFOP(S,d_cabs,abs,cun)
-
-
-namespace VaspOp {
- inline Vasp *m_cadd(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst = NULL) { return m_cbin(p,src,arg,dst,VecOp::d_cadd); } // complex add (pairs of vecs or complex)
- inline Vasp *m_csub(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst = NULL) { return m_cbin(p,src,arg,dst,VecOp::d_csub); } // complex sub (pairs of vecs or complex)
- inline Vasp *m_csubr(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst = NULL) { return m_cbin(p,src,arg,dst,VecOp::d_csubr); } // reverse complex sub (pairs of vecs or complex)
- inline Vasp *m_cmul(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst = NULL) { return m_cbin(p,src,arg,dst,VecOp::d_cmul); } // complex mul (pairs of vecs or complex)
- inline Vasp *m_cdiv(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst = NULL) { return m_cbin(p,src,arg,dst,VecOp::d_cdiv); } // complex div (pairs of vecs or complex)
- inline Vasp *m_cdivr(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst = NULL) { return m_cbin(p,src,arg,dst,VecOp::d_cdivr); } // complex reverse div (pairs of vecs or complex)
-
- inline Vasp *m_csqr(OpParam &p,CVasp &src,CVasp *dst = NULL) { return m_cun(p,src,dst,VecOp::d_csqr); } // complex square (with each two channels)
-// inline Vasp *m_csqrt(OpParam &p,CVasp &src,CVasp *dst = NULL) { return m_cun(p,src,dst,VecOp::d_csqrt); } // complex square root (how about branches?)
-
- Vasp *m_cpowi(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst = NULL); // complex integer power (with each two channels)
-
- inline Vasp *m_cabs(OpParam &p,CVasp &src,CVasp *dst = NULL) { return m_cun(p,src,dst,VecOp::d_cabs); } // absolute values
-}
-
-#endif
diff --git a/externals/grill/vasp/source/ops_cmp.cpp b/externals/grill/vasp/source/ops_cmp.cpp
deleted file mode 100644
index 34b7a98a..00000000
--- a/externals/grill/vasp/source/ops_cmp.cpp
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
-
-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.
-
-*/
-
-#include "main.h"
-#include "ops_cmp.h"
-#include "opdefs.h"
-#include "util.h"
-#include <math.h>
-
-// --------------------------------------------------------------
-
-VASP_BINARY("vasp.<",lwr,true,VASP_ARG_R(0),"set destination to 1 if source < argument, 0 otherwise")
-VASP_BINARY("vasp.>",gtr,true,VASP_ARG_R(0),"set destination to 1 if source > argument, 0 otherwise")
-VASP_BINARY("vasp.a<",alwr,true,VASP_ARG_R(0),"set destination to 1 if abs(source) < abs(argument), 0 otherwise")
-VASP_BINARY("vasp.a>",agtr,true,VASP_ARG_R(0),"set destination to 1 if abs(source) > abs(argument), 0 otherwise")
-VASP_BINARY("vasp.<=",leq,true,VASP_ARG_R(0),"set destination to 1 if source <= argument, 0 otherwise")
-VASP_BINARY("vasp.>=",geq,true,VASP_ARG_R(0),"set destination to 1 if source >= argument, 0 otherwise")
-VASP_BINARY("vasp.a<=",aleq,true,VASP_ARG_R(0),"set destination to 1 if abs(source) <= abs(argument), 0 otherwise")
-VASP_BINARY("vasp.a>=",ageq,true,VASP_ARG_R(0),"set destination to 1 if abs(source) >= abs(argument), 0 otherwise")
-VASP_BINARY("vasp.==",equ,true,VASP_ARG_R(0),"set destination to 1 if source == argument, 0 otherwise")
-VASP_BINARY("vasp.!=",neq,true,VASP_ARG_R(0),"set destination to 1 if source != argument, 0 otherwise")
-
-
-// --------------------------------------------------------------
-
-VASP_BINARY("vasp.min",min,true,VASP_ARG_R(0),"assigns the minimum of the comparison with a value or vasp")
-VASP_BINARY("vasp.max",max,true,VASP_ARG_R(0),"assigns the maximum of the comparison with a value or vasp")
-
-VASP_BINARY("vasp.rmin",rmin,true,VASP_ARG_R(0),"assigns the minimum of the radius comparison with a complex value or vasp")
-VASP_BINARY("vasp.rmax",rmax,true,VASP_ARG_R(0),"assigns the maximum of the radius comparison with a complex value or vasp")
-
-
-// --------------------------------------------------------------
-
-VASP_UNARY("vasp.minmax",minmax,true,"compare two vectors, assign the lower values to the first and the higher to the second one")
-
-
-
-
-
-
-
diff --git a/externals/grill/vasp/source/ops_cmp.h b/externals/grill/vasp/source/ops_cmp.h
deleted file mode 100644
index ae445b94..00000000
--- a/externals/grill/vasp/source/ops_cmp.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
-
-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_CMP_H
-#define __VASP_OPS_CMP_H
-
-#include "opfuns.h"
-
-// Comparison functions
-
-DEFOP(S,d_lwr,lwr,rbin)
-DEFOP(S,d_gtr,gtr,rbin)
-DEFOP(S,d_alwr,alwr,rbin)
-DEFOP(S,d_agtr,agtr,rbin)
-DEFOP(S,d_leq,leq,rbin)
-DEFOP(S,d_geq,geq,rbin)
-DEFOP(S,d_aleq,aleq,rbin)
-DEFOP(S,d_ageq,ageq,rbin)
-DEFOP(S,d_equ,equ,rbin)
-DEFOP(S,d_neq,neq,rbin)
-
-DEFOP(S,d_min,min,rbin)
-DEFOP(S,d_max,max,rbin)
-DEFOP(S,d_rmin,min,cbin)
-DEFOP(S,d_rmax,max,cbin)
-
-DEFOP(S,d_minmax,minmax,cun)
-
-DEFOP(S,d_minq,minq,rop)
-DEFOP(S,d_maxq,maxq,rop)
-DEFOP(S,d_rminq,minq,cop)
-DEFOP(S,d_rmaxq,maxq,cop)
-DEFOP(S,d_aminq,aminq,rop)
-DEFOP(S,d_amaxq,amaxq,rop)
-
-DEFOP(S,d_gate,gate,rbin)
-DEFOP(S,d_igate,igate,rbin)
-DEFOP(S,d_rgate,gate,cbin)
-DEFOP(S,d_rigate,igate,cbin)
-
-
-namespace VaspOp {
- inline Vasp *m_lwr(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst = NULL) { return m_rbin(p,src,arg,dst,VecOp::d_lwr); } // lower than
- inline Vasp *m_gtr(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst = NULL) { return m_rbin(p,src,arg,dst,VecOp::d_gtr); } // greater than
- inline Vasp *m_alwr(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst = NULL) { return m_rbin(p,src,arg,dst,VecOp::d_alwr); } // abs lower than
- inline Vasp *m_agtr(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst = NULL) { return m_rbin(p,src,arg,dst,VecOp::d_agtr); } // abs greater than
- inline Vasp *m_leq(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst = NULL) { return m_rbin(p,src,arg,dst,VecOp::d_leq); } // abs lower than
- inline Vasp *m_geq(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst = NULL) { return m_rbin(p,src,arg,dst,VecOp::d_geq); } // abs greater than
- inline Vasp *m_aleq(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst = NULL) { return m_rbin(p,src,arg,dst,VecOp::d_aleq); } // lower than
- inline Vasp *m_ageq(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst = NULL) { return m_rbin(p,src,arg,dst,VecOp::d_ageq); } // greater than
- inline Vasp *m_equ(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst = NULL) { return m_rbin(p,src,arg,dst,VecOp::d_equ); } // lower than
- inline Vasp *m_neq(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst = NULL) { return m_rbin(p,src,arg,dst,VecOp::d_neq); } // greater than
-
- inline Vasp *m_min(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst = NULL) { return m_rbin(p,src,arg,dst,VecOp::d_min); } // min (one vec or real)
- inline Vasp *m_max(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst = NULL) { return m_rbin(p,src,arg,dst,VecOp::d_max); } // max (one vec or real)
-
- inline Vasp *m_rmin(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst = NULL) { return m_cbin(p,src,arg,dst,VecOp::d_rmin); } // complex (radius) min (pairs of vecs or complex)
- inline Vasp *m_rmax(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst = NULL) { return m_cbin(p,src,arg,dst,VecOp::d_rmax); } // complex (radius) max (pairs of vecs or complex)
-
- inline Vasp *m_minmax(OpParam &p,CVasp &src,CVasp *dst = NULL) { return m_cun(p,src,dst,VecOp::d_minmax); } // min/max
-
- inline Vasp *m_qmin(OpParam &p,CVasp &src) { return m_run(p,src,NULL,VecOp::d_minq); } // get minimum sample value
- inline Vasp *m_qmax(OpParam &p,CVasp &src) { return m_run(p,src,NULL,VecOp::d_maxq); } // get maximum sample value
- inline Vasp *m_qamin(OpParam &p,CVasp &src) { return m_run(p,src,NULL,VecOp::d_aminq); } // get minimum sample value
- inline Vasp *m_qamax(OpParam &p,CVasp &src) { return m_run(p,src,NULL,VecOp::d_amaxq); } // get maximum sample value
-
- inline Vasp *m_qrmin(OpParam &p,CVasp &src) { return m_cun(p,src,NULL,VecOp::d_rminq); } // get minimum sample value
- inline Vasp *m_qrmax(OpParam &p,CVasp &src) { return m_cun(p,src,NULL,VecOp::d_rmaxq); } // get maximum sample value
-
- Vasp *m_gate(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst = NULL); // gate
- Vasp *m_igate(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst = NULL); // inverse gate
- Vasp *m_rgate(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst = NULL); // radius gate
- Vasp *m_rigate(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst = NULL); // inverse radius gate
-}
-
-#endif
diff --git a/externals/grill/vasp/source/ops_cplx.cpp b/externals/grill/vasp/source/ops_cplx.cpp
deleted file mode 100644
index 275f6f2d..00000000
--- a/externals/grill/vasp/source/ops_cplx.cpp
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
-
-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.
-
-*/
-
-#include "main.h"
-#include "ops_cplx.h"
-#include "opdefs.h"
-#include "util.h"
-#include <math.h>
-
-// -----------------------------------------------------
-
-VASP_UNARY("vasp.polar",polar,true,"convert complex vector pair from rectangular to polar coordinates")
-VASP_UNARY("vasp.rect",rect,true,"convert complex vector pair from polar to rectangular coordinates")
-
-
-// -----------------------------------------------------
-
-
-Vasp *VaspOp::m_radd(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst)
-{
- Vasp *ret = NULL;
- CVecBlock *vecs = GetCVecs(p.opname,src,dst);
- if(vecs) {
- if(arg.IsList() && arg.GetList().Count() >= 1 && flext::CanbeFloat(arg.GetList()[0]))
- p.cbin.rarg = flext::GetAFloat(arg.GetList()[0]);
- else {
- post("%s - argument is invalid -> set to 0",p.opname);
- p.cbin.rarg = 0;
- }
- p.cbin.iarg = 0; // not used anyway
-
- ret = DoOp(vecs,VecOp::d_radd,p);
- delete vecs;
- }
- return ret;
-}
-
-
-VASP_ANYOP("vasp.r+",radd,0,true,VASP_ARG_R(0),"add offset to complex radius (of complex vector pair)")
-
-
-// -----------------------------------------------------
-
-VASP_UNARY("vasp.cnorm",cnorm,true,"normalize complex radius to 1 (but preserve angle)")
-
-// -----------------------------------------------------
-
-//VASP_UNARY("vasp.cconj",cconj,true,"complex conjugate: multiply imaginary part with -1") // should be replaced by an abstraction
-
diff --git a/externals/grill/vasp/source/ops_cplx.h b/externals/grill/vasp/source/ops_cplx.h
deleted file mode 100644
index 9ca9d74e..00000000
--- a/externals/grill/vasp/source/ops_cplx.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
-
-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_CPLX_H
-#define __VASP_OPS_CPLX_H
-
-#include "opfuns.h"
-
-// Complex functions
-
-DEFOP(S,d_polar,polar,cun)
-DEFOP(S,d_rect,rect,cun)
-
-DEFOP(S,d_radd,radd,cbin)
-
-DEFOP(S,d_cnorm,norm,cun)
-
-//DEFOP(S,d_cconj,conj,cun)
-
-
-namespace VaspOp {
- inline Vasp *m_polar(OpParam &p,CVasp &src,CVasp *dst = NULL) { return m_cun(p,src,dst,VecOp::d_polar); } // cartesian -> polar (each two)
- inline Vasp *m_rect(OpParam &p,CVasp &src,CVasp *dst = NULL) { return m_cun(p,src,dst,VecOp::d_rect); } // polar -> cartesian (each two)
-
- Vasp *m_radd(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst = NULL); // radius offset
-
- inline Vasp *m_cnorm(OpParam &p,CVasp &src,CVasp *dst = NULL) { return m_cun(p,src,dst,VecOp::d_cnorm); } // complex normalize
-
-// inline Vasp *m_cswap(OpParam &p,CVasp &src,CVasp *dst = NULL) { return m_cun(p,src,dst,VecOp::d_cswap); } // swap real and imaginary parts
-// inline Vasp *m_cconj(OpParam &p,CVasp &src,CVasp *dst = NULL) { return m_cun(p,src,dst,VecOp::d_cconj); } // complex conjugate
-}
-
-#endif
diff --git a/externals/grill/vasp/source/ops_dft.cpp b/externals/grill/vasp/source/ops_dft.cpp
deleted file mode 100644
index fd00d921..00000000
--- a/externals/grill/vasp/source/ops_dft.cpp
+++ /dev/null
@@ -1,652 +0,0 @@
-/*
-
-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.
-
-*/
-
-/*! \file ops_dft.cpp
- \brief Implementation of DFT routines
-
- \todo align temporary memory allocations
-
- All DFTs are normalized by 1/sqrt(n), hence the complex ones are repeatable
-
- - complex FFT radix-2: in-place
- - real FFT radix-2 (split-radix): in-place
- - complex DFT radix-n (split-radix): out-of-place
- - real DFT radix-n: out-of-place / based on complex DFT radix-n (inefficient)
-
- In-place transformation is only possible for stride=1
-*/
-
-#include "main.h"
-#include "ops_dft.h"
-#include <math.h>
-#include <string.h>
-
-///////////////////////////////////////////////////////////////
-
-BL mixfft(I n,F *xRe,F *xIm,F *yRe,F *yIm);
-
-#ifdef FLEXT_THREADS
-static flext::ThrMutex mixmtx;
-#endif
-
-//! Real forward DFT radix-n (managing routine)
-static BL fft_fwd_real_any(I cnt,F *rsdt,I _rss,F *rddt,I _rds)
-{
- if(!rddt) rddt = rsdt,_rds = _rss;
-
-#ifdef VASP_CHN1
- const I rds = 1,rss = 1;
-#else
- const I rds = _rds,rss = _rss;
-#endif
-
- const BL rst = rss != 1;
- const BL rdt = rsdt == rddt || rds != 1;
-
- F *rstmp,*istmp;
- register I i;
-
- if(rst) {
- rstmp = new F[cnt];
- // happens only if rss != 1, no optimization necessary
- for(i = 0; i < cnt; ++i) rstmp[i] = rsdt[i*rss];
- }
- else
- rstmp = rsdt;
-
- istmp = new F[cnt];
- flext::ZeroMem(istmp,cnt*sizeof(*istmp));
-
- F *rdtmp = rdt?new F[cnt]:rddt;
- F *idtmp = new F[cnt];
-
- BL ret;
- {
- // mixfft is not thread-safe
-#ifdef FLEXT_THREADS
- mixmtx.Lock();
-#endif
- ret = mixfft(cnt,rstmp,istmp,rdtmp,idtmp);
-#ifdef FLEXT_THREADS
- mixmtx.Unlock();
-#endif
- }
- if(ret) {
- const F nrm = 1./sqrt((F)cnt);
- const I n2 = cnt/2;
-
-#ifndef VASP_COMPACT
- if(rds == 1) {
- for(i = 0; i <= n2; ++i) rddt[i] = rdtmp[i]*nrm;
- for(i = 1; i < cnt-n2; ++i) rddt[i+n2] = idtmp[i]*nrm;
- }
- else
-#endif
- {
- for(i = 0; i <= n2; ++i) rddt[i*rds] = rdtmp[i]*nrm;
- for(i = 1; i < cnt-n2; ++i) rddt[(i+n2)*rds] = idtmp[i]*nrm;
- }
- }
-
- if(rst) delete[] rstmp;
- delete[] istmp;
- if(rdt) delete[] rdtmp;
- delete[] idtmp;
-
- return ret;
-}
-
-
-//! Real inverse DFT radix-n (managing routine)
-static BL fft_inv_real_any(I cnt,F *rsdt,I _rss,F *rddt,I _rds)
-{
- if(!rddt) rddt = rsdt,_rds = _rss;
-
-#ifdef VASP_CHN1
- const I rds = 1,rss = 1;
-#else
- const I rds = _rds,rss = _rss;
-#endif
-
- const BL rst = rss != 1;
- const BL rdt = rsdt == rddt || rds != 1;
-
- const I n2 = cnt/2;
- F *rstmp,*istmp;
- istmp = new F[cnt];
- register I i;
-
- if(rst) {
- rstmp = new F[cnt];
- // happens only if rss != 1, no optimization necessary
- for(i = 0; i <= n2; ++i) rstmp[i] = rsdt[i*rss];
- for(i = 1; i < cnt-n2; ++i) istmp[cnt-i] = rsdt[(n2+i)*rss];
- }
- else {
- rstmp = rsdt;
- for(i = 1; i < cnt-n2; ++i) istmp[cnt-i] = rsdt[n2+i];
- }
-
- // make symmetric parts
- for(i = 1; i < cnt-n2; ++i) {
- istmp[i] = -istmp[cnt-i];
- rstmp[cnt-i] = rstmp[i];
- }
- istmp[0] = 0;
- if(cnt%2 == 0) istmp[n2] = 0;
-
-
- F *rdtmp = rdt?new F[cnt]:rddt;
- F *idtmp = new F[cnt];
-
- BL ret;
- {
-#ifdef FLEXT_THREADS
- mixmtx.Lock();
-#endif
- // mixfft is not thread-safe
- ret = mixfft(cnt,rstmp,istmp,rdtmp,idtmp);
-#ifdef FLEXT_THREADS
- mixmtx.Unlock();
-#endif
- }
- if(ret) {
- const F nrm = 1./sqrt((F)cnt);
-#ifndef VASP_COMPACT
- if(rds == 1)
- for(i = 0; i < cnt; ++i)
- rddt[i] = rdtmp[i]*nrm;
- else
-#endif
- for(i = 0; i < cnt; ++i)
- rddt[i*rds] = rdtmp[i]*nrm;
- }
-
- if(rst) delete[] rstmp;
- delete[] istmp;
- if(rdt) delete[] rdtmp;
- delete[] idtmp;
-
- return ret;
-}
-
-///////////////////////////////////////////////////////////////
-
-//! Complex forward DFT radix-n (managing routine)
-static BL fft_fwd_complex_any(I cnt,F *rsdt,I _rss,F *isdt,I _iss,F *rddt,I _rds,F *iddt,I _ids)
-{
- if(!rddt) rddt = rsdt,_rds = _rss;
- if(!iddt) iddt = isdt,_ids = _iss;
-
-#ifdef VASP_CHN1
- const I rds = 1,ids = 1,rss = 1,iss = 1;
-#else
- const I rds = _rds,ids = _ids,rss = _rss,iss = _iss;
-#endif
-
- const BL rst = rss != 1;
- const BL ist = iss != 1;
- const BL rdt = rsdt == rddt || rds != 1;
- const BL idt = isdt == iddt || ids != 1;
-
- F *rstmp,*istmp;
- register I i;
-
- if(rst) {
- rstmp = new F[cnt];
- // happens only if rss != 1, no optimization necessary
- for(i = 0; i < cnt; ++i) rstmp[i] = rsdt[i*rss];
- }
- else
- rstmp = rsdt;
-
- if(ist) {
- istmp = new F[cnt];
- // happens only if iss != 1, no optimization necessary
- for(i = 0; i < cnt; ++i) istmp[i] = isdt[i*iss];
- }
- else
- istmp = isdt;
-
- F *rdtmp = rdt?new F[cnt]:rddt;
- F *idtmp = idt?new F[cnt]:iddt;
-
- BL ret;
- {
-#ifdef FLEXT_THREADS
- mixmtx.Lock();
-#endif
- // mixfft is not thread-safe
- ret = mixfft(cnt,rstmp,istmp,rdtmp,idtmp);
-#ifdef FLEXT_THREADS
- mixmtx.Unlock();
-#endif
- }
- if(ret) {
- const F nrm = 1./sqrt((F)cnt);
-
-#ifdef VASP_COMPACT
- for(i = 0; i < cnt; ++i) {
- rddt[i*rds] = rdtmp[i]*nrm;
- iddt[i*ids] = idtmp[i]*nrm;
- }
-#else
- if(rdt) {
- if(rds != 1)
- for(i = 0; i < cnt; ++i) rddt[i*rds] = rdtmp[i]*nrm;
- else
- for(i = 0; i < cnt; ++i) rddt[i] = rdtmp[i]*nrm;
- }
- else // ok, this branch is not absolutely necessary
- if(rds != 1)
- for(i = 0; i < cnt; ++i) rddt[i*rds] *= nrm;
- else
- for(i = 0; i < cnt; ++i) rddt[i] *= nrm;
-
- if(idt) {
- if(ids != 1)
- for(i = 0; i < cnt; ++i) iddt[i*ids] = idtmp[i]*nrm;
- else
- for(i = 0; i < cnt; ++i) iddt[i] = idtmp[i]*nrm;
- }
- else // ok, this branch is not absolutely necessary
- if(ids != 1)
- for(i = 0; i < cnt; ++i) iddt[i*ids] *= nrm;
- else
- for(i = 0; i < cnt; ++i) iddt[i] *= nrm;
-#endif
- }
-
- if(rst) delete[] rstmp;
- if(ist) delete[] istmp;
- if(rdt) delete[] rdtmp;
- if(idt) delete[] idtmp;
-
- return ret;
-}
-
-//! Complex inverse DFT radix-n (managing routine)
-static BL fft_inv_complex_any(I cnt,F *rsdt,I _rss,F *isdt,I _iss,F *rddt,I _rds,F *iddt,I _ids)
-{
- I i;
-
- if(!rddt) rddt = rsdt,_rds = _rss;
- if(!iddt) iddt = isdt,_ids = _iss;
-
-#ifdef VASP_CHN1
- const I rds = 1,ids = 1,rss = 1,iss = 1;
-#else
- const I rds = _rds,ids = _ids,rss = _rss,iss = _iss;
-#endif
-
-#ifndef VASP_COMPACT
- if(iss == 1)
- for(i = 0; i < cnt; ++i) isdt[i] = -isdt[i];
- else
-#endif
- for(i = 0; i < cnt; ++i) isdt[i*iss] *= -1;
-
- BL ret = fft_fwd_complex_any(cnt,rsdt,rss,isdt,iss,rddt,rds,iddt,ids);
-
- if(ret) {
-#ifndef VASP_COMPACT
- if(ids == 1)
- for(i = 0; i < cnt; ++i) iddt[i] = -iddt[i];
- else
-#endif
- for(i = 0; i < cnt; ++i) iddt[i*ids] *= -1;
- }
-
- // reverse minus on input
- if(isdt != iddt) {
-#ifndef VASP_COMPACT
- if(iss == 1)
- for(i = 0; i < cnt; ++i) isdt[i] = -isdt[i];
- else
-#endif
- for(i = 0; i < cnt; ++i) isdt[i*iss] *= -1;
- }
- return ret;
-}
-
-///////////////////////////////////////////////////////////////
-
-bool fft_bidir_complex_radix2(int size,float *real,float *imag,int dir);
-
-//! Complex forward FFT radix-2 (managing routine)
-static BL fft_complex_radix2(I cnt,F *rsdt,I _rss,F *isdt,I _iss,F *rddt,I _rds,F *iddt,I _ids,I dir)
-{
- if(!rddt) rddt = rsdt,_rds = _rss;
- if(!iddt) iddt = isdt,_ids = _iss;
-
-#ifdef VASP_CHN1
- const I rds = 1,ids = 1,rss = 1,iss = 1;
-#else
- const I rds = _rds,ids = _ids,rss = _rss,iss = _iss;
-#endif
-
- BL rt = false,it = false;
- F *rtmp,*itmp;
- register I i;
-
- if(rss == 1)
- rtmp = rsdt;
- else {
- if(rsdt == rddt || rds != 1)
- rtmp = new F[cnt],rt = true;
- else
- rtmp = rddt;
- for(i = 0; i < cnt; ++i) rtmp[i] = rsdt[i*rss];
- }
-
- if(iss == 1)
- itmp = isdt;
- else {
- if(isdt == iddt || ids != 1)
- itmp = new F[cnt],it = true;
- else
- itmp = iddt;
- for(i = 0; i < cnt; ++i) itmp[i] = isdt[i*iss];
- }
-
- BL ret = fft_bidir_complex_radix2(cnt,rtmp,itmp,dir);
-
- if(ret) {
- const F nrm = 1./sqrt((F)cnt);
-
-#ifndef VASP_COMPACT
- if(rtmp == rddt)
- for(i = 0; i < cnt; ++i) rddt[i] *= nrm;
- else if(rds == 1)
- for(i = 0; i < cnt; ++i) rddt[i] = rtmp[i]*nrm;
- else
-#endif
- for(i = 0; i < cnt; ++i) rddt[i*rds] = rtmp[i]*nrm;
-
-#ifndef VASP_COMPACT
- if(itmp == iddt)
- for(i = 0; i < cnt; ++i) iddt[i] *= nrm;
- else if(ids == 1)
- for(i = 0; i < cnt; ++i) iddt[i] = itmp[i]*nrm;
- else
-#endif
- for(i = 0; i < cnt; ++i) iddt[i*ids] = itmp[i]*nrm;
- }
-
- if(rt) delete[] rtmp;
- if(it) delete[] itmp;
-
- return ret;
-}
-
-inline BL fft_fwd_complex_radix2(I cnt,F *rsdt,I _rss,F *isdt,I _iss,F *rddt,I _rds,F *iddt,I _ids)
-{
- return fft_complex_radix2(cnt,rsdt,_rss,isdt,_iss,rddt,_rds,iddt,_ids,1);
-}
-
-inline BL fft_inv_complex_radix2(I cnt,F *rsdt,I _rss,F *isdt,I _iss,F *rddt,I _rds,F *iddt,I _ids)
-{
- return fft_complex_radix2(cnt,rsdt,_rss,isdt,_iss,rddt,_rds,iddt,_ids,-1);
-}
-
-///////////////////////////////////////////////////////////////
-
-void realfft_split(float *data,int n);
-void irealfft_split(float *data,int n);
-
-// normalize and reverse imaginary part in-place
-static void nrmirev(float *data,int n,float fn)
-{
- int i;
- const I n2 = n/2,n4 = n2/2;
- for(i = 0; i <= n2; ++i) data[i] *= fn;
- for(i = 1; i < n4; ++i) {
- register F tmp = data[n2+i];
- data[n2+i] = data[n-i]*fn;
- data[n-i] = tmp*fn;
- }
- if(n2%2 == 0) data[n2+n4] *= fn;
-}
-
-//! Real forward FFT radix-2 (managing routine)
-BL fft_fwd_real_radix2(I cnt,F *src,I _sstr,F *dst,I _dstr)
-{
-#ifdef VASP_CHN1
- const I dstr = 1,sstr = 1;
-#else
- const I dstr = _dstr,sstr = _sstr;
-#endif
-
- register I i;
- const I n2 = cnt/2;
- const F fn = (F)(1./sqrt((F)cnt));
- F *stmp;
- if(!dst || src == dst) {
- // in-place
-
- if(sstr == 1)
- stmp = src;
- else {
- stmp = new F[cnt];
- for(i = 0; i < cnt; ++i) stmp[i] = src[i*sstr];
- }
-
- realfft_split(stmp,cnt);
-
- if(sstr == 1) {
- // src == stmp !!!
- nrmirev(stmp,cnt,fn);
- }
- else {
- for(i = 0; i <= n2; ++i) src[i*sstr] = stmp[i]*fn;
- for(i = 1; i < n2; ++i) src[(n2+i)*sstr] = stmp[cnt-i]*fn;
- delete[] stmp;
- }
- }
- else {
- // out of place
-
- if(sstr == 1)
- stmp = src;
- else {
- stmp = dstr == 1?dst:new F[cnt];
- for(i = 0; i < cnt; ++i) stmp[i] = src[i*sstr];
- }
-
- realfft_split(stmp,cnt);
-
- if(sstr == 1) {
-#ifdef VASP_COMPACT
- if(dstr == 1) {
- for(i = 0; i <= n2; ++i) dst[i] = stmp[i]*fn;
- for(i = 1; i < n2; ++i) dst[n2+i] = stmp[cnt-i]*fn;
- }
- else
-#endif
- {
- for(i = 0; i <= n2; ++i) dst[i*dstr] = stmp[i]*fn;
- for(i = 1; i < n2; ++i) dst[(n2+i)*dstr] = stmp[cnt-i]*fn;
- }
- }
- else {
- if(dstr == 1) {
- // dst == stmp !!!
- nrmirev(stmp,cnt,fn);
- }
- else {
- for(i = 0; i <= n2; ++i) dst[i*dstr] = stmp[i]*fn;
- for(i = 1; i < n2; ++i) dst[(n2+i)*dstr] = stmp[cnt-i]*fn;
- delete[] dst;
- }
- }
- }
-
- return true;
-}
-
-//! Real inverse FFT radix-2 (managing routine)
-BL fft_inv_real_radix2(I cnt,F *src,I _sstr,F *dst,I _dstr)
-{
-#ifdef VASP_CHN1
- const I dstr = 1,sstr = 1;
-#else
- const I dstr = _dstr,sstr = _sstr;
-#endif
-
- register I i;
- const I n2 = cnt/2;
- const F fn = (F)(1./sqrt((F)cnt));
- F *stmp;
- if(!dst || src == dst) {
- // in-place
-
- if(sstr == 1) {
- stmp = src;
- nrmirev(stmp,cnt,fn);
- }
- else {
- stmp = new F[cnt];
-
-#ifdef VASP_COMPACT
- if(sstr == 1) {
- for(i = 0; i <= n2; ++i) stmp[i] = src[i]*fn;
- for(i = 1; i < n2; ++i) stmp[cnt-i] = src[n2+i]*fn;
- }
- else
-#endif
- {
- for(i = 0; i <= n2; ++i) stmp[i] = src[i*sstr]*fn;
- for(i = 1; i < n2; ++i) stmp[cnt-i] = src[(n2+i)*sstr]*fn;
- }
- }
-
- irealfft_split(stmp,cnt);
-
- if(sstr != 1) {
- for(i = 0; i < cnt; ++i) src[i*sstr] = stmp[i];
- delete[] stmp;
- }
- }
- else {
- // out of place
-
- if(dstr == 1) {
- stmp = dst;
-#ifdef VASP_COMPACT
- if(sstr == 1) {
- for(i = 0; i <= n2; ++i) stmp[i] = src[i]*fn;
- for(i = 1; i < n2; ++i) stmp[cnt-i] = src[n2+i]*fn;
- }
- else
-#endif
- {
- for(i = 0; i <= n2; ++i) stmp[i] = src[i*sstr]*fn;
- for(i = 1; i < n2; ++i) stmp[cnt-i] = src[(n2+i)*sstr]*fn;
- }
- }
- else {
- stmp = new F[cnt];
- if(sstr == 1) {
- // dst == stmp !!!
- nrmirev(stmp,cnt,fn);
- }
- else {
- for(i = 0; i <= n2; ++i) stmp[i] = src[i*sstr]*fn;
- for(i = 1; i < n2; ++i) stmp[cnt-i] = src[(n2+i)*sstr]*fn;
- }
- }
-
- irealfft_split(stmp,cnt);
-
- if(dstr != 1) {
- for(i = 0; i < cnt; ++i) dst[i*dstr] = stmp[i];
- delete[] stmp;
- }
- }
-
- return true;
-}
-
-///////////////////////////////////////////////////////////////
-
-//! Determine if size is radix-2
-static I radix2(I size)
-{
- I i,j;
- for(i = j = 1; j < size; i++,j <<= 1) (void)0;
- return j == size?i:-1;
-}
-
-Vasp *VaspOp::m_rfft(OpParam &p,CVasp &src,CVasp *dst,BL inv)
-{
- RVecBlock *vecs = GetRVecs(p.opname,src,dst);
- if(vecs) {
- BL ok = true;
- for(I i = 0; ok && i < vecs->Vecs(); ++i) {
- VBuffer *s = vecs->Src(i);
- VBuffer *d = vecs->Dst(i);
- if(!d) d = s;
-
- if(vecs->Frames() > 1)
- if(radix2(vecs->Frames()) >= 1)
- // radix-2
- if(inv)
- ok = fft_inv_real_radix2(vecs->Frames(),s->Pointer(),s->Channels(),d->Pointer(),d->Channels());
- else
- ok = fft_fwd_real_radix2(vecs->Frames(),s->Pointer(),s->Channels(),d->Pointer(),d->Channels());
- else
- // radix-n
- if(inv)
- ok = fft_inv_real_any(vecs->Frames(),s->Pointer(),s->Channels(),d->Pointer(),d->Channels());
- else
- ok = fft_fwd_real_any(vecs->Frames(),s->Pointer(),s->Channels(),d->Pointer(),d->Channels());
- }
- return ok?vecs->ResVasp():NULL;
- }
- else
- return NULL;
-}
-
-Vasp *VaspOp::m_cfft(OpParam &p,CVasp &src,CVasp *dst,BL inv)
-{
- CVecBlock *vecs = GetCVecs(p.opname,src,dst,true);
- if(vecs) {
- BL ok = true;
- for(I i = 0; ok && i < vecs->Pairs(); ++i) {
- VBuffer *sre = vecs->ReSrc(i),*sim = vecs->ImSrc(i);
- VBuffer *dre = vecs->ReDst(i),*dim = vecs->ImDst(i);
- if(!dre) dre = sre;
- if(!dim) dim = sim;
-
- if(vecs->Frames() > 1)
- if(radix2(vecs->Frames()) >= 1)
- // radix-2
- if(inv)
- ok = fft_inv_complex_radix2(vecs->Frames(),sre->Pointer(),sre->Channels(),sim?sim->Pointer():NULL,sim?sim->Channels():0,dre->Pointer(),dre->Channels(),dim->Pointer(),dim->Channels());
- else
- ok = fft_fwd_complex_radix2(vecs->Frames(),sre->Pointer(),sre->Channels(),sim?sim->Pointer():NULL,sim?sim->Channels():0,dre->Pointer(),dre->Channels(),dim->Pointer(),dim->Channels());
- else
- // radix-n
- if(inv)
- ok = fft_inv_complex_any(vecs->Frames(),sre->Pointer(),sre->Channels(),sim?sim->Pointer():NULL,sim?sim->Channels():0,dre->Pointer(),dre->Channels(),dim->Pointer(),dim->Channels());
- else
- ok = fft_fwd_complex_any(vecs->Frames(),sre->Pointer(),sre->Channels(),sim?sim->Pointer():NULL,sim?sim->Channels():0,dre->Pointer(),dre->Channels(),dim->Pointer(),dim->Channels());
- }
- return ok?vecs->ResVasp():NULL;
- }
- else
- return NULL;
-}
-
-VASP_UNARY("vasp.rfft",rfft,true,"Real DFT")
-VASP_UNARY("vasp.r!fft",rifft,true,"Real inverse DFT")
-VASP_UNARY("vasp.cfft",cfft,true,"Complex DFT")
-VASP_UNARY("vasp.c!fft",cifft,true,"Complex inverse DFT")
-
diff --git a/externals/grill/vasp/source/ops_dft.h b/externals/grill/vasp/source/ops_dft.h
deleted file mode 100644
index 24b9a23d..00000000
--- a/externals/grill/vasp/source/ops_dft.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
-
-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_DFT_H
-#define __VASP_OPS_DFT_H
-
-#include "opbase.h"
-
-// Fourier transforms
-
-namespace VaspOp {
- Vasp *m_rfft(OpParam &p,CVasp &src,CVasp *dst = NULL,BL inv = false); // real forward
- inline Vasp *m_rifft(OpParam &p,CVasp &src,CVasp *dst = NULL) { return m_rfft(p,src,dst,true); } // real inverse
- Vasp *m_cfft(OpParam &p,CVasp &src,CVasp *dst = NULL,BL inv = false); // complex forward
- inline Vasp *m_cifft(OpParam &p,CVasp &src,CVasp *dst = NULL) { return m_cfft(p,src,dst,true); } // complex inverse
-}
-
-#endif
diff --git a/externals/grill/vasp/source/ops_feature.cpp b/externals/grill/vasp/source/ops_feature.cpp
deleted file mode 100644
index 89e3a156..00000000
--- a/externals/grill/vasp/source/ops_feature.cpp
+++ /dev/null
@@ -1,226 +0,0 @@
-/*
-
-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.
-
-*/
-
-#include "main.h"
-#include "ops_feature.h"
-#include "oploop.h"
-#include "util.h"
-#include <math.h>
-
-// --- find peaks
-
-BL higher(S a,S b) { return a > b; }
-BL lower(S a,S b) { return a < b; }
-
-/*! \brief Find peaks or valleys (depending on cmp function)
- \param rep repetition count
-
- \remark real peak search is mangled into complex domain
-
- \todo how to treat <=, >=
- \todo separate real and complex functionality
-*/
-
-static BL d_vlpk(OpParam &p,BL cmpf(S a,S b))
-{
- I dpeaks = (I)(p.frames*p.peaks.density);
- if(dpeaks < 1) dpeaks = 1;
-
- I cnt;
- do {
- cnt = 0;
-
- I i;
- S *rdst = p.rddt,*rsrc = p.rsdt;
- S *idst = p.iddt,*isrc = p.isdt;
-
- if(!p.peaks.cx || !idst) idst = rdst,p.ids = p.rds;
- if(!p.peaks.cx || !isrc) isrc = rsrc,p.iss = p.rss;
-
- // preset sample values
- S d1 = -1,d0 = -1,dn = -1;
-
- // search first non-null sample
- _D_LOOP(i,p.frames)
- if((dn = sqabs(rsrc[i*p.rss],isrc[i*p.iss])) != 0)
- break; // non-null -> break!
- else
- rdst[i*p.rds] = idst[i*p.ids] = 0; // copy null samples to dst
- _E_LOOP
-
- // i points to first non-null sample
-
- _D_WHILE(i < p.frames)
- // current samples -> previous samples
- d1 = d0,d0 = dn;
-
- // save current index
- I ci = i;
-
- // search next non-null sample
- dn = -1;
- while(++i < p.frames)
- if((dn = sqabs(rsrc[i*p.rss],isrc[i*p.iss])) != 0) {
- break; // non-null -> break!
- }
- else
- rdst[i*p.rds] = idst[i*p.ids] = 0;
-
- if((d1 < 0 || cmpf(d0,d1)) && (dn < 0 || cmpf(d0,dn))) {
- // is peak/valley
- rdst[ci*p.rds] = rsrc[ci*p.rss];
- idst[ci*p.ids] = isrc[ci*p.iss];
- ++cnt;
- }
- else
- rdst[ci*p.rds] = idst[ci*p.ids] = 0;
- _E_WHILE
- } while(cnt > dpeaks);
-
- p.peaks.density = p.frames?(R)cnt/p.frames:(cnt?1:0);
- return true;
-}
-
-inline BL d_peaks(OpParam &p) { return d_vlpk(p,higher); }
-inline BL d_valleys(OpParam &p) { return d_vlpk(p,lower); }
-inline BL d_rpeaks(OpParam &p) { return d_vlpk(p,higher); }
-inline BL d_rvalleys(OpParam &p) { return d_vlpk(p,lower); }
-
-/*! \brief Finds peaks or valleys in a vasp.
-
- \param arg argument list
- \param arg.rep repetition count
- \param dst destination vasp (NULL for in-place operation)
- \param inv true for valley operation
- \return normalized destination vasp
-*/
-Vasp *VaspOp::m_peaks(OpParam &p,CVasp &src,CVasp *dst,BL inv)
-{
- Vasp *ret = NULL;
- RVecBlock *vecs = GetRVecs(p.opname,src,dst);
- if(vecs) {
- p.peaks.cx = false;
- ret = DoOp(vecs,inv?d_valleys:d_peaks,p);
- delete vecs;
- }
- return ret;
-}
-
-
-
-/*! \brief Finds peaks or valleys by radius in a complex vasp.
-
- \param arg argument list
- \param arg.rep repetition count
- \param dst destination vasp (NULL for in-place operation)
- \param inv true for valley operation
- \return normalized destination vasp
-*/
-Vasp *VaspOp::m_rpeaks(OpParam &p,CVasp &src,CVasp *dst,BL inv)
-{
- Vasp *ret = NULL;
- CVecBlock *vecs = GetCVecs(p.opname,src,dst);
- if(vecs) {
- p.peaks.cx = true;
- ret = DoOp(vecs,inv?d_rvalleys:d_rpeaks,p);
- delete vecs;
- }
- return ret;
-}
-
-
-class vasp_peaks:
- public vasp_anyop
-{
- FLEXT_HEADER(vasp_peaks,vasp_anyop)
-public:
-
- vasp_peaks(I argc,const t_atom *argv):
- vasp_anyop(argc,argv,VASP_ARG(),true,XletCode(xlet_float,0))
- {}
-
- virtual Vasp *do_peaks(OpParam &p)
- {
- CVasp cdst(dst),cref(ref);
- return VaspOp::m_peaks(p,cref,&cdst);
- }
-
- virtual Vasp *tx_work(const Argument &arg)
- {
- OpParam p(thisName(),0);
-
- if(arg.IsList() && arg.GetList().Count() >= 1 && CanbeFloat(arg.GetList()[0])) {
- p.peaks.density = GetAFloat(arg.GetList()[0]);
- }
- else {
- if(!arg.IsNone()) post("%s - invalid density argument -> set to 1",p.opname);
- p.peaks.density = 1;
- }
-
- Vasp *ret = do_peaks(p);
- ToOutFloat(1,p.peaks.density);
- return ret;
- }
-
- virtual V m_help() { post("%s - Get non-zero values only for peaks",thisName()); }
-};
-VASP_LIB_V("vasp.peaks",vasp_peaks)
-
-
-class vasp_valleys:
- public vasp_peaks
-{
- FLEXT_HEADER(vasp_valleys,vasp_peaks)
-public:
- vasp_valleys(I argc,const t_atom *argv): vasp_peaks(argc,argv) {}
- virtual Vasp *do_peaks(OpParam &p)
- {
- CVasp cdst(dst),cref(ref);
- return VaspOp::m_valleys(p,cref,&cdst);
- }
-
- virtual V m_help() { post("%s - Get non-zero values only for values",thisName()); }
-};
-VASP_LIB_V("vasp.valleys",vasp_valleys)
-
-
-class vasp_rpeaks:
- public vasp_peaks
-{
- FLEXT_HEADER(vasp_rpeaks,vasp_peaks)
-public:
- vasp_rpeaks(I argc,const t_atom *argv): vasp_peaks(argc,argv) {}
- virtual Vasp *do_peaks(OpParam &p)
- {
- CVasp cdst(dst),cref(ref);
- return VaspOp::m_rpeaks(p,cref,&cdst);
- }
-
- virtual V m_help() { post("%s - Get non-zero values only for peaks of the complex radius",thisName()); }
-};
-VASP_LIB_V("vasp.rpeaks",vasp_rpeaks)
-
-
-class vasp_rvalleys:
- public vasp_peaks
-{
- FLEXT_HEADER(vasp_rvalleys,vasp_peaks)
-public:
- vasp_rvalleys(I argc,const t_atom *argv): vasp_peaks(argc,argv) {}
- virtual Vasp *do_peaks(OpParam &p)
- {
- CVasp cdst(dst),cref(ref);
- return VaspOp::m_rvalleys(p,cref,&cdst);
- }
-
- virtual V m_help() { post("%s - Get non-zero values only for valleys of the complex radius",thisName()); }
-};
-VASP_LIB_V("vasp.rvalleys",vasp_rvalleys)
-
diff --git a/externals/grill/vasp/source/ops_feature.h b/externals/grill/vasp/source/ops_feature.h
deleted file mode 100644
index 95293bad..00000000
--- a/externals/grill/vasp/source/ops_feature.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
-
-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_FEATURE_H
-#define __VASP_OPS_FEATURE_H
-
-#include "opbase.h"
-
-// Feature extraction functions
-
-namespace VecOp {
-}
-
-namespace VaspOp {
- // extrema functions
- Vasp *m_peaks(OpParam &p,CVasp &src,CVasp *dst = NULL,BL inv = false); //! find peaks
- inline Vasp *m_valleys(OpParam &p,CVasp &src,CVasp *dst = NULL) { return m_peaks(p,src,dst,true); } //! find valleys
- Vasp *m_rpeaks(OpParam &p,CVasp &src,CVasp *dst = NULL,BL inv = false); //! find radius peaks
- inline Vasp *m_rvalleys(OpParam &p,CVasp &src,CVasp *dst = NULL) { return m_rpeaks(p,src,dst,true); } //! find radius valleys
-}
-
-#endif
diff --git a/externals/grill/vasp/source/ops_flt.cpp b/externals/grill/vasp/source/ops_flt.cpp
deleted file mode 100644
index deecc5ff..00000000
--- a/externals/grill/vasp/source/ops_flt.cpp
+++ /dev/null
@@ -1,205 +0,0 @@
-/*
-
-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.
-
-*/
-
-#include "main.h"
-#include "ops_flt.h"
-#include "opdefs.h"
-#include "util.h"
-
-// --- highpass ---------------------------------------
-
-//! \todo handle carry
-//! \todo handle yield
-
-BL VecOp::d_fhp(OpParam &p)
-{
- if(p.revdir)
- post("%s - reversing operation direction due to overlap: opposite sample delay",p.opname);
-
-/*
- R coef = (2*PI)/perln;
- if(coef > 1) coef = 1;
-*/
- const R coef = 1-p.flt.coef;
- const I arep = abs(p.flt.rep);
- S *src = p.rsdt,*dst = p.rddt;
-
- for(I ti = 0; ti < arep; ++ti) {
- register S v1;
- I i;
-
- // t+ direction
- for(i = 0,v1 = 0; i < p.frames; ++i) {
- register const S v0 = *src + coef*v1;
- *dst = v0-v1;
- v1 = v0;
- src += p.rss,dst += p.rds;
- }
-
- if(p.flt.rep < 0) {
- if(++ti == arep) break;
-
- // t- direction
- for(i = p.frames-1,v1 = 0; i >= 0; --i) {
- src -= p.rss,dst -= p.rds;
- register const S v0 = *src + coef*v1;
- *dst = v0-v1;
- v1 = v0;
- }
- }
- }
-
- return true;
-}
-
-
-// --- lowpass ---------------------------------------
-
-//! \todo handle carry
-//! \todo handle yield
-
-BL VecOp::d_flp(OpParam &p)
-{
- if(p.revdir)
- post("%s - reversing operation direction due to overlap: opposite sample delay",p.opname);
-
-/*
- R coef = (2*PI)/perln;
- if(coef > 1) coef = 1;
-*/
-
- const R coef = p.flt.coef,feed = 1-coef;
- const I arep = abs(p.flt.rep);
-
- for(I ti = 0; ti < arep; ++ti) {
- register S v1;
- I i;
- S *src = p.rsdt,*dst = p.rddt;
-
- // t+ direction
- for(i = 0,v1 = 0; i < p.frames; ++i) {
- v1 = *dst = coef* *src + feed*v1;
- src += p.rss,dst += p.rds;
- }
-
- if(p.flt.rep < 0) {
- if(++ti == arep) break;
-
- // t- direction
- for(i = p.frames-1,v1 = 0; i >= 0; --i) {
- src -= p.rss,dst -= p.rds;
- v1 = *dst = coef* *src + feed*v1;
- }
- }
- }
-
- return true;
-}
-
-
-
-Vasp *VaspOp::m_fhp(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst,BL hp)
-{
- Vasp *ret = NULL;
- if(arg.IsList() && arg.GetList().Count() >= 1) {
- RVecBlock *vecs = GetRVecs(p.opname,src,dst);
- if(vecs) {
- p.flt.coef = 2*PI/flext::GetAFloat(arg.GetList()[0]);
- if(p.flt.coef > 1) p.flt.coef = 1;
- p.flt.rep = arg.GetList().Count() >= 2?flext::GetAInt(arg.GetList()[1]):1;
- p.flt.rep = -p.flt.rep; // fwd/bwd operation
-/*
- if(p.SROvr()) {
- p.SDRRev();
- post("%s - reversing operation direction due to overlap: opposite sample delay",opnm);
- }
-*/
- ret = DoOp(vecs,hp?VecOp::d_fhp:VecOp::d_flp,p);
-
- delete vecs;
- }
- }
-
- return ret;
-}
-
-VASP_ANYOP("vasp.flp",flp,1,true,VASP_ARG(),"Passive low pass filter")
-VASP_ANYOP("vasp.fhp",fhp,1,true,VASP_ARG(),"Passive high pass filter")
-
-
-// --- integrate/differentiate
-
-/*! \brief Integration
- \remark The delay of the result is +/- one sample, depending on the direction of the calculation
-
- \todo different modes how to initialize first carry?
- \todo repetition count
-*/
-BL VecOp::d_int(OpParam &p)
-{
- if(p.revdir)
- post("%s - reversed operation direction due to overlap: opposite sample delay",p.opname);
-
- register S d = p.intdif.carry;
- register I i;
- _DE_LOOP(i,p.frames, ( *p.rddt = (d += *p.rsdt), p.rsdt += p.rss,p.rddt += p.rds ) )
- p.intdif.carry = d;
- return true;
-}
-
-/*! \brief Differentiation
- \remark The delay of the result is +/- one sample, depending on the direction of the calculation
-
- \todo different modes how to initialize first carry?
- \todo repetition count
-*/
-BL VecOp::d_dif(OpParam &p)
-{
- if(p.revdir)
- post("%s - reversed operation direction due to overlap: opposite sample delay",p.opname);
-
- register S d = p.intdif.carry,d1;
- register I i;
- _DE_LOOP(i,p.frames, ( d1 = *p.rsdt, *p.rddt = d1-d,d = d1, p.rsdt += p.rss,p.rddt += p.rds ) )
- p.intdif.carry = d;
- return true;
-}
-
-/*! \brief Does vasp integration/differentiation.
-
- \param arg argument list
- \param dst destination vasp (NULL for in-place operation)
- \param inv true for differentiation
- \return normalized destination vasp
-*/
-Vasp *VaspOp::m_int(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst,BL inv)
-{
- Vasp *ret = NULL;
- RVecBlock *vecs = GetRVecs(p.opname,src,dst);
- if(vecs) {
- p.intdif.carry = 0,p.intdif.rep = 1;
- if(arg.IsList() && arg.GetList().Count() >= 1) p.intdif.rep = flext::GetAInt(arg.GetList()[0]);
-
- if(p.intdif.rep < 0) {
- post("%s - invalid repetition count (%i) -> set to 1",p.opname,p.intdif.rep);
- p.intdif.rep = 1;
- }
-
- ret = DoOp(vecs,inv?VecOp::d_dif:VecOp::d_int,p);
- delete vecs;
- }
- return ret;
-}
-
-VASP_ANYOP("vasp.int",int,0,true,VASP_ARG_I(1),"Integration")
-VASP_ANYOP("vasp.dif",dif,0,true,VASP_ARG_I(1),"Differentiation")
-
-
-VASP_UNARY("vasp.fix",fix,true,"Bashes denormals/NANs to zero")
diff --git a/externals/grill/vasp/source/ops_flt.h b/externals/grill/vasp/source/ops_flt.h
deleted file mode 100644
index debb4039..00000000
--- a/externals/grill/vasp/source/ops_flt.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
-
-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_FLT_H
-#define __VASP_OPS_FLT_H
-
-#include "opfuns.h"
-
-// Filtering functions
-
-namespace VecOp {
- BL d_flp(OpParam &p);
- BL d_fhp(OpParam &p);
-
- BL d_int(OpParam &p);
- BL d_dif(OpParam &p);
-}
-
-DEFOP(S,d_fix,fix,run)
-
-namespace VaspOp {
- // passive filters
- Vasp *m_fhp(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst = NULL,BL hp = true); //! hi pass
- inline Vasp *m_flp(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst = NULL) { return m_fhp(p,src,arg,dst,false); } //! lo pass
-
- // int/dif functions
- Vasp *m_int(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst = NULL,BL inv = false); //! integrate
- inline Vasp *m_dif(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst = NULL) { return m_int(p,src,arg,dst,true); } //! differentiate
-
- // fix denormals/NANs
- inline Vasp *m_fix(OpParam &p,CVasp &src,CVasp *dst = NULL) { return m_run(p,src,dst,VecOp::d_fix); } // ! NAN/denormal filter
-}
-
-#endif
diff --git a/externals/grill/vasp/source/ops_gate.cpp b/externals/grill/vasp/source/ops_gate.cpp
deleted file mode 100644
index 919ee07f..00000000
--- a/externals/grill/vasp/source/ops_gate.cpp
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
-
-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.
-
-*/
-
-#include "main.h"
-#include "ops_cmp.h"
-#include "opdefs.h"
-#include "util.h"
-#include <math.h>
-
-// --------------------------------------------------------------
-
-
-Vasp *VaspOp::m_gate(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst)
-{
- Vasp *ret = NULL;
- RVecBlock *vecs = GetRVecs(p.opname,src,dst);
- if(vecs) {
- if(arg.IsList() && arg.GetList().Count() >= 1 && flext::CanbeFloat(arg.GetList()[0]))
- p.rbin.arg = flext::GetAFloat(arg.GetList()[0]);
- else {
- post("%s - argument is invalid -> set to 1",p.opname);
- p.rbin.arg = 1;
- }
-
- ret = DoOp(vecs,VecOp::d_gate,p);
- delete vecs;
- }
- return ret;
-}
-
-
-Vasp *VaspOp::m_rgate(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst)
-{
- Vasp *ret = NULL;
- CVecBlock *vecs = GetCVecs(p.opname,src,dst);
- if(vecs) {
- if(arg.IsList() && arg.GetList().Count() >= 1 && flext::CanbeFloat(arg.GetList()[0]))
- p.cbin.rarg = flext::GetAFloat(arg.GetList()[0]);
- else {
- post("%s - argument is invalid -> set to 1",p.opname);
- p.cbin.rarg = 1;
- }
- p.cbin.iarg = 0; // not used anyway
-
- ret = DoOp(vecs,VecOp::d_rgate,p);
- delete vecs;
- }
- return ret;
-}
-
-VASP_ANYOP("vasp.gate",gate,1,true,VASP_ARG_R(1),"set destination to 0 if source < argument")
-VASP_ANYOP("vasp.rgate",rgate,1,true,VASP_ARG_R(1),"complex radius gate: set destination to 0 if rad(complex source) < rad(complex argument)")
-
-
-// --------------------------------------------------------------
-
diff --git a/externals/grill/vasp/source/ops_gen.cpp b/externals/grill/vasp/source/ops_gen.cpp
deleted file mode 100644
index 73aaab5c..00000000
--- a/externals/grill/vasp/source/ops_gen.cpp
+++ /dev/null
@@ -1,266 +0,0 @@
-/*
-
-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.
-
-*/
-
-#include "main.h"
-#include "ops_gen.h"
-#include "util.h"
-#include <math.h>
-
-// --- osc ---------------------------------------
-
-/*! \brief Generator for real (cos) oscillations
-*/
-BL VecOp::d_osc(OpParam &p)
-{
- register R ph = p.gen.ph,phinc = p.gen.phinc;
- if(p.revdir) ph -= (p.frames-1)*(phinc = -phinc);
-
- for(I i = 0; i < p.frames; ++i,ph += phinc,p.rddt += p.rds) *p.rddt = cos(ph);
- return true;
-}
-
-/*! \brief multiplicative generator for real (cos) oscillations
-*/
-BL VecOp::d_mosc(OpParam &p)
-{
- register R ph = p.gen.ph,phinc = p.gen.phinc;
- if(p.revdir) ph -= (p.frames-1)*(phinc = -phinc);
-
- for(I i = 0; i < p.frames; ++i,ph += phinc,p.rsdt += p.rss,p.rddt += p.rds)
- *p.rddt = *p.rsdt * cos(ph);
- return true;
-}
-
-/*! \brief Generator for real (cos) oscillations.
-
- \param arg argument list
- \param arg.perlen Period length (in samples)
- \param arg.stph Starting phase
- \param mul true for multiplication to exisiting date
- \return normalized destination vasp
-
- \todo Replace period length by frequency specification
-*/
-Vasp *VaspOp::m_osc(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst,BL mul)
-{
- Vasp *ret = NULL;
- if(arg.IsList() && arg.GetList().Count() >= 1) {
- RVecBlock *vecs = GetRVecs(p.opname,src,dst);
- if(vecs) {
- // period length
- p.gen.phinc = 2*PI/flext::GetAFloat(arg.GetList()[0]);
- // starting phase
- p.gen.ph = arg.GetList().Count() >= 2?flext::GetAFloat(arg.GetList()[1]):0;
-
- ret = DoOp(vecs,mul?VecOp::d_mosc:VecOp::d_osc,p);
- delete vecs;
- }
- }
- else
- post("%s - no arguments: no operation",p.opName());
-
- return ret;
-}
-
-
-/*! \brief Generator for complex oscillations.
-*/
-BL VecOp::d_cosc(OpParam &p)
-{
- register R ph = p.gen.ph,phinc = p.gen.phinc;
- if(p.revdir) ph -= (p.frames-1)*(phinc = -phinc);
-
- for(; p.frames--; ph += phinc,p.rddt += p.rds,p.iddt += p.ids)
- *p.rddt = cos(ph),*p.iddt = sin(ph);
- return true;
-}
-
-/*! \brief Multiplicative generator for complex oscillations.
-*/
-BL VecOp::d_mcosc(OpParam &p)
-{
- register R ph = p.gen.ph,phinc = p.gen.phinc;
- if(p.revdir) ph -= (p.frames-1)*(phinc = -phinc);
-
- for(; p.frames--; ph += phinc,p.rsdt += p.rss,p.isdt += p.iss,p.rddt += p.rds,p.iddt += p.ids) {
- R zre = cos(ph),zim = sin(ph);
-
- register const R r = *p.rsdt * zre - *p.isdt * zim;
- *p.iddt = *p.isdt * zre + *p.rsdt * zim;
- *p.rddt = r;
- }
- return true;
-}
-
-/*! \brief Generator for complex (cos+i sin) oscillations.
-
- \param arg argument list
- \param arg.perlen Period length (in samples)
- \param arg.stph Starting phase
- \param mul true for multiplication to exisiting date
- \return normalized destination vasp
-
- \todo Replace period length by frequency specification
-*/
-Vasp *VaspOp::m_cosc(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst,BL mul)
-{
- Vasp *ret = NULL;
- if(arg.IsList() && arg.GetList().Count() >= 1) {
- CVecBlock *vecs = GetCVecs(p.opname,src,dst);
- if(vecs) {
- // period length
- p.gen.phinc = 2*PI/flext::GetAFloat(arg.GetList()[0]);
- // starting phase
- p.gen.ph = arg.GetList().Count() >= 2?flext::GetAFloat(arg.GetList()[1]):0;
-
- ret = DoOp(vecs,mul?VecOp::d_mcosc:VecOp::d_cosc,p);
- delete vecs;
- }
- }
- else
- post("%s - no arguments: no operation",p.opName());
-
- return ret;
-}
-
-
-VASP_ANYOP("vasp.osc",osc,1,false,VASP_ARG(),"Calculates a cosine wave")
-VASP_ANYOP("vasp.*osc",mosc,1,true,VASP_ARG(),"Multiplies with a cosine wave")
-VASP_ANYOP("vasp.cosc",cosc,1,false,VASP_ARG(),"Calculates a complex oscillation (cos + i sin)")
-VASP_ANYOP("vasp.*cosc",mcosc,1,true,VASP_ARG(),"Multiplies with a complex oscillation (cos + i sin)")
-
-// --- phasor ---------------------------------------
-
-// ! look up Höldrich's pd phasor code
-
-/*! \brief Generator for saw wave oscillations.
-*/
-BL VecOp::d_phasor(OpParam &p)
-{
- register R ph = p.gen.ph,phinc = p.gen.phinc;
- if(p.revdir) ph -= (p.frames-1)*(phinc = -phinc);
-
- for(; p.frames--; ph += phinc,p.rddt += p.rds) *p.rddt = fmod((F)ph,1.F);
- return true;
-}
-
-/*! \brief Multiplicative generator for saw wave oscillations.
-*/
-BL VecOp::d_mphasor(OpParam &p)
-{
- register R ph = p.gen.ph,phinc = p.gen.phinc;
- if(p.revdir) ph -= (p.frames-1)*(phinc = -phinc);
-
- for(; p.frames--; ph += phinc,p.rddt += p.rds,p.rsdt += p.rss) *p.rddt = *p.rsdt * fmod((F)ph,1.F);
- return true;
-}
-
-/*! \brief Generator for sawtooth oscillations.
-
- \param arg argument list
- \param arg.perlen Period length (in samples)
- \param arg.stph Starting phase
- \param mul true for multiplication to exisiting date
- \return normalized destination vasp
-
- \todo Replace period length by frequency specification
-*/
-Vasp *VaspOp::m_phasor(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst,BL mul)
-{
- Vasp *ret = NULL;
- if(arg.IsList() && arg.GetList().Count() >= 1) {
- RVecBlock *vecs = GetRVecs(p.opname,src,dst);
- if(vecs) {
- // period length
- p.gen.phinc = 1./flext::GetAFloat(arg.GetList()[0]);
- // starting phase
- p.gen.ph = arg.GetList().Count() >= 2?flext::GetAFloat(arg.GetList()[1]):0;
-
- ret = DoOp(vecs,mul?VecOp::d_mphasor:VecOp::d_phasor,p);
- delete vecs;
- }
- }
- else
- post("%s - no arguments: no operation",p.opName());
-
- return ret;
-}
-
-
-VASP_ANYOP("vasp.phasor",phasor,1,false,VASP_ARG(),"Calculates a sawtooth wave")
-VASP_ANYOP("vasp.*phasor",mphasor,1,true,VASP_ARG(),"Multiplies with a sawtooth wave")
-
-// --- noise --------------------------------
-
-static F rnd()
-{
- static I val = 307*1319;
- F ret = ((F)((val&0x7fffffff)-0x40000000))*(F)(1.0/0x40000000);
- val = val * 435898247 + 382842987;
- return ret;
-}
-
-/*! \brief Vector function for pseudorandom noise.
-*/
-BL VecOp::d_noise(OpParam &p)
-{
- for(; p.frames--; p.rddt += p.rds) *p.rddt = rnd();
- return true;
-}
-
-
-/*! \brief Generator for real valued noise.
-
- \return normalized destination vasp
-*/
-Vasp *VaspOp::m_noise(OpParam &p,CVasp &src,CVasp *dst)
-{
- Vasp *ret = NULL;
- RVecBlock *vecs = GetRVecs(p.opname,src,dst);
- if(vecs) {
- ret = DoOp(vecs,VecOp::d_noise,p);
- delete vecs;
- }
- return ret;
-}
-
-/*! \brief Vector function for pseudorandom complex noise.
-*/
-BL VecOp::d_cnoise(OpParam &p)
-{
- for(; p.frames--; p.rddt += p.rds,p.iddt += p.ids) {
- R amp = rnd();
- R arg = rnd()*(2.*PI);
- *p.rddt = amp*cos(arg);
- *p.iddt = amp*sin(arg);
- }
- return true;
-}
-
-/*! \brief Generator for complex noise (complex abs, complex arg).
-
- \return normalized destination vasp
-
- \todo Replace period length by frequency specification
-*/
-Vasp *VaspOp::m_cnoise(OpParam &p,CVasp &src,CVasp *dst)
-{
- Vasp *ret = NULL;
- CVecBlock *vecs = GetCVecs(p.opname,src,dst);
- if(vecs) {
- ret = DoOp(vecs,VecOp::d_cnoise,p);
- delete vecs;
- }
- return ret;
-}
-
-VASP_UNARY("vasp.noise",noise,false,"Fills the vectors with white noise")
-VASP_UNARY("vasp.cnoise",cnoise,false,"Fills the vectors with complex white noise (radius and angle are random)")
-
diff --git a/externals/grill/vasp/source/ops_gen.h b/externals/grill/vasp/source/ops_gen.h
deleted file mode 100644
index eff28710..00000000
--- a/externals/grill/vasp/source/ops_gen.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
-
-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_GEN_H
-#define __VASP_OPS_GEN_H
-
-#include "opbase.h"
-
-// Generator functions
-
-namespace VecOp {
- BL d_osc(OpParam &p);
- BL d_cosc(OpParam &p);
- BL d_mosc(OpParam &p);
- BL d_mcosc(OpParam &p);
- BL d_phasor(OpParam &p);
- BL d_mphasor(OpParam &p);
- BL d_noise(OpParam &p);
- BL d_cnoise(OpParam &p);
-}
-
-namespace VaspOp {
- Vasp *m_osc(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst,BL mul = false); // real osc
- inline Vasp *m_mosc(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst) { return m_osc(p,src,arg,dst,true); } // * real osc
- Vasp *m_cosc(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst,BL mul = false); // complex osc (phase rotates)
- inline Vasp *m_mcosc(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst) { return m_cosc(p,src,arg,dst,true); } // * complex osc (phase rotates)
- Vasp *m_phasor(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst,BL mul = false); // phasor
- inline Vasp *m_mphasor(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst) { return m_phasor(p,src,arg,dst,true); } // * phasor
- Vasp *m_noise(OpParam &p,CVasp &src,CVasp *dst); // real noise
- Vasp *m_cnoise(OpParam &p,CVasp &src,CVasp *dst); // complex noise (arg and abs random)
-}
-
-#endif
diff --git a/externals/grill/vasp/source/ops_qminmax.cpp b/externals/grill/vasp/source/ops_qminmax.cpp
deleted file mode 100644
index 22ae6128..00000000
--- a/externals/grill/vasp/source/ops_qminmax.cpp
+++ /dev/null
@@ -1,267 +0,0 @@
-/*
-
-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.
-
-*/
-
-#include "main.h"
-#include "ops_cmp.h"
-#include "opdefs.h"
-#include "util.h"
-#include <math.h>
-
-// --------------------------------------------------------------
-
-// --------------------------------------------------------------
-
-
-/*! \class vasp_qmin
- \remark \b vasp.min?
- \brief Get minimum sample value
- \since 0.0.2
- \param inlet vasp - is stored and output triggered
- \param inlet bang - triggers output
- \param inlet set - vasp to be stored
- \retval outlet float - minimum sample value
-
- \remark Returns 0 for a vasp with 0 frames
-*/
-class vasp_qmin:
- public vasp_op
-{
- FLEXT_HEADER(vasp_qmin,vasp_op)
-
-public:
- vasp_qmin() {
- AddInAnything();
- AddOutList();
- }
-
- virtual F do_opt(OpParam &p,CVasp &v)
- {
- p.norm.minmax = BIG;
- Vasp *ret = VaspOp::m_qmin(p,v);
- delete ret;
- return p.norm.minmax == BIG?0:p.norm.minmax;
- }
-
- virtual V m_bang()
- {
- if(!ref.Ok()) return;
-
- AtomList ret(ref.Vectors());
- OpParam p(thisName(),0);
-
- for(I i = 0; i < ret.Count(); ++i) {
- Vasp vasp(ref.Frames(),ref.Vector(i));
- CVasp ref(vasp);
- F v = do_opt(p,ref);
- SetFloat(ret[i],v);
- }
- ToOutList(0,ret);
- }
-
- virtual V m_help() { post("%s - Get a vasp's minimum sample value",thisName()); }
-};
-
-VASP_LIB("vasp.min?",vasp_qmin)
-
-
-/*! \class vasp_qamin
- \remark \b vasp.amin?
- \brief Get minimum absolute sample value
- \since 0.0.2
- \param inlet vasp - is stored and output triggered
- \param inlet bang - triggers output
- \param inlet set - vasp to be stored
- \retval outlet float - minimum absolute sample value
-
- \todo Should we provide a cmdln default vasp?
- \todo Should we inhibit output for invalid vasps?
- \remark Returns 0 for a vasp with 0 frames
-*/
-class vasp_qamin:
- public vasp_qmin
-{
- FLEXT_HEADER(vasp_qamin,vasp_qmin)
-public:
- virtual F do_opt(OpParam &p,CVasp &v)
- {
- p.norm.minmax = BIG;
- Vasp *ret = VaspOp::m_qmin(p,v);
- delete ret;
- return p.norm.minmax == BIG?0:p.norm.minmax;
- }
-
- virtual V m_help() { post("%s - Get a vasp's minimum absolute sample value",thisName()); }
-};
-
-VASP_LIB("vasp.amin?",vasp_qamin)
-
-
-
-/*! \class vasp_qmax
- \remark \b vasp.max?
- \brief Get maximum sample value
- \since 0.0.2
- \param inlet vasp - is stored and output triggered
- \param inlet bang - triggers output
- \param inlet set - vasp to be stored
- \retval outlet float - maximum sample value
-
- \todo Should we provide a cmdln default vasp?
- \todo Should we inhibit output for invalid vasps?
- \remark Returns 0 for a vasp with 0 frames
-*/
-class vasp_qmax:
- public vasp_qmin
-{
- FLEXT_HEADER(vasp_qmax,vasp_qmin)
-public:
- virtual F do_opt(OpParam &p,CVasp &v)
- {
- p.norm.minmax = -BIG;
- Vasp *ret = VaspOp::m_qmax(p,v);
- delete ret;
- return p.norm.minmax == -BIG?0:p.norm.minmax;
- }
-
- virtual V m_help() { post("%s - Get a vasp's maximum sample value",thisName()); }
-};
-
-VASP_LIB("vasp.max?",vasp_qmax)
-
-
-
-/*! \class vasp_qamax
- \remark \b vasp.amax?
- \brief Get minimum absolute sample value
- \since 0.0.2
- \param inlet vasp - is stored and output triggered
- \param inlet bang - triggers output
- \param inlet set - vasp to be stored
- \retval outlet float - maximum absolute sample value
-
- \todo Should we provide a cmdln default vasp?
- \todo Should we inhibit output for invalid vasps?
- \remark Returns 0 for a vasp with 0 frames
-*/
-class vasp_qamax:
- public vasp_qmax
-{
- FLEXT_HEADER(vasp_qamax,vasp_qmax)
-public:
- virtual F do_opt(OpParam &p,CVasp &v)
- {
- p.norm.minmax = 0;
- Vasp *ret = VaspOp::m_qamax(p,v);
- delete ret;
- return p.norm.minmax;
- }
-
- virtual V m_help() { post("%s - Get a vasp's maximum absolute sample value",thisName()); }
-};
-
-VASP_LIB("vasp.amax?",vasp_qamax)
-
-
-
-
-/*! \class vasp_qrmin
- \remark \b vasp.rmin?
- \brief Get minimum complex radius of samples
- \since 0.0.2
- \param inlet vasp - is stored and output triggered
- \param inlet bang - triggers output
- \param inlet set - vasp to be stored
- \retval outlet list - minimum radius value per complex vector pair
-
- \todo Should we provide a cmdln default vasp?
- \todo Should we inhibit output for invalid vasps?
- \remark Returns 0 for a vasp with 0 frames
-*/
-class vasp_qrmin:
- public vasp_op
-{
- FLEXT_HEADER(vasp_qrmin,vasp_op)
-public:
- vasp_qrmin() {
- AddInAnything();
- AddOutList();
- }
-
- virtual F do_opt(OpParam &p,CVasp &v)
- {
- p.norm.minmax = BIG;
- Vasp *ret = VaspOp::m_qrmin(p,v);
- delete ret;
- return sqrt(p.norm.minmax == BIG?0:p.norm.minmax);
- }
-
- virtual V m_bang()
- {
- if(!ref.Ok()) return;
-
- AtomList ret(ref.Vectors()/2);
- OpParam p(thisName(),0);
-
- for(I i = 0; i < ret.Count(); ++i) {
- Vasp vasp(ref.Frames(),ref.Vector(i*2));
- vasp.AddVector(ref.Vector(i*2+1));
- CVasp ref(vasp);
- F v = do_opt(p,ref);
- SetFloat(ret[i],v);
- }
-
- if(ref.Vectors()%2) {
- post("%s - omitting dangling vector of complex pairs",thisName());
- }
-
- ToOutList(0,ret);
- }
-
- virtual V m_help() { post("%s - Get a vasp's minimum complex radius",thisName()); }
-};
-
-VASP_LIB("vasp.rmin?",vasp_qrmin)
-
-
-
-/*! \class vasp_qrmax
- \remark \b vasp.rmax?
- \brief Get maximum complex radius of samples
- \since 0.0.2
- \param inlet vasp - is stored and output triggered
- \param inlet bang - triggers output
- \param inlet set - vasp to be stored
- \retval outlet float - maximum radius value per complex vector pair
-
- \todo Should we provide a cmdln default vasp?
- \todo Should we inhibit output for invalid vasps?
- \remark Returns 0 for a vasp with 0 frames
-*/
-class vasp_qrmax:
- public vasp_qrmin
-{
- FLEXT_HEADER(vasp_qrmax,vasp_qrmin)
-public:
- virtual F do_opt(OpParam &p,CVasp &v)
- {
- p.norm.minmax = 0;
- Vasp *ret = VaspOp::m_qrmax(p,v);
- delete ret;
- return sqrt(p.norm.minmax);
- }
-
- virtual V m_help() { post("%s - Get a vasp's maximum complex radius",thisName()); }
-};
-
-VASP_LIB("vasp.rmax?",vasp_qrmax)
-
-
-
-
diff --git a/externals/grill/vasp/source/ops_rearr.cpp b/externals/grill/vasp/source/ops_rearr.cpp
deleted file mode 100644
index fc86b327..00000000
--- a/externals/grill/vasp/source/ops_rearr.cpp
+++ /dev/null
@@ -1,248 +0,0 @@
-/*
-
-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.
-
-*/
-
-#include "main.h"
-#include "ops_rearr.h"
-#include "oploop.h"
-#include "oppermute.h"
-
-/*! \brief vasp shift or rotation
- \todo units for shift
-*/
-Vasp *VaspOp::m_shift(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst,BL shift,BL symm)
-{
- Vasp *ret = NULL;
- RVecBlock *vecs = GetRVecs(p.opname,src,dst);
- if(vecs) {
- if(arg.IsList() && arg.GetList().Count() >= 1 && flext::CanbeFloat(arg.GetList()[0])) {
- // shift length
- p.sh.sh = flext::GetAFloat(arg.GetList()[0]);
- }
- else {
- post("%s - invalid argument -> set to 0",p.opname);
- p.sh.sh = 0;
- }
-
- ret = DoOp(vecs,shift?VecOp::d_shift:VecOp::d_rot,p,symm);
- delete vecs;
- }
-
- return ret;
-}
-
-
-/*! \brief shift buffer
-*/
-BL VecOp::d_shift(OpParam &p)
-{
- if(p.ovrlap) {
- post("%s - cannot operate on overlapped vectors",p.opname);
- return false;
- }
-
- I ish = (I)p.sh.sh;
- if(p.sh.sh != ish) { // integer shift
- // requires interpolation
- post("non-integer shift not implemented - truncating to integer");
- p.sh.sh = ish;
- }
-
- p.SkipOddMiddle();
-
- if(p.symm == 1) ish = -ish;
-
- I aish = abs(ish);
- if(aish > p.frames) aish = ish = p.frames;
-
- I i,cnt = p.frames-aish;
- const S *sd = p.rsdt-ish*p.rss;
- S *dd = p.rddt;
-
- if(ish > 0) {
- sd += (p.frames-1)*p.rss,dd += (p.frames-1)*p.rds;
- p.rss = -p.rss,p.rds = -p.rds;
- }
-
- // do shift
- if(cnt > 0) {
- if(p.rss == 1 && p.rds == 1)
- _DE_LOOP(i,cnt, ( *(dd++) = *(sd++) ) )
- else if(p.rss == -1 && p.rds == -1)
- _DE_LOOP(i,cnt, ( *(dd--) = *(sd--) ) )
- else
- _DE_LOOP(i,cnt, ( *dd = *sd,sd += p.rss,dd += p.rds ) )
- }
-
- // fill spaces
- if(p.sh.fill) {
- S vfill = p.sh.fill == 1?0:dd[-p.rds];
- I aish = abs(ish);
- if(p.rds == 1)
- _DE_LOOP(i,aish, ( *(dd++) = vfill ) )
- else if(p.rds == -1)
- _DE_LOOP(i,aish, ( *(dd--) = vfill ) )
- else
- _DE_LOOP(i,aish, ( *dd = vfill,dd += p.rds ) )
- }
-
- return true;
-}
-
-
-class vasp_shift:
- public vasp_anyop
-{
- FLEXT_HEADER_S(vasp_shift,vasp_anyop,Setup)
-public:
-
- vasp_shift(I argc,const t_atom *argv):
- vasp_anyop(argc,argv,VASP_ARG_I(0),true),
- fill(xsf_zero)
- {}
-
- static V Setup(t_classid c)
- {
- FLEXT_CADDATTR_VAR1_E(c,"fill",fill);
- }
-
- enum xs_fill {
- xsf__ = -1, // don't change
- xsf_none = 0,xsf_zero,xsf_edge
- };
-
- virtual Vasp *do_shift(OpParam &p)
- {
- CVasp cdst(dst),cref(ref);
- return VaspOp::m_shift(p,cref,arg,&cdst);
- }
-
- virtual Vasp *tx_work(const Argument &arg)
- {
- OpParam p(thisName(),0);
- p.sh.fill = (I)fill;
-
- Vasp *ret = do_shift(p);
- return ret;
- }
-
- virtual V m_help() { post("%s - Shifts buffer data",thisName()); }
-
-protected:
- xs_fill fill;
-
-private:
- FLEXT_ATTRVAR_E(fill,xs_fill)
-};
-VASP_LIB_V("vasp.shift",vasp_shift)
-
-
-class vasp_xshift:
- public vasp_shift
-{
- FLEXT_HEADER(vasp_xshift,vasp_shift)
-public:
-
- vasp_xshift(I argc,const t_atom *argv): vasp_shift(argc,argv) {}
-
- virtual Vasp *do_shift(OpParam &p)
- {
- CVasp cdst(dst),cref(ref);
- return VaspOp::m_xshift(p,cref,arg,&cdst);
- }
-
- virtual V m_help() { post("%s - Shifts buffer data symmetrically (in two halves)",thisName()); }
-};
-VASP_LIB_V("vasp.xshift",vasp_xshift)
-
-
-inline int rotation(int ij, int n,OpParam &p) { return (ij+n-p.sh.ish)%n; }
-
-#define ROTBLOCK 1024
-
-/*! \brief rotate buffer
- \todo implement temporary storage for faster transformation (use abstract permute algorithm)
-*/
-BL VecOp::d_rot(OpParam &p)
-{
- if(p.ovrlap) {
- post("%s - cannot operate on overlapped vectors",p.opname);
- return false;
- }
-
- p.sh.ish = (I)p.sh.sh;
- if(p.sh.sh != p.sh.ish) {
- // requires interpolation
- post("%s - non-integer shift not implemented - truncating to integer",p.opname);
- }
-
- p.SkipOddMiddle();
-
- p.sh.ish = p.sh.ish%p.frames;
- if(p.symm == 1) p.sh.ish = -p.sh.ish;
-
-/*
- if(p.frames >= ROTBLOCK) {
- //use temporary space;
- S *tmp = new S[ROTBLOCK];
-
- delete[] tmp;
- }
- else
-*/
- PERMUTATION(S,1,p,rotation);
- return true;
-}
-
-VASP_ANYOP("vasp.rot",rot,0,true,VASP_ARG_I(0),"Rotates buffer data")
-VASP_ANYOP("vasp.xrot",xrot,0,true,VASP_ARG_I(0),"Rotates buffer data symmetrically (in two halves)")
-
-
-/*! \brief mirror buffer
-*/
-BL VecOp::d_mirr(OpParam &p)
-{
- if(p.ovrlap) {
- post("%s - cannot operate on overlapped vectors",p.opname);
- return false;
- }
-
- p.SkipOddMiddle();
-
- if(p.rsdt == p.rddt) {
- S *dl = p.rddt,*du = p.rddt+(p.frames-1)*p.rds;
- register S t;
- _DE_WHILE(dl < du, ( t = *dl, *dl = *du, *du = t, dl += p.rds,du -= p.rds ) )
- }
- else {
- I i;
- const S *ds = p.rsdt;
- S *dd = p.rddt+(p.frames-1)*p.rds;
- _DE_LOOP(i,p.frames, ( *dd = *ds,ds += p.rss,dd -= p.rds ) )
- }
- return true;
-}
-
-/*! \brief vasp mirror
-*/
-Vasp *VaspOp::m_mirr(OpParam &p,CVasp &src,CVasp *dst,BL symm)
-{
- Vasp *ret = NULL;
- RVecBlock *vecs = GetRVecs(p.opname,src,dst);
- if(vecs) {
- ret = DoOp(vecs,VecOp::d_mirr,p,symm);
- delete vecs;
- }
- return ret;
-}
-
-VASP_UNARY("vasp.mirr",mirr,true,"Mirrors buffer data")
-VASP_UNARY("vasp.xmirr",xmirr,true,"Mirrors buffer data symmetrically (in two halves)")
-
-
diff --git a/externals/grill/vasp/source/ops_rearr.h b/externals/grill/vasp/source/ops_rearr.h
deleted file mode 100644
index aa412937..00000000
--- a/externals/grill/vasp/source/ops_rearr.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
-
-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_REARR_H
-#define __VASP_OPS_REARR_H
-
-#include "opbase.h"
-
-// Rearrange buffer
-
-namespace VecOp {
- BL d_shift(OpParam &p);
- BL d_rot(OpParam &p);
- BL d_mirr(OpParam &p);
-}
-
-namespace VaspOp {
- Vasp *m_shift(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst = NULL,BL sh = true,BL symm = false); // shift buffer
- inline Vasp *m_xshift(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst = NULL) { return m_shift(p,src,arg,dst,true,true); } // shift buffer (symmetrically)
- inline Vasp *m_rot(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst = NULL) { return m_shift(p,src,arg,dst,false,false); } // rotate buffer
- inline Vasp *m_xrot(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst = NULL) { return m_shift(p,src,arg,dst,false,true); } // rotate buffer (symmetrically)
- Vasp *m_mirr(OpParam &p,CVasp &src,CVasp *dst = NULL,BL symm = false); //! mirror buffer
- inline Vasp *m_xmirr(OpParam &p,CVasp &src,CVasp *dst = NULL) { return m_mirr(p,src,dst,true); } //! mirror buffer (symmetrically)
-
-}
-
-#endif
diff --git a/externals/grill/vasp/source/ops_resmp.cpp b/externals/grill/vasp/source/ops_resmp.cpp
deleted file mode 100644
index b37dd8dc..00000000
--- a/externals/grill/vasp/source/ops_resmp.cpp
+++ /dev/null
@@ -1,275 +0,0 @@
-/*
-
-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.
-
-*/
-
-/*! \file vasp__resmp.cpp
- \brief Routines for resampling
-*/
-
-#include "main.h"
-#include "ops_resmp.h"
-
-
-// --- resample ---------------------
-
-/*! \brief Subroutine for resampling.
-
- \param cnt frame count
- \param src source data
- \param sstr source data stride
- \param dst destination data
- \param dstr destination data stride
- \param factor resampling factor
- \param center resampling center (this will remain untouched by the transformation)
- \param mode interpolation mode
- \return true on success
-
- \todo implement averaging interpolation methods
- \todo check for operation direction!
- \todo check for src/dst overlap
- \todo support different frame lengths for src and dst
-*/
-
-static V do_tilt(OpParam &p)
-{
- I mode = p.tilt.mode;
- if(mode == 0&& (p.tilt.factor < 0 || p.tilt.center < 0 || p.tilt.factor >= p.frames)) mode = 1;
-
- const R center = p.tilt.center;
- const I icenter = (I)center;
- S fll,flr;
- if(p.tilt.fill)
- fll = p.rsdt[0],flr = p.rsdt[p.frames-1];
- else
- fll = flr = 0;
-
- if(mode >= 1 && mode <= 3) {
- S *tmp;
- I rss;
- if(p.rsdt == p.rddt) {
- tmp = new S[p.frames],rss = 1;
- for(int i = 0; i < p.frames; ++i) tmp[i] = p.rsdt[i*p.rss];
- }
- else tmp = p.rsdt,rss = p.rss;
-
- switch(mode) {
- case 1: {
- // no interpolation
- for(int i = 0; i < p.frames; ++i) {
- I pi = (I)(center+(i-center)*p.tilt.factor);
- p.rddt[i*p.rds] = pi >= 0?(pi < p.frames?tmp[pi*rss]:flr):fll;
- }
- break;
- }
- case 2: {
- // linear interpolation
- for(int i = 0; i < p.frames; ++i) {
- R pr = center+(i-center)*p.tilt.factor,v;
- I ip = (I)pr;
- if(ip >= 0)
- if(ip < p.frames-1) {
- R r = pr-ip;
- v = (1-r)*tmp[ip*rss]+r*tmp[(ip+1)*rss];
- }
- else
- v = ip == p.frames-1?tmp[ip*rss]:flr;
- else
- v = fll;
- p.rddt[i*p.rds] = v;
- }
- break;
- }
- case 3: {
- // 4-point interpolation
- R f[4];
- for(int i = 0; i < p.frames; ++i) {
- R pr = center+(i-center)*p.tilt.factor;
- const I ip = (I)pr;
- const S *t = tmp+ip*rss;
- const R r = pr-ip;
- if(ip >= 1)
- if(ip < p.frames-2) {
- f[0] = t[-rss];
- f[1] = t[0];
- f[2] = t[rss];
- f[3] = t[rss*2];
- }
- else {
- f[0] = ip < p.frames+1?t[-rss]:flr;
- f[1] = ip < p.frames?t[0]:flr;
- f[2] = ip < p.frames-1?t[rss]:flr;
- f[3] = flr;
- }
- else {
- f[0] = fll;
- f[1] = ip >= 0?t[0]:fll;
- f[2] = ip >= -1?t[rss]:fll;
- f[3] = ip >= -2?t[rss*2]:fll;
- }
-
- const R cmb = f[2]-f[1];
- p.rddt[i*p.rds] = f[1]+r*(cmb-0.5*(r-1.)*((f[0]-f[3]+3.*cmb)*r+(f[1]-f[0]-cmb)));
- }
- break;
- }
- }
-
- if(p.rsdt == p.rddt) delete[] tmp;
- }
- else {
- const R rem = center-icenter; // 0 <= rem < 1
- // quick and dirty... but in-place!
-
- if(p.tilt.factor > 1) {
- I i;
- for(i = 0; i <= icenter; ++i) {
- I sp = (I)(center-(i+rem)*p.tilt.factor);
- p.rddt[(icenter-i)*p.rds] = sp >= 0?(sp < p.frames?p.rsdt[sp*p.rss]:flr):fll;
- }
- for(i = 1; i < p.frames-icenter; ++i) {
- I sp = (I)(center+(i-rem)*p.tilt.factor);
- p.rddt[(icenter+i)*p.rds] = sp >= 0?(sp < p.frames?p.rsdt[sp*p.rss]:flr):fll;
- }
- }
- else {
- I i;
- for(i = icenter; i >= 0; --i) {
- I sp = (I)(center-(i+rem)*p.tilt.factor);
- p.rddt[(icenter-i)*p.rds] = p.rsdt[sp*p.rss];
- }
- for(i = p.frames-1-icenter; i > 0; --i) {
- I sp = (I)(center+(i-rem)*p.tilt.factor);
- p.rddt[(icenter+i)*p.rds] = p.rsdt[sp*p.rss];
- }
- }
- }
-}
-
-
-BL VecOp::d_tilt(OpParam &p)
-{
- if(p.frames <= 1 || p.tilt.factor == 1) return true;
-
- // symmetric operation
- if(p.symm == 1)
- p.tilt.center = p.frames-1-p.tilt.center;
-
- do_tilt(p);
-
- return true;
-}
-
-
-/*! \brief Does vasp resampling.
-
- \param arg argument list
- \param arg.factor factor for resampling
- \param arg.center center of resampling
- \param dst destination vasp (NULL for in-place operation)
- \param symm true for symmetric operation
- \param mode interpolation mode
- \return normalized destination vasp
-*/
-Vasp *VaspOp::m_tilt(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst,BL symm)
-{
- Vasp *ret = NULL;
- if(arg.IsList() && arg.GetList().Count() >= 1) {
- RVecBlock *vecs = GetRVecs(p.opname,src,dst);
- if(vecs) {
- p.tilt.factor = flext::GetAFloat(arg.GetList()[0]);
- p.tilt.center = arg.GetList().Count() >= 2?flext::GetAFloat(arg.GetList()[1]):0;
-
- ret = DoOp(vecs,VecOp::d_tilt,p,symm);
-
- delete vecs;
- }
- }
- else
- post("%s - no arguments: no operation",p.opName());
-
- return ret;
-}
-
-
-
-class vasp_tilt:
- public vasp_anyop
-{
- FLEXT_HEADER_S(vasp_tilt,vasp_anyop,Setup)
-public:
-
- vasp_tilt(I argc,t_atom *argv):
- vasp_anyop(argc,argv,VASP_ARG_R(1),true),
- fill(xtf_zero),inter(xti_4p)
- {}
-
- static V Setup(t_classid c)
- {
- FLEXT_CADDATTR_VAR1_E(c,"fill",fill);
- FLEXT_CADDATTR_VAR1_E(c,"inter",inter);
- }
-
- enum xt_fill {
- xtf__ = -1, // don't change
- xtf_zero = 0,xtf_edge
- };
-
- enum xt_inter {
- xti__ = -1, // don't change
- xti_inpl = 0,xti_none,xti_lin,xti_4p
- };
-
- virtual Vasp *do_shift(OpParam &p)
- {
- CVasp cdst(dst),cref(ref);
- return VaspOp::m_tilt(p,cref,arg,&cdst);
- }
-
- virtual Vasp *tx_work(const Argument &arg)
- {
- OpParam p(thisName(),1);
- p.tilt.fill = (I)fill;
- p.tilt.mode = (I)inter;
-
- Vasp *ret = do_shift(p);
- return ret;
- }
-
- virtual V m_help() { post("%s - Resamples buffer data",thisName()); }
-
-protected:
- xt_fill fill;
- xt_inter inter;
-
-private:
- FLEXT_ATTRVAR_E(fill,xt_fill)
- FLEXT_ATTRVAR_E(inter,xt_inter)
-};
-VASP_LIB_V("vasp.tilt",vasp_tilt)
-
-
-class vasp_xtilt:
- public vasp_tilt
-{
- FLEXT_HEADER(vasp_xtilt,vasp_tilt)
-public:
-
- vasp_xtilt(I argc,t_atom *argv): vasp_tilt(argc,argv) {}
-
- virtual Vasp *do_shift(OpParam &p)
- {
- CVasp cdst(dst),cref(ref);
- return VaspOp::m_xtilt(p,cref,arg,&cdst);
- }
-
- virtual V m_help() { post("%s - Resamples buffer data symmetrically (in two halves)",thisName()); }
-};
-VASP_LIB_V("vasp.xtilt",vasp_xtilt)
-
-
diff --git a/externals/grill/vasp/source/ops_resmp.h b/externals/grill/vasp/source/ops_resmp.h
deleted file mode 100644
index e164ee0b..00000000
--- a/externals/grill/vasp/source/ops_resmp.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
-
-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_RESMP_H
-#define __VASP_OPS_RESMP_H
-
-#include "opbase.h"
-
-// Resampling (around center sample)
-
-namespace VecOp {
- BL d_tilt(OpParam &p);
-}
-
-namespace VaspOp {
- Vasp *m_tilt(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst = NULL,BL symm = false);
- // Symmetric resampling (around center sample)
- inline Vasp *m_xtilt(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst = NULL) { return m_tilt(p,src,arg,dst,true); }
-}
-
-#endif
diff --git a/externals/grill/vasp/source/ops_search.cpp b/externals/grill/vasp/source/ops_search.cpp
deleted file mode 100644
index cf7e7df3..00000000
--- a/externals/grill/vasp/source/ops_search.cpp
+++ /dev/null
@@ -1,213 +0,0 @@
-/*
-
-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.
-
-*/
-
-#include "main.h"
-#include "ops_search.h"
-#include "util.h"
-#include "oploop.h"
-
-
-BL VecOp::d_search(OpParam &p)
-{
- const I off = p.srch.offs;
- const S val = p.srch.val;
- const R cur = p.rsdt[off];
-
- I i,ofl = -1,ofr = -1;
-
- if(p.srch.incl && cur == val) {
- // if @incl attribute is set and current sample matches
- ofl = ofr = off;
- }
- else {
- if(p.srch.dir <= 0) {
- BL y = cur >= val;
- i = off-1;
- _D_WHILE(i >= 0)
- BL y2 = p.rsdt[i] >= val;
- if(y != y2) {
- if(p.srch.slope <= 0 && y2) break;
- if(p.srch.slope >= 0 && !y2) break;
- }
- y = y2;
- --i;
- _E_WHILE
-
- if(i >= 0) ofl = i;
- }
-
- if(p.srch.dir >= 0) {
- BL y = cur >= val;
- i = off+1;
- _D_WHILE(i < p.frames)
- BL y2 = p.rsdt[i] >= val;
- if(y != y2) {
- if(p.srch.slope <= 0 && !y2) break;
- if(p.srch.slope >= 0 && y2) break;
- }
- y = y2;
- ++i;
- _E_WHILE
-
- if(i < p.frames) ofr = i;
- }
- }
-
- if(!p.srch.dir) {
- if(ofl >= 0) {
- p.srch.dif = ofl-off;
- if(ofr >= 0 && abs(p.srch.dif) < abs(ofr-off)) p.srch.dif = ofr-off;
- }
- else
- p.srch.dif = ofr >= 0?ofr-off:0;
- }
- else if(p.srch.dir > 0)
- p.srch.dif = ofr >= 0?ofr-off:0;
- else
- p.srch.dif = ofl >= 0?ofl-off:0;
-
- return true;
-}
-
-Vasp *VaspOp::m_search(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst,BL st)
-{
- Vasp *ret = NULL;
- if(src.Vectors() != 1)
- post("%s - Need exactly one vector in vasp!",p.opName());
- else if(arg.CanbeFloat() || (arg.IsList() && arg.GetList().Count() >= 1)) {
- I fr = src.Frames();
- I o = src.Vector(0).Offset();
-
- VBuffer *buf = src.Buffer(0);
- I sz = buf->Frames();
- delete buf;
-
- CVasp all(src);
- if(st) {
- // search start point
- p.srch.offs = o;
-
- // set bounds of search buffer
- all.Offset(0);
- all.Frames(fr+o); // all frames of buffer
- }
- else {
- // search end point
- p.srch.offs = o+fr;
- // check if current offset is past buffer
- if(p.srch.offs >= sz) p.srch.offs = sz-1;
-
- // set bounds of search buffer
- all.Offset(o);
- all.Frames(sz-o); // all frames of buffer
- }
-
- RVecBlock *vecs = GetRVecs(p.opname,all,dst);
- if(vecs) {
- p.srch.val = arg.IsList()?flext::GetAFloat(arg.GetList()[0]):arg.GetAFloat();
-
- ret = DoOp(vecs,VecOp::d_search,p);
-
- if(st) o += p.srch.dif,fr -= p.srch.dif;
- else fr += p.srch.dif;
-
- if(ret) {
- ret->Offset(o);
- ret->Frames(fr);
- ret->Frames(ret->ChkFrames()); // What's that????
- }
-
- delete vecs;
- }
- }
- else
- post("%s - no arguments: no operation",p.opName());
-
- return ret;
-}
-
-
-class vasp_search:
- public vasp_anyop
-{
- FLEXT_HEADER_S(vasp_search,vasp_anyop,Setup)
-public:
-
- vasp_search(I argc,t_atom *argv):
- vasp_anyop(argc,argv,VASP_ARG_R(0),false,XletCode(xlet_float,0)),
- slope(0),dir(0),incl(false)
- {}
-
- static V Setup(t_classid c)
- {
- FLEXT_CADDATTR_VAR1(c,"dir",dir);
- FLEXT_CADDATTR_VAR1(c,"slope",slope);
- FLEXT_CADDATTR_VAR1(c,"incl",incl);
- }
-
- virtual Vasp *do_work(OpParam &p) = 0;
-
- virtual Vasp *tx_work(const Argument &arg)
- {
- OpParam p(thisName(),1);
- p.srch.dir = dir;
- p.srch.slope = slope;
- p.srch.incl = incl;
-
- Vasp *ret = do_work(p);
- if(ret) ToOutFloat(1,p.srch.dif);
- return ret;
- }
-
-protected:
- I dir,slope;
- BL incl;
-
-private:
- FLEXT_ATTRVAR_I(dir)
- FLEXT_ATTRVAR_I(slope)
- FLEXT_ATTRVAR_B(incl)
-};
-
-
-class vasp_soffset:
- public vasp_search
-{
- FLEXT_HEADER(vasp_soffset,vasp_search)
-public:
- vasp_soffset(I argc,t_atom *argv): vasp_search(argc,argv) {}
- virtual Vasp *do_work(OpParam &p)
- {
- CVasp cdst(dst),cref(ref);
- return VaspOp::m_soffset(p,cref,arg,&cdst);
- }
-
- virtual V m_help() { post("%s - Define starting point by searching for given value",thisName()); }
-};
-VASP_LIB_V("vasp.offset= vasp.o=",vasp_soffset)
-
-
-class vasp_sframes:
- public vasp_search
-{
- FLEXT_HEADER(vasp_sframes,vasp_search)
-public:
- vasp_sframes(I argc,t_atom *argv): vasp_search(argc,argv) {}
- virtual Vasp *do_work(OpParam &p)
- {
- CVasp cdst(dst),cref(ref);
- return VaspOp::m_sframes(p,cref,arg,&cdst);
- }
-
- virtual V m_help() { post("%s - Define vasp frame length by searching for given value",thisName()); }
-};
-VASP_LIB_V("vasp.frames= vasp.f=",vasp_sframes)
-
-
diff --git a/externals/grill/vasp/source/ops_search.h b/externals/grill/vasp/source/ops_search.h
deleted file mode 100644
index ef199f71..00000000
--- a/externals/grill/vasp/source/ops_search.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
-
-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_SEARCH_H
-#define __VASP_OPS_SEARCH_H
-
-#include "opbase.h"
-
-// Sample search functions
-
-namespace VecOp {
- BL d_search(OpParam &p); //! find values
-}
-
-namespace VaspOp {
- // search functions
- Vasp *m_search(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst,BL st); //! find values
- inline Vasp *m_soffset(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst = NULL) { return m_search(p,src,arg,dst,true); }
- inline Vasp *m_sframes(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst = NULL) { return m_search(p,src,arg,dst,false); }
-}
-
-#endif
diff --git a/externals/grill/vasp/source/ops_trnsc.cpp b/externals/grill/vasp/source/ops_trnsc.cpp
deleted file mode 100644
index 8bbda8e9..00000000
--- a/externals/grill/vasp/source/ops_trnsc.cpp
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
-
-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.
-
-*/
-
-#include "main.h"
-#include "ops_trnsc.h"
-#include "opdefs.h"
-#include "util.h"
-#include <math.h>
-
-// --------------------------------------------------------------
-
-Vasp *VaspOp::m_rpow(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst)
-{
- Vasp *ret = NULL;
- CVecBlock *vecs = GetCVecs(p.opname,src,dst);
- if(vecs) {
- if(arg.IsList() && arg.GetList().Count() >= 1 && flext::CanbeFloat(arg.GetList()[0]))
- p.cbin.rarg = flext::GetAFloat(arg.GetList()[0]);
- else {
- post("%s - argument is invalid -> set to 1",p.opname);
- p.cbin.rarg = 1;
- }
- p.cbin.iarg = 0; // not used anyway
-
- ret = DoOp(vecs,VecOp::d_rpow,p);
- delete vecs;
- }
- return ret;
-}
-
-VASP_BINARY("vasp.pow",pow,true,VASP_ARG_R(1),"Real power function")
-VASP_ANYOP("vasp.rpow",rpow,0,true,VASP_ARG_R(1),"Power function acting on complex radius")
-
-
-// --------------------------------------------------------------
-
-VASP_UNARY("vasp.sqrt",sqrt,true,"Square root")
-VASP_UNARY("vasp.ssqrt",ssqrt,true,"Square root preserving the sign")
-
-// --------------------------------------------------------------
-
-VASP_UNARY("vasp.exp",exp,true,"Exponential function")
-VASP_UNARY("vasp.log",log,true,"Natural logarithm")
-
-
diff --git a/externals/grill/vasp/source/ops_trnsc.h b/externals/grill/vasp/source/ops_trnsc.h
deleted file mode 100644
index 408aeb9b..00000000
--- a/externals/grill/vasp/source/ops_trnsc.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
-
-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_TRNSC_H
-#define __VASP_OPS_TRNSC_H
-
-#include "opfuns.h"
-
-// Transcendent math functions
-
-DEFOP(S,d_pow,pow,rbin)
-DEFOP(S,d_rpow,pow,cbin)
-
-DEFOP(S,d_sqrt,sqrt,run)
-DEFOP(S,d_ssqrt,ssqrt,run)
-
-DEFOP(S,d_exp,exp,run)
-DEFOP(S,d_log,log,run)
-
-namespace VaspOp {
- inline Vasp *m_pow(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst = NULL) { return m_rbin(p,src,arg,dst,VecOp::d_pow); } // power
-
- Vasp *m_rpow(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst = NULL); // radius power (with each two channels)
-
- inline Vasp *m_sqrt(OpParam &p,CVasp &src,CVasp *dst = NULL) { return m_run(p,src,dst,VecOp::d_sqrt); } // square root (from abs value)
- inline Vasp *m_ssqrt(OpParam &p,CVasp &src,CVasp *dst = NULL) { return m_run(p,src,dst,VecOp::d_ssqrt); } // square root (from abs value)
-
- inline Vasp *m_exp(OpParam &p,CVasp &src,CVasp *dst = NULL) { return m_run(p,src,dst,VecOp::d_exp); } // exponential function
- inline Vasp *m_log(OpParam &p,CVasp &src,CVasp *dst = NULL) { return m_run(p,src,dst,VecOp::d_log); } // natural logarithm
-
-// inline Vasp *m_cexp(OpParam &p,CVasp &src,CVasp *dst = NULL) { return m_cun(p,src,dst,VecOp::d_cexp); } // complex exponential function
-// inline Vasp *m_clog(OpParam &p,CVasp &src,CVasp *dst = NULL) { return m_cun(p,src,dst,VecOp::d_clog); } // complex logarithm (how about branches?)
-
-}
-
-#endif
diff --git a/externals/grill/vasp/source/ops_wnd.cpp b/externals/grill/vasp/source/ops_wnd.cpp
deleted file mode 100644
index 278e7bf1..00000000
--- a/externals/grill/vasp/source/ops_wnd.cpp
+++ /dev/null
@@ -1,192 +0,0 @@
-/*
-
-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.
-
-*/
-
-#include "main.h"
-#include "ops_wnd.h"
-#include "oploop.h"
-#include <math.h>
-#include <string.h>
-
-#ifndef PI
-#define PI 3.1415926535897932384
-#endif
-
-// --- window --------------------------
-
-typedef R (*wfunc)(R i,const OpParam &p);
-
-inline R wf_sin(R i,const OpParam &p) { return sin(i*p.wnd.p1+p.wnd.p2); }
-inline R wf_hanning(R i,const OpParam &p) { return 0.5*(1+cos(i*p.wnd.p1+p.wnd.p2)); }
-inline R wf_hamming(R i,const OpParam &p) { return 0.54 + 0.46 * cos(i*p.wnd.p1+p.wnd.p2); }
-inline R wf_blackman(R i,const OpParam &p) { const R x = i*p.wnd.p1+p.wnd.p2; return 0.42+0.5*cos(x)+0.08*cos(2*x); }
-inline R wf_connes(R i,const OpParam &p) { const R x = i*p.wnd.p1+p.wnd.p2,x2 = 1-x*x; return x2*x2; }
-inline R wf_welch(R i,const OpParam &p) { const R x = i*p.wnd.p1+p.wnd.p2; return 1-x*x; }
-inline R wf_lanczos(R i,const OpParam &p) { const R x = i*p.wnd.p1+p.wnd.p2; return x?sin(x)/x:1; }
-//inline R wf_gaussian(R i,const OpParam &p) { const R x = i*p.wnd.p1+p.wnd.p2; return pow(2, (-1 * (x / p.wnd.p3) * (x / p.wnd.p3))); }
-//inline R wf_kaiser(R i,const OpParam &p) { const R x = i*p.wnd.p1+p.wnd.p2; return i0(p.wnd.p3 * sqrt(1 - (x * x))) / i0(p.wnd.p3); }
-
-
-static V WndOp(wfunc wf,OpParam &p) {
- register I i;
-
- if(!p.wnd.mul) {
- register S *dd = p.rddt;
- _D_LOOP(i,p.frames) *dd = wf(i,p),dd += p.rds; _E_LOOP
- }
- else {
- register const S *sd = p.rsdt;
- register S *dd = p.rddt;
- _D_LOOP(i,p.frames) *dd = *sd*wf(i,p),sd += p.rss,dd += p.rds; _E_LOOP
- }
-}
-
-#define WNDOP(WFUNC,OPP) WndOp(WFUNC,OPP)
-
-
-
-BL VecOp::d_window(OpParam &p)
-{
- // reverse direction?
- BL rev = ((p.revdir?1:0)^(p.symm == 1?1:0)^(p.wnd.inv?1:0)) != 0;
-
- // set middle sample (if existent) to 1
- if(p.oddrem) p.SkipOddMiddle(1);
-
- switch(p.wnd.wndtp) {
- case 0: { // bevel (Bartlett)
- register R inc,cur;
- inc = (rev?-1.:1.)/p.frames; // increase
- cur = rev?(1+inc/2):inc/2; // start
-
- if(!p.wnd.mul) {
- register S *dd = p.rddt;
- register I i;
- if(p.rds == 1)
- _D_LOOP(i,p.frames) *(dd++) = cur,cur += inc; _E_LOOP
- else
- _D_LOOP(i,p.frames) *dd = cur,dd += p.rds,cur += inc; _E_LOOP
- }
- else {
- register const S *sd = p.rsdt;
- register S *dd = p.rddt;
- register I i;
- if(sd == dd)
- if(p.rss == 1 && p.rds == 1)
- _D_LOOP(i,p.frames) *(dd++) *= cur,cur += inc; _E_LOOP
- else
- _D_LOOP(i,p.frames) *dd *= cur,dd += p.rds,cur += inc; _E_LOOP
- else
- if(p.rss == 1 && p.rds == 1)
- _D_LOOP(i,p.frames) *(dd++) = *(sd++) * cur,cur += inc; _E_LOOP
- else
- _D_LOOP(i,p.frames) *dd = *sd * cur,sd += p.rss,dd += p.rds,cur += inc; _E_LOOP
- }
- break;
- }
- case 1: { // sine
- p.wnd.p1 = (PI/2)/p.frames;
- p.wnd.p2 = p.wnd.p1/2+(rev?PI/2:0);
- WNDOP(wf_sin,p);
- break;
- }
- case 2: { // Hanning
- p.wnd.p1 = PI/p.frames;
- p.wnd.p2 = p.wnd.p1/2+(rev?0:PI);
- WNDOP(wf_hanning,p);
- break;
- }
- case 3: { // Hamming
- p.wnd.p1 = PI/p.frames;
- p.wnd.p2 = p.wnd.p1/2+(rev?0:PI);
- WNDOP(wf_hamming,p);
- break;
- }
- case 4: { // Blackman
- p.wnd.p1 = PI/p.frames;
- p.wnd.p2 = p.wnd.p1/2+(rev?0:PI);
- WNDOP(wf_blackman,p);
- break;
- }
- case 5: { // Connes (xxx)
- p.wnd.p1 = 1./p.frames;
- p.wnd.p2 = p.wnd.p1/2+(rev?1:0);
- WNDOP(wf_connes,p);
- break;
- }
- case 6: { // Welch (xxx)
- p.wnd.p1 = 1./p.frames;
- p.wnd.p2 = p.wnd.p1/2+(rev?1:0);
- WNDOP(wf_welch,p);
- break;
- }
- case 7: { // Lanczos (xxx)
- p.wnd.p1 = PI/p.frames;
- p.wnd.p2 = p.wnd.p1/2+(rev?0:PI);
- WNDOP(wf_lanczos,p);
- break;
- }
- default: {
- post("%s: Window function #%i not known",p.opname,p.wnd.wndtp);
- return false;
- }
- }
-
- return true;
-}
-
-Vasp *VaspOp::m_window(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst,BL inv,BL mul,BL symm)
-{
- static const int wndnum = 8;
- static const char *wndtps[wndnum] = {"lin","sin","hanning","hamming","blackman","connes","welch","lanczos" /*,"gaussian","kaiser"*/};
-
- Vasp *ret = NULL;
- RVecBlock *vecs = GetRVecs(p.opname,src,dst);
- if(vecs) {
- p.wnd.wndtp = -1;
-
- if(arg.IsList() && arg.GetList().Count() >= 1) {
- // window mode
- const flext::AtomList &l = arg.GetList();
- if(flext::IsSymbol(l[0])) {
- I i;
- const C *s = flext::GetString(l[0]);
- p.wnd.wndtp = -1;
- for(i = 0; i < wndnum; ++i)
- if(!strcmp(wndtps[i],s)) { p.wnd.wndtp = i; break; }
- }
- else if(flext::CanbeInt(l[0])) {
- p.wnd.wndtp = flext::GetAInt(l[0]);
- }
- else p.wnd.wndtp = -1;
- }
-
- if(p.wnd.wndtp < 0) {
- post("%s - invalid window type - using lin",p.opname);
- p.wnd.wndtp = 0;
- }
-
- p.wnd.inv = inv;
- p.wnd.mul = mul;
- ret = DoOp(vecs,VecOp::d_window,p,symm);
- delete vecs;
- }
-
- return ret;
-}
-
-VASP_ANYOP("vasp.window vasp.wnd",window,0,false,VASP_ARG(),"Sets target vasp to window function")
-VASP_ANYOP("vasp.*window vasp.*wnd",mwindow,0,true,VASP_ARG(),"Multiplies a vasp by window function")
-VASP_ANYOP("vasp.!window vasp.!wnd",iwindow,0,false,VASP_ARG(),"Sets target vasp to reverse window function")
-VASP_ANYOP("vasp.*!window vasp.!wnd",miwindow,0,true,VASP_ARG(),"Multiplies a vasp by reverse window function")
-VASP_ANYOP("vasp.xwindow vasp.xwnd",xwindow,0,false,VASP_ARG(),"Sets target vasp to symmetrical window function")
-VASP_ANYOP("vasp.*xwindow vasp.*xwnd",mxwindow,0,true,VASP_ARG(),"Multiplies a vasp by symmetrical window function")
-
-
-
diff --git a/externals/grill/vasp/source/ops_wnd.h b/externals/grill/vasp/source/ops_wnd.h
deleted file mode 100644
index 9103d978..00000000
--- a/externals/grill/vasp/source/ops_wnd.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
-
-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_WND_H
-#define __VASP_OPS_WND_H
-
-#include "opbase.h"
-
-// Window functions
-
-namespace VecOp {
-/*
- BL d_bevel(OpParam &p);
- BL d_mbevel(OpParam &p);
-*/
- BL d_window(OpParam &p);
-}
-
-namespace VaspOp {
-/*
- Vasp *m_bevelup(OpParam &p,CVasp &src,CVasp *dst,BL up = true,BL mul = false); // bevel up
- inline Vasp *m_mbevelup(OpParam &p,CVasp &src,CVasp *dst) { return m_bevelup(p,src,dst,true,true); } // * bevel up (fade in)
- inline Vasp *m_beveldn(OpParam &p,CVasp &src,CVasp *dst) { return m_bevelup(p,src,dst,false,false); } // bevel down
- inline Vasp *m_mbeveldn(OpParam &p,CVasp &src,CVasp *dst) { return m_bevelup(p,src,dst,false,true); } // * bevel down (fade out)
-*/
- Vasp *m_window(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst,BL inv = false,BL mul = false,BL symm = false); // window curve
- inline Vasp *m_mwindow(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst) { return m_window(p,src,arg,dst,false,true,false); } // * window curve
- inline Vasp *m_iwindow(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst) { return m_window(p,src,arg,dst,true,false,false); } // inverse window curve
- inline Vasp *m_miwindow(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst) { return m_window(p,src,arg,dst,true,true,false); } // * inverse window curve
- inline Vasp *m_xwindow(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst) { return m_window(p,src,arg,dst,false,false,true); } // symmetrical window curve
- inline Vasp *m_mxwindow(OpParam &p,CVasp &src,const Argument &arg,CVasp *dst) { return m_window(p,src,arg,dst,false,true,true); } // * symmetrical window curve
-}
-
-#endif
diff --git a/externals/grill/vasp/source/opvecs.cpp b/externals/grill/vasp/source/opvecs.cpp
deleted file mode 100644
index f78210be..00000000
--- a/externals/grill/vasp/source/opvecs.cpp
+++ /dev/null
@@ -1,631 +0,0 @@
-/*
-
-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.
-
-*/
-
-/*! \file vasp__ctrl.cpp
- \brief Methods for handling of vector data for real, complex and multi-vector cases.
-
-*/
-
-#include "main.h"
-#include "opbase.h"
-#include "classes.h"
-#include "vecblk.h"
-#include "util.h"
-
-/*! \brief Corrects for the common vector frame count
- \param frms frame count to correct
- \param bl new frame count
- \return true if a correction was made
-*/
-static BL corrlen(I &frms,I bl,I bf = -1,I bo = 0)
-{
- if(bf < 0) bf = bl;
-
- BL corr = false;
- BL all = frms < 0;
- if(all)
- frms = bl;
- else if(frms > bl) {
- // longer than vector length -> correct
- frms = bl;
- corr = true;
- }
-
- if(bo+frms > bf) {
- // now check if buffer size is exceeded
-// post("%s - %s vector (%s) exceeds buffer size: cropped",op,bli == 0?"src":"dst",bref->Name());
- frms = bf-bo;
- if(frms < 0) frms = 0;
- corr = true;
- }
-
- return corr;
-}
-
-
-inline BL corrlen(I &frms,VBuffer &b)
-{
- return corrlen(frms,b.Length(),b.Frames(),b.Offset());
-}
-
-
-/*! \brief Make real vector block for unary operations.
-
- \param op operation name
- \param src source vasp
- \param dst optional destination vasp
- \return struct with vector data
-
- \remark working size is maximum common vector size
-*/
-RVecBlock *VaspOp::GetRVecs(const C *op,CVasp &src,CVasp *dst)
-{
- I nvecs = src.Vectors();
- if(dst && dst->Ok() && dst->Vectors() != nvecs) {
- nvecs = min(nvecs,dst->Vectors());
- post("%s - src/dst vector number not equal -> taking minimum",op);
- }
-
- RVecBlock *ret = new RVecBlock(nvecs);
-
- BL ok = true,dlens = false;
- I tfrms = -1;
-
- Vasp *vbl[2] = {&src,dst};
-
- for(I bli = 0; bli < 2; ++bli)
- for(I ci = 0; ok && ci < nvecs; ++ci) {
- VBuffer *bref = NULL;
- if(vbl[bli] && vbl[bli]->Ok()) {
- bref = vbl[bli]->Buffer(ci);
- if(!bref->Data()) {
- post("%s - %s vector (%s) is invalid",op,bli == 0?"src":"dst",bref->Name());
- delete bref; bref = NULL;
- ok = false;
- }
- else
- dlens = dlens || corrlen(tfrms,*bref);
- }
-
- if(bli == 0)
- ret->Src(ci,bref);
- else
- ret->Dst(ci,bref);
- }
-
- if(dlens) post("%s - vector length has been limited to maximum common length (%i)",op,tfrms);
-
- ret->Frames(tfrms < 0?0:tfrms);
-
- if(ok) return ret;
- else { delete ret; return NULL; }
-}
-
-/*! \brief Make real vector block for unary operations.
-
- \param op operation name
- \param src source vasp
- \param dst optional destination vasp
- \param full true if imaginary part is compulsory
- \return struct with vector data
-*/
-CVecBlock *VaspOp::GetCVecs(const C *op,CVasp &src,CVasp *dst,BL full)
-{
- I nvecs = src.Vectors();
- if(dst && dst->Ok() && dst->Vectors() != nvecs) {
- nvecs = min(nvecs,dst->Vectors());
- post("%s - src/dst vector number not equal -> taking minimum",op);
- }
-
- I pairs = nvecs/2;
- if(nvecs != pairs*2)
- if(full) {
- post("%s - number of vectors is odd - not allowed",op);
- return NULL;
- }
- else {
- post("%s - number of vectors is odd - omitting last vector",op);
- }
-
- CVecBlock *ret = new CVecBlock(pairs);
- BL ok = true,dlens = false;
- I tfrms = -1;
-
- Vasp *vbl[2] = {&src,dst};
-
- for(I bli = 0; bli < 2; ++bli)
- for(I ci = 0; ci < pairs; ++ci) {
- VBuffer *bre = NULL,*bim = NULL; // complex channels
- if(vbl[bli] && vbl[bli]->Ok()) {
- const C *vnm = bli == 0?"src":"dst";
- bre = vbl[bli]->Buffer(ci*2);
- bim = vbl[bli]->Buffer(ci*2+1); // complex channels
-
- if(!bre->Data()) {
- post("%s - real %s vector (%s) is invalid",op,vnm,bre->Name());
- delete bre; bre = NULL;
- ok = false;
- }
- if(bim && !bim->Data()) {
- post("%s - imag %s vector (%s) is invalid",op,vnm,bim->Name());
- delete bim; bim = NULL;
- ok = false;
- }
-
- // check against common vector length
- if(bre) {
- dlens = dlens || corrlen(tfrms,*bre);
- }
- if(bim) {
- dlens = dlens || corrlen(tfrms,*bim);
- }
-
- }
-
- if(bli == 0)
- ret->Src(ci,bre,bim);
- else
- ret->Dst(ci,bre,bim);
- }
-
- if(dlens) post("%s - vector src/dst length has been limited to maximum common length (%i)",op,tfrms);
-
- ret->Frames(tfrms < 0?0:tfrms);
-
- if(ok) return ret;
- else { delete ret; return NULL; }
-}
-
-
-/*! \brief Make real vector block for binary operations.
-
- \param op operation name
- \param src source vasp
- \param arg argument vasp
- \param dst optional destination vasp
- \param multi 0 off/1 on/-1 auto... controls whether argument vector is single- or multi-vectored
- \return struct with vector data
-*/
-RVecBlock *VaspOp::GetRVecs(const C *op,CVasp &src,const CVasp &arg,CVasp *dst,I multi,BL ssize)
-{
- if(!arg.Ok()) {
- post("%s - invalid argument vasp detected and ignored",op);
- return NULL;
- }
-
- I nvecs = src.Vectors();
- if(dst && dst->Ok() && dst->Vectors() != nvecs) {
- nvecs = min(nvecs,dst->Vectors());
- post("%s - src/dst vector number not equal -> taking minimum",op);
- }
-
- RVecBlock *ret;
-
- if(multi < 0) { // auto mode
- multi = arg.Vectors() > 1;
- }
-
- if(multi) {
- if(arg.Vectors() < nvecs) {
- nvecs = arg.Vectors();
- post("%s - too few arg vectors, operating on only first %i vectors",op,nvecs);
- }
- ret = new RVecBlock(nvecs,nvecs,1);
- for(I i = 0; i < nvecs; ++i)
- ret->Arg(i,arg.Buffer(i));
- }
- else {
- if(arg.Vectors() > 1) {
- post("%s - using only first arg vector for all operations",op);
- }
- ret = new RVecBlock(nvecs,nvecs,1);
- for(I i = 0; i < nvecs; ++i)
- ret->Arg(i,arg.Buffer(0));
- }
-
- BL ok = true,dlens = false,dalens = false;
- I tfrms = -1,afrms = -1;
-
- for(I ci = 0; ok && ci < nvecs; ++ci) {
- VBuffer *bref = src.Buffer(ci);
- VBuffer *barg = ret->Arg(multi?ci:0);
- VBuffer *bdst = dst && dst->Ok()?dst->Buffer(ci):NULL;
-
- if(barg && (multi || ci == 0) && !barg->Data()) {
- post("%s - arg vector (%s) is invalid",op,barg->Name());
- ok = false; break; // really break?
- }
- else if(!bref->Data()) {
- post("%s - src vector (%s) is invalid",op,bref->Name());
- ok = false; break; // really break?
- }
-
- // check src/dst frame lengths
- dlens = dlens || corrlen(tfrms,*bref);
- if(bdst) dlens = dlens || corrlen(tfrms,*bdst);
-
- // check arg frame length
- if(barg) dalens = dalens || corrlen(afrms,*barg);
-
- ret->Src(ci,bref);
- if(bdst) ret->Dst(ci,bdst);
- }
-
- if(dlens) post("%s - vector src/dst length has been limited to maximum common length (%i)",op,tfrms);
- if(dalens) post("%s - vector arg length has been limited to maximum common length (%i)",op,afrms);
-
- if(ssize) {
- if(corrlen(tfrms,afrms))
- post("%s - vector src/dst and arg lengths are unequal -> set to max. common length (%i)",op,tfrms);
- afrms = tfrms;
- }
-
- ret->Frames(tfrms < 0?0:tfrms);
- ret->ArgFrames(afrms < 0?0:afrms);
-
- if(ok) return ret;
- else { delete ret; return NULL; }
-}
-
-
-/*! \brief Make real complex block for binary operations.
-
- \param op operation name
- \param src source vasp
- \param arg argument vasp
- \param dst optional destination vasp
- \param multi 0 off/1 on/-1 auto... controls whether argument vector is single- or multi-vectored
- \param full true if imaginary part is compulsory
- \return struct with vector data
-*/
-CVecBlock *VaspOp::GetCVecs(const C *op,CVasp &src,const CVasp &arg,CVasp *dst,I multi,BL ssize,BL full)
-{
- if(!arg.Ok()) {
- post("%s - invalid argument vasp detected and ignored",op);
- return NULL;
- }
-
- I nvecs = src.Vectors();
- if(dst && dst->Ok() && dst->Vectors() != nvecs) {
- nvecs = min(nvecs,dst->Vectors());
- post("%s - src/dst vector number not equal -> taking minimum",op);
- }
-
- I pairs = nvecs/2;
- CVecBlock *ret;
-
- if(multi < 0) { // auto mode
- multi = arg.Vectors() > 2; // more than one argument pair -> multi
- }
-
- if(multi) {
- I apairs = arg.Vectors()/2;
- if(arg.Vectors() != apairs*2)
- if(full) {
- post("%s - number of arg vectors is odd - not allowed",op);
- return NULL;
- }
- else {
- post("%s - number of arg vectors is odd - assuming complex part as 0",op);
- ++apairs;
- }
-
- if(apairs < pairs) {
- pairs = apairs;
- post("%s - too few arg vectors, operating on only first %i vector pairs",op,pairs);
- }
- ret = new CVecBlock(pairs,pairs,1);
- for(I i = 0; i < pairs; ++i)
- ret->Arg(i,arg.Buffer(i*2),arg.Buffer(i*2+1));
- }
- else {
- if(arg.Vectors() > 2) {
- post("%s - using only first arg vector pair for all operations",op);
- }
- ret = new CVecBlock(pairs,pairs,1);
- for(I i = 0; i < pairs; ++i)
- ret->Arg(i,arg.Buffer(0),arg.Buffer(1));
- }
-
- BL ok = true,dlens = false,dalens = false;
- I tfrms = -1,afrms = -1;
-
- {
- if(nvecs != pairs*2) {
- post("%s - number of src vectors is odd - omitting last vector",op);
- // clear superfluous vector?
- }
-
- for(I ci = 0; ok && ci < pairs; ++ci) {
- // --- arg stuff ----------------
-
- VBuffer *brarg = ret->ReArg(ci),*biarg = ret->ImArg(ci);
-
- if(multi || ci == 0) {
- if(!brarg->Data()) {
- post("%s - real arg vector (%s) is invalid",op,brarg->Name());
- ok = false; break;
- }
- else if(biarg && !biarg->Data()) {
- post("%s - imag arg vector (%s) is invalid",op,biarg->Name());
- ok = false; break;
- }
- }
-
- // check against common arg length
- if(brarg) dalens = dalens || corrlen(afrms,*brarg);
- if(biarg) dalens = dalens || corrlen(afrms,*biarg);
-
- // --- src/dst stuff ----------------
-
- VBuffer *brref = src.Buffer(ci*2),*biref = src.Buffer(ci*2+1);
- VBuffer *brdst,*bidst;
- if(dst && dst->Ok()) brdst = dst->Buffer(ci*2),bidst = dst->Buffer(ci*2+1);
- else brdst = bidst = NULL;
-
- if(!brref->Data()) {
- post("%s - real src vector (%s) is invalid",op,brref->Name());
- ok = false; break; // really break?
- }
- else if(biref && !biref->Data()) {
- post("%s - imag src vector (%s) is invalid",op,biref->Name());
- ok = false; break; // really break?
- }
- else {
- dlens = dlens || corrlen(tfrms,*brref);
- if(biref) dlens = dlens || corrlen(tfrms,*biref);
- if(brdst) dlens = dlens || corrlen(tfrms,*brdst);
- if(bidst) dlens = dlens || corrlen(tfrms,*bidst);
- }
-
- ret->Src(ci,brref,biref);
- if(brdst) ret->Dst(ci,brdst,bidst);
- }
- }
-
- if(dlens) post("%s - vector src/dst length has been limited to maximum common length (%i)",op,tfrms);
- if(dalens) post("%s - vector arg length has been limited to maximum common length (%i)",op,afrms);
-
- if(ssize) {
- if(corrlen(tfrms,afrms))
- post("%s - vector src/dst and arg lengths are unequal -> set to max. common length (%i)",op,tfrms);
- afrms = tfrms;
- }
-
- ret->Frames(tfrms < 0?0:tfrms);
- ret->ArgFrames(afrms < 0?0:afrms);
-
- if(ok) return ret;
- else { delete ret; return NULL; }
-}
-
-
-/*! \brief Run the operation on the various real vectors.
-
- \param vecs src/arg/dst vector block
- \param fun operative function
- \param p parameter block for operative function
- \return normalized vasp or NULL on error
-
- \todo set overlap flag
-
- \remark operative function must be capable of handling reversed direction
-*/
-Vasp *VaspOp::DoOp(RVecBlock *vecs,opfun *fun,OpParam &p,BL symm)
-{
- BL ok = true;
-
- if(vecs->ArgBlks() && (!p.arg || p.args < vecs->ArgBlks())) {
- post("%s - not enough argument blocks",p.opname);
- ok = false;
- }
-
- const I scnt = symm?2:1;
- for(I i = 0; ok && i < vecs->Vecs(); ++i)
- for(I si = 0; ok && si < scnt; ++si) {
- p.frames = vecs->Frames();
-
- VBuffer *s = vecs->Src(i),*d = vecs->Dst(i);
- p.rsdt = s->Pointer(),p.rss = s->Channels();
-
- if(d) p.rddt = d->Pointer(),p.rds = d->Channels();
- else p.rddt = p.rsdt,p.rds = p.rss;
-
- for(I bi = 0; bi < vecs->ArgBlks(); ++bi) {
- VBuffer *a = vecs->Arg(i,bi);
- p.arg[bi].SetV(a?a->Pointer():NULL,a?a->Channels():0);
- }
-
- if(!symm)
- p.symm = -1;
- else {
- const I hcnt = p.frames/2;
- p.oddrem = p.frames != 2*hcnt;
-
- if((p.symm = si) == 0) {
- p.frames = hcnt+(p.oddrem?1:0);
- }
- else {
- const I r = p.frames-hcnt;
- p.frames = hcnt;
- p.rsdt += r*p.rss,p.rddt += r*p.rds;
-
- // What to do with arguments in symmetric mode?
- // let the object decide!!
- }
- }
-
- { // ---- Check out and try to resolve overlap situation ------------
-
- BL sovr = p.SR_In(); // check whether dst is before src
- if(p.HasArg()) {
- // has argument
- if(sovr) {
- // src/dst needs reversal -> check if ok for arg/dst
- p.ovrlap = true;
-
- if(p.AR_Can())
- p.R_Rev(); // Revert vectors
- else {
- post("%s - vector overlap situation can't be resolved",p.opname);
- ok = false;
- }
- }
- else if(p.AR_In()) {
- // arg/dst needs reversal -> check if ok for src/dst
- p.ovrlap = true;
-
- if(p.SR_Can())
- p.R_Rev(); // Revert vectors
- else {
- post("%s - vector overlap situation can't be resolved",p.opname);
- ok = false;
- }
- }
- }
- else { // No arg
- if(sovr) {
- p.ovrlap = true;
- p.R_Rev(); // if overlapping revert vectors
- }
- else
- p.ovrlap = p.SR_Ovr();
- }
- }
-
- ok = fun(p);
-
-#ifdef FLEXT_THREAD
- flext_base::ThrYield();
-#endif
- }
- return ok?vecs->ResVasp():NULL;
-}
-
-
-/*! \brief Run the operation on the various complex vector pairs.
-
- \param vecs src/arg/dst vector block
- \param fun operative function
- \param p parameter block for operative function
- \return normalized vasp or NULL on error
-
- \todo set overlap flag
-
- \remark operative function must be capable of handling reversed direction
-*/
-Vasp *VaspOp::DoOp(CVecBlock *vecs,opfun *fun,OpParam &p,BL symm)
-{
- BL ok = true;
-
- if(vecs->ArgBlks() && (!p.arg || p.args < vecs->ArgBlks())) {
- post("%s - not enough argument blocks",p.opname);
- ok = false;
- }
-
- const I scnt = symm?2:1;
- for(I i = 0; ok && i < vecs->Pairs(); ++i)
- for(I si = 0; ok && si < scnt; ++si) {
- p.frames = vecs->Frames();
-
- VBuffer *rsv = vecs->ReSrc(i),*isv = vecs->ImSrc(i);
- p.rsdt = rsv->Pointer(),p.rss = rsv->Channels();
- p.isdt = isv->Pointer(),p.iss = isv->Channels();
-
- VBuffer *rdv = vecs->ReDst(i),*idv = vecs->ImDst(i);
- if(rdv) {
- p.rddt = rdv->Pointer(),p.rds = rdv->Channels();
- if(idv) p.iddt = idv->Pointer(),p.ids = idv->Channels();
- else p.iddt = NULL; //,p.ids = 0; // Can that be NULL??
- }
- else {
- p.rddt = p.rsdt,p.rds = p.rss,p.iddt = p.isdt,p.ids = p.iss;
- }
-
- for(I bi = 0; bi < vecs->ArgBlks(); ++bi) {
- VBuffer *rav = vecs->ReArg(i,bi),*iav = vecs->ImArg(i,bi);
- p.arg[bi].SetV(rav?rav->Pointer():NULL,rav?rav->Channels():0,iav?iav->Pointer():NULL,iav?iav->Channels():0);
- }
-
- if(!symm)
- p.symm = -1;
- else {
- const I hcnt = p.frames/2;
- p.oddrem = p.frames != 2*hcnt;
-
- if((p.symm = si) == 0) {
- p.frames = hcnt+(p.oddrem?1:0);
- }
- else {
- const I r = p.frames-hcnt;
- p.frames = hcnt;
- p.rsdt += r*p.rss,p.isdt += r*p.iss;
- p.rddt += r*p.rds;
- if(p.iddt) p.iddt += r*p.ids; // Can that be NULL??
-
- // What to do with arguments?
- // let objects decide!!
- }
- }
-
- { // ---- Check out and try to resolve overlap situation ------------
-
- BL sovr = p.SR_In(); // check whether dst is before src
- if(sovr && !p.SI_Can()) {
- post("%s - src/dst overlap of re/im vectors not resolvable",p.opname);
- ok = false;
- }
-
- if(ok && p.HasArg()) {
- // has argument
- if(sovr) {
- // src/dst needs reversal -> check if ok for arg/dst
- p.ovrlap = true;
-
- if(p.AR_Can() && p.AI_Can())
- p.C_Rev(); // Revert vectors
- else {
- post("%s - vector overlap situation can't be resolved",p.opname);
- ok = false;
- }
- }
- else if(p.AR_In() || p.AI_In()) {
- // arg/dst needs reversal -> check if ok for src/dst
- p.ovrlap = true;
-
- if(p.AR_Can() && p.AI_Can() && p.SR_Can() && p.SI_Can())
- p.C_Rev(); // Revert vectors
- else {
- post("%s - vector overlap situation can't be resolved",p.opname);
- ok = false;
- }
- }
- }
- else { // No arg
- if(sovr) {
- p.ovrlap = true;
- p.C_Rev(); // if overlapping revert vectors
- }
- else
- p.ovrlap = p.SR_Ovr() || p.SI_Ovr();
- }
- }
-
- ok = fun(p);
-
-#ifdef FLEXT_THREAD
- flext_base::ThrYield();
-#endif
- }
- return ok?vecs->ResVasp():NULL;
-}
-
-
-
diff --git a/externals/grill/vasp/source/rdx2fft.cpp b/externals/grill/vasp/source/rdx2fft.cpp
deleted file mode 100644
index b4ecf6c9..00000000
--- a/externals/grill/vasp/source/rdx2fft.cpp
+++ /dev/null
@@ -1,82 +0,0 @@
-#include <math.h>
-
-#define PI 3.1415926535897932384f
-
-//////////////////////////////////////////////////////////////////////////
-
-/* calculate bidirectional fourier transform of complex data radix 2 */
-/* adapted from subroutine FOUREA listed in */
-/* Programs for Digital Signal Processing */
-/* edited by Digital Signal Processing Committee */
-/* IEEE Acoustics Speech and Signal Processing Committee */
-/* Chapter 1 Section 1.1 Page 1.1-4,5 */
-/* direct -1 forward +1 reverse */
-
-bool fft_bidir_complex_radix2(int size,float *real,float *imag,int direct)
-{
- int i,j,m,mmax,istep;
- float c,s,treal,timag,theta;
-
- /* compute transform */
-
- j=1;
- for(i=1;i<=size;i++)
- {
- if(i<j)
- {
- treal=real[j-1];
- timag=imag[j-1];
- real[j-1]=real[i-1];
- imag[j-1]=imag[i-1];
- real[i-1]=treal;
- imag[i-1]=timag;
- }
- m=size/2;
- while(j>m)
- {
- j-=m;
- m=(m+1)/2;
- }
- j+=m;
- }
- mmax=1;
- while(size>mmax)
- {
- istep=2*mmax;
- for(m=1;m<=mmax;m++)
- {
- theta=PI*(float)direct*(float)(m-1)/(float)mmax;
- c=(float)cos(theta);
- s=(float)sin(theta);
- for(i=m;i<=size;i+=istep)
- {
- j=i+mmax;
- treal=real[j-1]*c-imag[j-1]*s;
- timag=imag[j-1]*c+real[j-1]*s;
- real[j-1]=real[i-1]-treal;
- imag[j-1]=imag[i-1]-timag;
- real[i-1]+=treal;
- imag[i-1]+=timag;
- }
- }
- mmax=istep;
- }
-
- return true;
-}
-
-#if 0
-/* calculate forward fourier transform of complex data radix 2 */
-
-bool fft_fwd_complex_radix2(int size,float *real,float *imag)
-{
- return fft_bidir_complex_radix2(size,real,imag,-1);
-}
-
-/* calculate inverse fourier transform of complex data radix 2 */
-
-bool fft_inv_complex_radix2(int size,float *real,float *imag)
-{
- return fft_bidir_complex_radix2(size,real,imag,1);
-}
-#endif
diff --git a/externals/grill/vasp/source/rvfft.cpp b/externals/grill/vasp/source/rvfft.cpp
deleted file mode 100644
index b7d81c93..00000000
--- a/externals/grill/vasp/source/rvfft.cpp
+++ /dev/null
@@ -1,357 +0,0 @@
-#include <math.h>
-
-#ifdef _MSC_VER
-#pragma warning(disable: 4244)
-#endif
-
-#define PI 3.14159265358979
-
-/////////////////////////////////////////////////////////
-// Sorensen in-place split-radix FFT for real values
-// data: array of floats:
-// re(0),re(1),re(2),...,re(size-1)
-//
-// output:
-// re(0),re(1),re(2),...,re(size/2),im(size/2-1),...,im(1)
-// normalized by array length
-//
-// Source:
-// Sorensen et al: Real-Valued Fast Fourier Transform Algorithms,
-// IEEE Trans. ASSP, ASSP-35, No. 6, June 1987
-
-void realfft_split(float *data,int n)
-{
-
- int i,j,k,i5,i6,i7,i8,i0,id,i1,i2,i3,i4,n2,n4,n8;
- float t1,t2,t3,t4,t5,t6,a3,ss1,ss3,cc1,cc3,a,e,sqrt2;
-
- sqrt2=sqrt(2.0);
- n4=n-1;
-
- //data shuffling
- for (i=0,j=0,n2=n/2; i<n4 ; i++){
- if (i<j){
- t1=data[j];
- data[j]=data[i];
- data[i]=t1;
- }
- k=n2;
- while (k<=j){
- j-=k;
- k>>=1;
- }
- j+=k;
- }
-
-/*----------------------*/
-
- //length two butterflies
- i0=0;
- id=4;
- do{
- for (; i0<n4; i0+=id){
- i1=i0+1;
- t1=data[i0];
- data[i0]=t1+data[i1];
- data[i1]=t1-data[i1];
- }
- id<<=1;
- i0=id-2;
- id<<=1;
- } while ( i0<n4 );
-
- /*----------------------*/
- //L shaped butterflies
-n2=2;
-for(k=n;k>2;k>>=1){
- n2<<=1;
- n4=n2>>2;
- n8=n2>>3;
- e = 2*PI/(n2);
- i1=0;
- id=n2<<1;
- do{
- for (; i1<n; i1+=id){
- i2=i1+n4;
- i3=i2+n4;
- i4=i3+n4;
- t1=data[i4]+data[i3];
- data[i4]-=data[i3];
- data[i3]=data[i1]-t1;
- data[i1]+=t1;
- if (n4!=1){
- i0=i1+n8;
- i2+=n8;
- i3+=n8;
- i4+=n8;
- t1=(data[i3]+data[i4])/sqrt2;
- t2=(data[i3]-data[i4])/sqrt2;
- data[i4]=data[i2]-t1;
- data[i3]=-data[i2]-t1;
- data[i2]=data[i0]-t2;
- data[i0]+=t2;
- }
- }
- id<<=1;
- i1=id-n2;
- id<<=1;
- } while ( i1<n );
- a=e;
- for (j=2; j<=n8; j++){
- a3=3*a;
- cc1=cos(a);
- ss1=sin(a);
- cc3=cos(a3);
- ss3=sin(a3);
- a=j*e;
- i=0;
- id=n2<<1;
- do{
- for (; i<n; i+=id){
- i1=i+j-1;
- i2=i1+n4;
- i3=i2+n4;
- i4=i3+n4;
- i5=i+n4-j+1;
- i6=i5+n4;
- i7=i6+n4;
- i8=i7+n4;
- t1=data[i3]*cc1+data[i7]*ss1;
- t2=data[i7]*cc1-data[i3]*ss1;
- t3=data[i4]*cc3+data[i8]*ss3;
- t4=data[i8]*cc3-data[i4]*ss3;
- t5=t1+t3;
- t6=t2+t4;
- t3=t1-t3;
- t4=t2-t4;
- t2=data[i6]+t6;
- data[i3]=t6-data[i6];
- data[i8]=t2;
- t2=data[i2]-t3;
- data[i7]=-data[i2]-t3;
- data[i4]=t2;
- t1=data[i1]+t5;
- data[i6]=data[i1]-t5;
- data[i1]=t1;
- t1=data[i5]+t4;
- data[i5]-=t4;
- data[i2]=t1;
- }
- id<<=1;
- i=id-n2;
- id<<=1;
- } while(i<n);
- }
- }
-}
-
-
-/////////////////////////////////////////////////////////
-// Sorensen in-place inverse split-radix FFT for real values
-// data: array of doubles:
-// re(0),re(1),re(2),...,re(size/2),im(size/2-1),...,im(1)
-//
-// output:
-// re(0),re(1),re(2),...,re(size-1)
-// NOT normalized by array length
-//
-// Source:
-// Sorensen et al: Real-Valued Fast Fourier Transform Algorithms,
-// IEEE Trans. ASSP, ASSP-35, No. 6, June 1987
-
-void irealfft_split(float *data,int n){
-
- int i,j,k,i5,i6,i7,i8,i0,id,i1,i2,i3,i4,n2,n4,n8,n1;
- float t1,t2,t3,t4,t5,a3,ss1,ss3,cc1,cc3,a,e,sqrt2;
-
- sqrt2=sqrt(2.0);
-
-n1=n-1;
-n2=n<<1;
-for(k=n;k>2;k>>=1){
- id=n2;
- n2>>=1;
- n4=n2>>2;
- n8=n2>>3;
- e = 2*PI/(n2);
- i1=0;
- do{
- for (; i1<n; i1+=id){
- i2=i1+n4;
- i3=i2+n4;
- i4=i3+n4;
- t1=data[i1]-data[i3];
- data[i1]+=data[i3];
- data[i2]*=2;
- data[i3]=t1-2*data[i4];
- data[i4]=t1+2*data[i4];
- if (n4!=1){
- i0=i1+n8;
- i2+=n8;
- i3+=n8;
- i4+=n8;
- t1=(data[i2]-data[i0])/sqrt2;
- t2=(data[i4]+data[i3])/sqrt2;
- data[i0]+=data[i2];
- data[i2]=data[i4]-data[i3];
- data[i3]=2*(-t2-t1);
- data[i4]=2*(-t2+t1);
- }
- }
- id<<=1;
- i1=id-n2;
- id<<=1;
- } while ( i1<n1 );
- a=e;
- for (j=2; j<=n8; j++){
- a3=3*a;
- cc1=cos(a);
- ss1=sin(a);
- cc3=cos(a3);
- ss3=sin(a3);
- a=j*e;
- i=0;
- id=n2<<1;
- do{
- for (; i<n; i+=id){
- i1=i+j-1;
- i2=i1+n4;
- i3=i2+n4;
- i4=i3+n4;
- i5=i+n4-j+1;
- i6=i5+n4;
- i7=i6+n4;
- i8=i7+n4;
- t1=data[i1]-data[i6];
- data[i1]+=data[i6];
- t2=data[i5]-data[i2];
- data[i5]+=data[i2];
- t3=data[i8]+data[i3];
- data[i6]=data[i8]-data[i3];
- t4=data[i4]+data[i7];
- data[i2]=data[i4]-data[i7];
- t5=t1-t4;
- t1+=t4;
- t4=t2-t3;
- t2+=t3;
- data[i3]=t5*cc1+t4*ss1;
- data[i7]=-t4*cc1+t5*ss1;
- data[i4]=t1*cc3-t2*ss3;
- data[i8]=t2*cc3+t1*ss3;
- }
- id<<=1;
- i=id-n2;
- id<<=1;
- } while(i<n1);
- }
- }
-
- /*----------------------*/
- i0=0;
- id=4;
- do{
- for (; i0<n1; i0+=id){
- i1=i0+1;
- t1=data[i0];
- data[i0]=t1+data[i1];
- data[i1]=t1-data[i1];
- }
- id<<=1;
- i0=id-2;
- id<<=1;
- } while ( i0<n1 );
-
-/*----------------------*/
-
-//data shuffling
- for (i=0,j=0,n2=n/2; i<n1 ; i++){
- if (i<j){
- t1=data[j];
- data[j]=data[i];
- data[i]=t1;
- }
- k=n2;
- while (k<=j){
- j-=k;
- k>>=1;
- }
- j+=k;
- }
-}
-
-
-#if 0
-/////////////////////////////////////////////////////////
-// Sorensen in-place radix-2 FFT for real values
-// data: array of floats:
-// re(0),re(1),re(2),...,re(size-1)
-//
-// output:
-// re(0),re(1),re(2),...,re(size/2),im(size/2-1),...,im(1)
-// normalized by array length
-//
-// Source:
-// Sorensen et al: Real-Valued Fast Fourier Transform Algorithms,
-// IEEE Trans. ASSP, ASSP-35, No. 6, June 1987
-
-void realfft_radix2(float *data,int n){
-
- float xt,a,e, t1, t2, cc, ss;
- int i, j, k, n1, n2, n3, n4, i1, i2, i3, i4;
-
- n4=n-1;
- //data shuffling
- for (i=0,j=0,n2=n/2; i<n4 ; i++){
- if (i<j){
- xt=data[j];
- data[j]=data[i];
- data[i]=xt;
- }
- k=n2;
- while (k<=j){
- j-=k;
- k>>=1;
- }
- j+=k;
- }
-
-/* -------------------- */
- for (i=0; i<n; i += 2)
- {
- xt = data[i];
- data[i] = xt + data[i+1];
- data[i+1] = xt - data[i+1];
- }
-/* ------------------------ */
- n2 = 1;
- for (k=n;k>2;k>>=1){
- n4 = n2;
- n2 = n4 << 1;
- n1 = n2 << 1;
- e = 2*PI/(n1);
- for (i=0; i<n; i+=n1){
- xt = data[i];
- data[i] = xt + data[i+n2];
- data[i+n2] = xt-data[i+n2];
- data[i+n4+n2] = -data[i+n4+n2];
- a = e;
- n3=n4-1;
- for (j = 1; j <=n3; j++){
- i1 = i+j;
- i2 = i - j + n2;
- i3 = i1 + n2;
- i4 = i - j + n1;
- cc = cos(a);
- ss = sin(a);
- a += e;
- t1 = data[i3] * cc + data[i4] * ss;
- t2 = data[i3] * ss - data[i4] * cc;
- data[i4] = data[i2] - t2;
- data[i3] = -data[i2] - t2;
- data[i2] = data[i1] - t1;
- data[i1] += t1;
- }
- }
- }
-}
-#endif
diff --git a/externals/grill/vasp/source/util.cpp b/externals/grill/vasp/source/util.cpp
deleted file mode 100644
index 0b1050c1..00000000
--- a/externals/grill/vasp/source/util.cpp
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
-
-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.
-
-*/
-
-#include "main.h"
-#include "util.h"
-#include <math.h>
-
-/*
-R arg(R re,R im)
-{
- if(re)
- return fmod(atan(im/re)+(re < 0?2*PI:PI),2*PI)-PI;
- else
- if(im || re) return im > 0?PI/2:-PI/2;
- else return 0;
-}
-*/
diff --git a/externals/grill/vasp/source/util.h b/externals/grill/vasp/source/util.h
deleted file mode 100644
index 7f7cd080..00000000
--- a/externals/grill/vasp/source/util.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
-
-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_UTIL_H
-#define __VASP_UTIL_H
-
-#include "main.h"
-
-#ifndef PI
-#define PI 3.1415926535897932385
-#endif
-
-#define BIG 1.e10
-
-#ifdef min
-#undef min
-#endif
-
-#ifdef max
-#undef max
-#endif
-
-template<class T>
-inline V swap(T &a,T &b) { T c = a; a = b; b = c; }
-
-template<class T>
-inline T min(T a,T b) { return a < b?a:b; }
-
-template<class T>
-inline T max(T a,T b) { return a > b?a:b; }
-
-
-template<class T>
-T arg(T re,T im)
-{
- if(re)
- return (T)(fmod(atan(im/re)+(re < 0?2*PI:PI),2*PI)-PI);
- else
- if(im || re) return (T)(im > 0?PI/2:-PI/2);
- else return 0;
-}
-
-template<class T>
-inline T sgn(T x) { return (T)(x?(x < 0?-1:1):0); }
-
-template<class T>
-inline T sqabs(T re,T im) { return re*re+im*im; }
-
-
-
-#endif
diff --git a/externals/grill/vasp/source/vasp.cpp b/externals/grill/vasp/source/vasp.cpp
deleted file mode 100644
index 3fe91330..00000000
--- a/externals/grill/vasp/source/vasp.cpp
+++ /dev/null
@@ -1,384 +0,0 @@
-/*
-
-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.
-
-*/
-
-#include "main.h"
-#include "classes.h"
-#include "util.h"
-#include "buflib.h"
-
-///////////////////////////////////////////////////////////////////////////
-// Vasp class
-///////////////////////////////////////////////////////////////////////////
-
-Vasp::Ref::Ref(VBuffer &b): sym(b.Symbol()),chn(b.Channel()),offs(b.Offset()) {}
-Vasp::Ref::Ref(VSymbol &s,I c,I o): sym(s),chn(c),offs(o) {}
-Vasp::Ref::~Ref() {}
-
-Vasp::Ref &Vasp::Ref::operator =(const Ref &r)
-{
- sym = r.sym,chn = r.chn,offs = r.offs;
- return *this;
-}
-
-V Vasp::Ref::Symbol(const VSymbol &s) { sym = s; }
-
-
-Vasp::Vasp():
- refs(0),chns(0),ref(NULL),
- frames(0)
-{
-}
-
-Vasp::Vasp(I argc,const t_atom *argv):
- refs(0),chns(0),ref(NULL),
- frames(0)
-{
- operator ()(argc,argv);
-}
-
-Vasp::Vasp(const Vasp &v):
- refs(0),chns(0),ref(NULL),
- frames(0)
-{
- operator =(v);
-}
-
-Vasp::Vasp(I fr,const Ref &r):
- refs(0),chns(0),ref(NULL),
- frames(fr)
-{
- AddVector(r);
-}
-
-
-Vasp::~Vasp()
-{
- Clear();
-}
-
-Vasp &Vasp::Clear()
-{
- refs = frames = chns = 0;
- if(ref) { delete[] ref; ref = NULL; }
- return *this;
-}
-
-
-BL Vasp::ChkArgs(I argc,const t_atom *argv)
-{
- I ix = 0;
-
- // vasp keyword
- t_symbol *v = ix < argc?flext::GetASymbol(argv[ix]):NULL;
- if(v && v == vasp_base::sym_vasp) ix++; // if it is "vasp" ignore it
-
- // length argument
- if(argc > ix && flext::CanbeInt(argv[ix])) ix++;
-
- while(argc > ix) {
- // check for symbol
- t_symbol *bsym = flext::GetASymbol(argv[ix]);
- if(!bsym || !flext::GetString(bsym) || !flext::GetString(bsym)[0]) { // expect a symbol
- // not symbol -> bail out
- return false;
- }
- else
- ix++;
-
- // check for offset
- if(argc > ix && flext::CanbeInt(argv[ix])) ix++;
-
- // check for channel
- if(argc > ix && flext::CanbeInt(argv[ix])) ix++;
- }
-
- return true;
-}
-
-V Vasp::Resize(I rcnt) {
- if(!ref) {
- ref = new Ref[refs = rcnt];
- chns = 0;
- }
- else if(rcnt > refs) {
- Ref *rnew = new Ref[refs = rcnt];
- for(I ix = 0; ix < chns; ++ix) rnew[ix] = ref[ix];
- delete[] ref;
- ref = rnew;
- }
-}
-
-
-
-Vasp &Vasp::operator =(const Vasp &v)
-{
- if(!v.Ok())
- Clear();
- else {
- frames = v.frames;
- if(!ref || v.chns > refs) {
- if(ref) delete[] ref;
- ref = new Ref[refs = v.chns];
- }
-
- chns = v.chns;
- for(I ix = 0; ix < chns; ++ix) {
- ref[ix] = v.ref[ix];
- }
- }
-
- return *this;
-}
-
-
-Vasp &Vasp::AddVector(const Ref &r)
-{
- Resize(chns+1);
- ref[chns++] = r;
- return *this;
-}
-
-
-// parse argument list
-Vasp &Vasp::operator ()(I argc,const t_atom *argv)
-{
- BL lenset = false;
- I ix = 0;
-
- I maxneeded = argc; // maximum number of ref'd buffers
- // rather use a temp storage
- if(!ref || refs < maxneeded) {
- if(ref) delete[] ref;
- ref = new Ref[refs = maxneeded];
- }
-
- t_symbol *v = ix < argc?flext::GetASymbol(argv[ix]):NULL;
- if(v && v == vasp_base::sym_vasp) ix++; // if it is "vasp" ignore it
-
- if(argc > ix && flext::CanbeInt(argv[ix])) {
- frames = flext::GetAInt(argv[ix]);
- lenset = true;
- ix++;
- }
- else
- frames = -1;
-
- chns = 0;
- while(argc > ix) {
- t_symbol *bsym = flext::GetASymbol(argv[ix]);
- if(!bsym || !flext::GetString(bsym) || !flext::GetString(bsym)[0]) { // expect a symbol
- Clear();
- return *this;
- }
- else
- ix++;
-
- // is a symbol!
- Ref &r = ref[chns];
- r.Symbol(VSymbol(bsym));
-
- if(argc > ix && flext::CanbeInt(argv[ix])) {
- r.Offset((I)flext::GetAInt(argv[ix]));
- ix++;
- }
- else
- r.Offset(0);
-
- if(argc > ix && flext::CanbeInt(argv[ix])) {
- r.Channel((I)flext::GetAInt(argv[ix]));
- ix++;
- }
- else
- r.Channel(0);
-
- chns++;
- }
-
- if(!lenset) {
- // set length to maximum!
- // or let it be -1 to represent the maximum?!
- frames = -1;
- // if len is already set then where to check for oversize?
- }
-
- return *this;
-}
-
-
-VBuffer *Vasp::Buffer(I ix) const
-{
- if(ix >= Vectors())
- return NULL;
- else {
- const Ref &r = Vector(ix);
- VBuffer *ret = BufLib::Get(r.Symbol(),r.Channel(),Frames(),r.Offset());
- return ret;
- }
-}
-
-// generate Vasp list of buffer references
-V Vasp::MakeList(flext::AtomList &ret,BL withvasp) const
-{
- I voffs = withvasp?1:0;
- I needed = voffs+1+Vectors()*3;
- ret(needed);
-
- if(withvasp)
- flext::SetSymbol(ret[0],vasp_base::sym_vasp); // VASP
-
- flext::SetInt(ret[voffs],frames); // frames
-
- for(I ix = 0; ix < Vectors(); ++ix) {
- const Ref &r = Vector(ix);
- flext::SetSymbol(ret[voffs+1+ix*3],r.Symbol().Symbol()); // buf
- flext::SetInt(ret[voffs+2+ix*3],r.Offset()); // offs
- flext::SetInt(ret[voffs+3+ix*3],r.Channel()); // chn
- }
-}
-
-
-// generate Vasp list of buffer references
-flext::AtomList *Vasp::MakeList(BL withvasp) const
-{
- flext::AtomList *ret = new flext::AtomList;
- MakeList(*ret,withvasp);
- return ret;
-}
-
-
-V Vasp::Refresh()
-{
- for(I i = 0; i < Vectors(); ++i) {
- VBuffer *vb = Buffer(i);
- if(vb) {
- vb->Refresh();
- delete vb;
- }
- }
-}
-
-V Vasp::Offset(I o)
-{
- for(I i = 0; i < Vectors(); ++i) Vector(i).Offset(o);
-}
-
-V Vasp::OffsetD(I od)
-{
- for(I i = 0; i < Vectors(); ++i) Vector(i).OffsetD(od);
-}
-
-
-V Vasp::Channel(I c)
-{
- for(I i = 0; i < Vectors(); ++i) Vector(i).Channel(c);
-}
-
-
-V Vasp::Size(I s,BL keep,BL zero)
-{
- for(I i = 0; i < Vectors(); ++i) {
- VBuffer *buf = Buffer(i);
- if(buf) {
- buf->Frames(s,keep,zero);
- delete buf;
- }
- }
-}
-
-V Vasp::SizeD(I sd,BL keep,BL zero)
-{
- for(I i = 0; i < Vectors(); ++i) {
- VBuffer *buf = Buffer(i);
- if(buf) {
- I s = buf->Frames()+sd;
- buf->Frames(s >= 0?s:0,keep,zero);
- delete buf;
- }
- }
-}
-
-
-V Vasp::SizeM(R f,BL keep,BL zero)
-{
- for(I i = 0; i < Vectors(); ++i) {
- VBuffer *buf = Buffer(i);
- if(buf) {
- I s = (I)(buf->Frames()*f);
- buf->Frames(s >= 0?s:0,keep,zero);
- delete buf;
- }
- }
-}
-
-BL Vasp::Check() const
-{
- BL ok = true;
- for(I i = 0; ok && i < Vectors(); ++i) {
- VBuffer *buf = Buffer(i);
- if(!buf)
- ok = false;
- else {
- ok = buf->Data() != NULL;
- delete buf;
- }
- }
- return ok;
-}
-
-I Vasp::ChkFrames() const
-{
- if(Vectors() == 0) return 0;
-
- I frms = -1;
- for(I i = 0; i < Vectors(); ++i) {
- VBuffer *buf = Buffer(i);
- if(buf) {
- I f = buf->Length();
- if(frms < 0 || f < frms) frms = f;
- delete buf;
- }
- }
-
- return frms < 0?0:frms;
-}
-
-
-// ------------------------------------
-
-CVasp::CVasp() {}
-
-CVasp::CVasp(const Vasp &v):
- Vasp(v)
-{
- if(!Check())
- Clear();
- else
- Frames(ChkFrames());
-}
-
-CVasp &CVasp::operator +=(const CVasp &v)
-{
- if(v.Ok()) {
- if(!Ok()) *this = v;
- else {
- I f = Frames(),vf = v.Frames();
-
- if(f != vf) {
- post("vasp - Frame count of joined vasps is different - taking the minimum");
- Frames(min(f,vf));
- }
-
- Resize(Vectors()+v.Vectors());
- for(I i = 0; i < v.Vectors(); ++i) AddVector(v.Vector(i));
- }
- }
- return *this;
-}
-
diff --git a/externals/grill/vasp/source/vasp.h b/externals/grill/vasp/source/vasp.h
deleted file mode 100644
index 0cc80be8..00000000
--- a/externals/grill/vasp/source/vasp.h
+++ /dev/null
@@ -1,161 +0,0 @@
-/*
-
-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__H
-#define __VASP__H
-
-#include "vbuffer.h"
-
-class Vasp:
- public flext
-{
-public:
- class Ref:
- public flext
- {
- public:
- Ref(): sym(NULL) {}
- Ref(VBuffer &b);
- Ref(VSymbol &s,I c,I o);
- Ref(const Ref &r) { operator =(r); }
- ~Ref();
-
- Ref &operator =(const Ref &r);
-
- V Clear() { sym.Clear(); }
- BL Ok() const { return sym.Ok(); }
-
- VSymbol &Symbol() { return sym; }
- const VSymbol &Symbol() const { return sym; }
- V Symbol(const VSymbol &s);
- I Channel() const { return chn; }
- V Channel(I c) { chn = c; }
- I Offset() const { return offs; }
- V Offset(I o) { offs = o; }
- V OffsetD(I o) { offs += o; }
-
- protected:
- VSymbol sym;
- I chn;
- I offs; // counted in frames
- };
-
- Vasp();
- Vasp(I argc,const t_atom *argv);
- Vasp(const Vasp &v);
- Vasp(I frames,const Ref &r);
- ~Vasp();
-
- static BL ChkArgs(I argc,const t_atom *argv);
-
- const C *thisName() const { return typeid(*this).name(); }
-
- // check if vasp reference is valid
- BL Check() const;
-
- Vasp &operator =(const Vasp &v);
- Vasp &operator ()(I argc,const t_atom *argv /*,BL withvasp = false*/);
-
- // set used channels to 0
- Vasp &Clear();
-
- // used vectors
- I Vectors() const { return chns; }
-
- // length of the vasp (in frames)
- I Frames() const { return frames; }
- // set frame count
- V Frames(I fr) { frames = fr; }
- // set frame count differentially
- V FramesD(I frd) { if(frames >= 0) frames += frd; }
- // set frame count
- V FramesM(R f) { if(frames >= 0) frames = (int)(frames*f); }
- // set frame count
- V FramesR(R f) { if(f) FramesM(1./f); else Frames(0); }
-
- // set buffer sizes
- V Size(I fr,BL keep = true,BL zero = true);
- // set frame count differentially
- V SizeD(I frd,BL keep = true,BL zero = true);
- // set frame count
- V SizeM(R f,BL keep = true,BL zero = true);
- // set frame count
- V SizeR(R f,BL keep = true,BL zero = true) { if(f) SizeM(1./f,keep,zero); else Size(0,false); }
-
- // actual length of the vasp (in frames)
- I ChkFrames() const;
-
- // set offset(s)
- V Offset(I fr);
- // set offset(s) differentially
- V OffsetD(I fr);
-
- // set channel(s)
- V Channel(I ch);
-
- BL Ok() const { return ref && Vectors() > 0; }
- BL IsComplex() const { return ref && Vectors() >= 2 && ref[1].Ok(); }
-
- // get any vector - test if in range 0..Vectors()-1!
- const Ref &Vector(I ix) const { return ref[ix]; }
- Ref &Vector(I ix) { return ref[ix]; }
-
- // get real part - be sure that Ok!
- const Ref &Real() const { return Vector(0); }
- Ref &Real() { return Vector(0); }
-
- // get imaginary part - be sure that Complex!
- const Ref &Imag() const { return Vector(1); }
- Ref &Imag() { return Vector(1); }
-
- // get buffer associated to a channel
- VBuffer *Buffer(I ix) const;
-
- // add another vector
- Vasp &AddVector(const Ref &r);
-
- // Real/Complex
- VBuffer *ReBuffer() const { return Buffer(0); }
- VBuffer *ImBuffer() const { return Buffer(1); }
-
- // prepare and reference t_atom list for output
- V MakeList(flext::AtomList &ret,BL withvasp = true) const;
- // prepare and reference t_atom list for output
- flext::AtomList *MakeList(BL withvasp = true) const;
-
- // make a graphical update of all buffers in vasp
- V Refresh();
-
-protected:
- I frames; // length counted in frames
- I chns; // used channels
- I refs; // allocated channels (>= chns)
- Ref *ref;
-
- V Resize(I rcnt);
-};
-
-/*! \brief Checked vasp
- \remark Only use that for immediate operation!
-*/
-class CVasp:
- public Vasp
-{
-public:
- CVasp();
- CVasp(const Vasp &v);
-
- // add vectors of another vasp
- CVasp &operator +=(const CVasp &v);
-
-};
-
-
-#endif
diff --git a/externals/grill/vasp/source/vasp.rsrc b/externals/grill/vasp/source/vasp.rsrc
deleted file mode 100755
index 632ebe43..00000000
--- a/externals/grill/vasp/source/vasp.rsrc
+++ /dev/null
@@ -1,13 +0,0 @@
-(This file must be converted with BinHex 4.0)
-:!!"bFh*M8P0&4!#3#!)RpQ8!N!3"!!!!!I!!!!$`!!!!0b"MEfjdB@PZC@3JE@9
-cFf&RC5"TEL"LD@jKFRNJ+Lm0$@KcE'PNCA+j,R*cFQ-#!!)!FR0bBe*6483"!2q
-3"!)!FR0bBe*6483"!2q3"!#3%U((pmm!N!B%Z#TLAhC`D@il#3N[+L"`BA4MD'P
-ZE'9d)'PZ)(4SDA-JF'&dBfKPFLGc)(CTFfpLDL!U,`d*#94&5'&ZC'aP)'*IG'9
-S1`Q3"#mU)(4PH(3JC@4TG'pb)'KKEQ4XC5!U,`d*I5"LAh9Z1`ep1`d0,bSJBQp
-i)'CXB@Gc)#S[$3dMC!!!!1aJ#J!!E8&i6!a#!!"1qJ!`6R8LAb!I,S"R%L"!F!!
-3%'!%%1J!!9()rrT#%%l4@8m[,`!)6VVrh#"I)!K1G8j@r[T)j`!`*Qi!#&P2,ca
-Y3AK-2c`!!DJ1)&mN5#!+Cbi[#NKZr[T)E[lm5'lr!+QS5'lr!%kkrlK)E[m!3IS
-!,NK3)'X!N!"1N!"2l`!-B!j"qJ!f5&!JD`#3!%k3!&K260m-!%jH6R@%E@&TEJ!
-!3#9c1L"ZEh3JBACKD@aKBQaP)'C[FL!f1%X!G'KTFb"[BQTPBh3JDA-JEQpd)'&
-fB@PXB@*XC5"QEh)J0MK,!*!%!3!!!!(`!!!!m!!!!$F4Y4E8!`B!!!!F!$)!!'e
-"H%`!!!!+(d!!N!B4Y4A!"(CKFh!6F!:
diff --git a/externals/grill/vasp/source/vbuffer.cpp b/externals/grill/vasp/source/vbuffer.cpp
deleted file mode 100644
index 0308358f..00000000
--- a/externals/grill/vasp/source/vbuffer.cpp
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
-
-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.
-
-*/
-
-#include "main.h"
-#include "vbuffer.h"
-#include "buflib.h"
-
-V VSymbol::Inc() { if(sym) BufLib::IncRef(sym); }
-V VSymbol::Dec() { if(sym) BufLib::DecRef(sym); }
-
-///////////////////////////////////////////////////////////////////////////
-// SysBuf class
-///////////////////////////////////////////////////////////////////////////
-
-SysBuf &SysBuf::Set(const VSymbol &s,I c,I l,I o)
-{
- buf.Set(s.Symbol());
-
- chn = c;
- if(chn > Channels()) {
- I chn1 = Channels()-1;
- post("vasp - buffer %s: Channel index (%i) is out of range, set to highest (%i)",s.Name(),chn,chn1);
- chn = chn1; // simply correct the channel??
- }
- offs = o;
- if(offs < 0) {
- post("vasp - buffer %s: Offset (%i) is out of range, set to 0",s.Name(),offs);
- offs = 0;
- }
- if(offs > Frames()) {
-// post("vasp - buffer %s: Offset (%i) is out of range, set to %i",s.Name(),offs,Frames());
- offs = Frames();
- }
- len = l >= 0?l:Frames();
- if(offs+len > Frames()) {
- I len1 = Frames()-offs;
- if(l >= 0) post("vasp - buffer %s: Length (%i) is out of range, corrected to %i",s.Name(),len,len1);
- len = len1;
- }
-
- return *this;
-}
-
-
diff --git a/externals/grill/vasp/source/vbuffer.h b/externals/grill/vasp/source/vbuffer.h
deleted file mode 100644
index a87685c9..00000000
--- a/externals/grill/vasp/source/vbuffer.h
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
-
-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_VBUFFER_H
-#define __VASP_VBUFFER_H
-
-#include "main.h"
-
-class VSymbol:
- public flext
-{
-public:
- VSymbol(const t_symbol *s = NULL): sym(s) { Inc(); }
- VSymbol(const VSymbol &s): sym(s.sym) { Inc(); }
- ~VSymbol() { Dec(); }
-
- BL Ok() const { return sym != NULL; }
- V Clear() { Dec(); sym = NULL; }
-
-// V *Thing() { return sym?flext_base::GetThing(sym):NULL; }
-// V Thing(V *th) { if(sym) flext_base::GetThing(sym); }
-
- VSymbol &operator =(const VSymbol &s) { Dec(); sym = s.sym; Inc(); return *this; }
-
- const t_symbol *Symbol() const { return sym; }
- const C *Name() const { return flext::GetAString(Symbol()); }
-
-protected:
- V Inc();
- V Dec();
-
- const t_symbol *sym;
-};
-
-class VBuffer:
- public flext
-{
-public:
- virtual ~VBuffer() {}
-
- virtual BL Ok() const = 0;
- virtual I Frames() const = 0;
- virtual V Frames(I fr,BL keep,BL zero) = 0;
-
- virtual I Channels() const = 0;
- virtual S *Data() = 0;
-
- virtual V Refresh() {}
- virtual V Dirty() {}
-
- S *Pointer() { return Data()+Offset()*Channels()+Channel(); }
-
- virtual VSymbol Symbol() const = 0;
- const C *Name() const { return Symbol().Name(); }
-
- I Channel() const { return chn; }
- V Channel(I c) { chn = c; }
-
- I Offset() const { return offs; }
- V Offset(I o) { offs = o; }
-
- I Length() const { return len; }
- V Length(I l) { len = l; }
-
-protected:
- VBuffer(I c = 0,I l = 0,I o = 0): chn(c),offs(o),len(l) {}
-
- I chn,offs,len;
-};
-
-
-class SysBuf:
- public VBuffer
-{
-public:
- SysBuf(const VSymbol &s,I chn = 0,I len = -1,I offs = 0) { Set(s,chn,len,offs); }
-
- virtual BL Ok() const { return buf.Ok(); }
- virtual V Refresh() { buf.Dirty(true); }
- virtual V Dirty() { buf.Dirty(false); }
-
- virtual VSymbol Symbol() const { return buf.Symbol(); }
-
- SysBuf &Set(const VSymbol &s,I chn = 0,I len = -1,I offs = 0);
-
- virtual I Frames() const { return buf.Frames(); }
- virtual V Frames(I fr,BL keep,BL zero) { buf.Frames(fr,keep,zero); }
-
- virtual I Channels() const { return buf.Channels(); }
- virtual S *Data() { return buf.Data(); }
-
-protected:
- flext::buffer buf;
-};
-
-
-class BufEntry;
-
-class ImmBuf:
- public VBuffer
-{
-public:
- ImmBuf(I len,BL zero = true);
- ImmBuf(BufEntry *e,I len = -1,I offs = 0);
-
- virtual BL Ok() const { return entry != NULL; }
-
- virtual VSymbol Symbol() const;
-
- virtual I Frames() const;
- virtual V Frames(I fr,BL keep,BL zero);
-
- virtual I Channels() const { return 1; }
- virtual S *Data();
-
-protected:
- BufEntry *entry;
-};
-
-
-#endif
diff --git a/externals/grill/vasp/source/vecblk.cpp b/externals/grill/vasp/source/vecblk.cpp
deleted file mode 100644
index 80917237..00000000
--- a/externals/grill/vasp/source/vecblk.cpp
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
-
-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.
-
-*/
-
-#include "main.h"
-#include "vecblk.h"
-//#include <math.h>
-
-
-///////////////////////////////////////////////////////////////////////////
-// VecBlock class
-///////////////////////////////////////////////////////////////////////////
-
-VecBlock::VecBlock(BL cx,I msrc,I mdst,I marg,I blarg):
- cplx(cx),asrc(msrc),barg(blarg),aarg(marg*blarg),adst(mdst)
-{
- I i,all = asrc+aarg*blarg+adst;
- vecs = new VBuffer *[all];
- for(i = 0; i < all; ++i) vecs[i] = NULL;
-}
-
-VecBlock::~VecBlock()
-{
- if(vecs) {
- I all = asrc+aarg*barg+adst;
- for(I i = 0; i < all; ++i)
- if(vecs[i]) delete vecs[i];
- delete[] vecs;
- }
-}
-
-Vasp *VecBlock::_DstVasp(I n)
-{
- Vasp *ret = new Vasp;
- ret->Frames(Frames());
- for(I i = 0; i < n; ++i) ret->AddVector(Vasp::Ref(*_Dst(i)));
- return ret;
-}
-
-Vasp *VecBlock::_SrcVasp(I n)
-{
- Vasp *ret = new Vasp;
- ret->Frames(Frames());
- for(I i = 0; i < n; ++i) ret->AddVector(Vasp::Ref(*_Src(i)));
- return ret;
-}
-
-Vasp *VecBlock::_ResVasp(I n)
-{
- return _Dst(0)?_DstVasp(n):_SrcVasp(n);
-}
-
-
-
diff --git a/externals/grill/vasp/source/vecblk.h b/externals/grill/vasp/source/vecblk.h
deleted file mode 100644
index 7ca4ca94..00000000
--- a/externals/grill/vasp/source/vecblk.h
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
-
-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_VECBLK_H
-#define __VASP_VECBLK_H
-
-#include "vasp.h"
-
-class VecBlock:
- public flext
-{
-public:
-
- I Frames() const { return frms; }
- V Frames(I fr) { frms = fr; }
- I ArgFrames() const { return afrms; }
- V ArgFrames(I fr) { afrms = fr; }
- I ArgBlks() const { return barg; }
-
- BL Complex() { return cplx; }
-
-protected:
- VecBlock(BL cplx,I msrc,I mdst,I marg,I blarg);
- ~VecBlock();
-
- Vasp *_SrcVasp(I n);
- Vasp *_DstVasp(I n);
- Vasp *_ResVasp(I n); // either Dst or Src
-
- VBuffer *_Src(I ix) { return vecs[ix]; }
- VBuffer *_Dst(I ix) { return vecs[asrc+aarg*barg+ix]; }
- V _Src(I ix,VBuffer *v) { vecs[ix] = v; }
- V _Dst(I ix,VBuffer *v) { vecs[asrc+aarg*barg+ix] = v; }
-
- VBuffer *_Arg(I ix,I bl = 0) { return vecs[asrc+bl*aarg+ix]; }
- V _Arg(I ix,VBuffer *v,I bl = 0) { vecs[asrc+bl*aarg+ix] = v; }
-
-private:
- BL cplx;
- I asrc,adst,aarg,barg;
- VBuffer **vecs;
- I frms,afrms;
-};
-
-
-class RVecBlock:
- public VecBlock
-{
-public:
- RVecBlock(I _n,I _a = 0,I _ba = 0): VecBlock(false,_n,_n,_a,_ba),n(_n),a(_a) {}
-
- VBuffer *Src(I ix) { return _Src(ix); }
- VBuffer *Dst(I ix) { return _Dst(ix); }
- V Src(I ix,VBuffer *v) { _Src(ix,v); }
- V Dst(I ix,VBuffer *v) { _Dst(ix,v); }
-
- VBuffer *Arg(I ix,I bl = 0) { return _Arg(ix,bl); }
- V Arg(I ix,VBuffer *v,I bl = 0) { _Arg(ix,v,bl); }
-
- I Vecs() const { return n; }
- I Args() const { return a; }
-
- Vasp *SrcVasp() { return _SrcVasp(n); }
- Vasp *DstVasp() { return _DstVasp(n); }
- Vasp *ResVasp() { return _ResVasp(n); }
-
-protected:
- I n,a;
-};
-
-class CVecBlock:
- public VecBlock
-{
-public:
- CVecBlock(I _np,I _ap = 0,I _bap = 0): VecBlock(true,_np*2,_np*2,_ap*2,_bap),np(_np),ap(_ap) {}
-
- VBuffer *ReSrc(I ix) { return _Src(ix*2); }
- VBuffer *ImSrc(I ix) { return _Src(ix*2+1); }
- VBuffer *ReDst(I ix) { return _Dst(ix*2); }
- VBuffer *ImDst(I ix) { return _Dst(ix*2+1); }
- V Src(I ix,VBuffer *vre,VBuffer *vim) { _Src(ix*2,vre); _Src(ix*2+1,vim); }
- V Dst(I ix,VBuffer *vre,VBuffer *vim) { _Dst(ix*2,vre); _Dst(ix*2+1,vim); }
-
- VBuffer *ReArg(I ix,I bl = 0) { return _Arg(ix*2,bl); }
- VBuffer *ImArg(I ix,I bl = 0) { return _Arg(ix*2+1,bl); }
- V Arg(I ix,VBuffer *vre,VBuffer *vim,I bl = 0) { _Arg(ix*2,vre,bl); _Arg(ix*2+1,vim,bl); }
-
- I Pairs() const { return np; }
- I Args() const { return ap; }
-
- Vasp *SrcVasp() { return _SrcVasp(np*2); }
- Vasp *DstVasp() { return _DstVasp(np*2); }
- Vasp *ResVasp() { return _ResVasp(np*2); }
-
-protected:
- I np,ap;
-};
-
-#endif
diff --git a/externals/grill/vasp/todo.txt b/externals/grill/vasp/todo.txt
deleted file mode 100644
index 21926ce4..00000000
--- a/externals/grill/vasp/todo.txt
+++ /dev/null
@@ -1,70 +0,0 @@
-TODO list:
-
-features:
----------------------
-- introduce attributes!!
-
-- introduce several log levels (for warning posts)
-- grab (and recompose) signals for granular vasp usage
-- vasp~s for realtime-capable vasp objects
-
-- complex power operations - delta phase
-
-- optimize (c)osc with table lookup, phasor with Höldrichs code (in pd)
-
-- how to handle beyond buffer-domain:
-warning, treat as 0, calculate unit operation, loop, mirror on buffer end, stay on last frame
-
-- better algorithm for vasp.fix
-
-- make loops interruptible ("stop" message?)
-- make in place rotation more efficient (use temporary space)
-
-
-- introduce "groups" for attribute organisation (e.g. detach etc.)
-
-- reduce number of warnings for wrong offset, frame size etc.
-
-- review vasp.f=, vasp.o= for quasi-constant envelopes
-
-
-objects:
----------------------
-- wave object for table-lookup oscs.
-- various random distributions for noise
-
-- vasp.window: one should be able to use just a portion of the windowing envelope
-
-- slope: frequency distortion with given exponent
-
-- vasp.expr
-
-- vasp.state.... current vasp, operation, progress meter
-
-- vasp.ahead (vasp.a): abstraction head - set/bang/to handling, radio outlet, attribute processing (?)
-- vasp.print (vasp.p): print vasp messages
-
-- vasp.resmp: resampling with vasp argument, instead of vasp.tilt (?)
-
-bugs:
----------------------
-
-
-tests:
----------------------
-- in-place operation (src == dst), test if strides are equal!
-- should frame count always be pre-evaluated (e.g. in vasp.f+ etc. ?)
-- test DFT objects on strided buffers
-- check for odd remainder frame on symmetric operations!!
-
-premature thoughts:
----------------------
-- interface to scripting language (python)
-
-
-documentation:
----------------------
-- have all the objects written in their full names
-- no special characters!
-
-
diff --git a/externals/grill/vasp/todo/allgemein.txt b/externals/grill/vasp/todo/allgemein.txt
deleted file mode 100644
index 325e8ec5..00000000
--- a/externals/grill/vasp/todo/allgemein.txt
+++ /dev/null
@@ -1,42 +0,0 @@
-Vasp allgemein:
----------------
-
-- nicht unwichtig: alle Operationen werden zumeist nur auf 1 (reell) oder 2 (komplex) Buffer angewendet.
- allerdings funktionieren sie immer auch für mehrere bzw. mehrere Paare
-
-
-Hilfe:
-------
-
-!! bitte die wavedisplays nicht ändern, das ist relativ kompliziert wegen graph on parent einstellungen...
-
-- Hilfe-Seite mit Abkürzungen
-
-- vasp.cnoise... Unterschied zu 2 unabhängigen vasp.noise-Kanälen demonstrieren
-
- > M: den unterschied musst du erklären, das kannst du am besten, thomas. akustisch ist der eher schwer auszumachen (oder gar nicht)
-
- >> T: mit den Laptop-Lautsprechern ist er vielleicht nicht zu hören, mit Monitoren aber sehr deutlich
-
-- vasp-xshift eigentlich nur sinnvol in verbindung mit einem fft-beispiel, ... xrot auch.
-
-- neue objekte in die "vasp_main" aufnehmen und entsprechend "gruppieren"
-
- > T: neue Objekte:
- > vasp.radio, vasp.!radio, vasp.size, vasp.size?, vasp.size+, vasp.size, vasp.size*, vasp.size/
- > vasp.frames*, vasp.frames/, vasp.imm, vasp.copy, vasp.ccopy, vasp.peaks?, vasp.fix
-
-
-- genau überlegen, ob noch "standard-soundfiles" hinzugefügt werden sollen
-
-was passiert mit vasp_size, vasp_size?, vasp_vector ??? oder doch vasp_n ???
-alle fft-objekte, erklären, wie das mit dem prime-factor funkt.
-unterschiede zwischen amin?, min?, amax?, max? besser erklären.
-
-- was ist mit abstractions (vasp_opt zum beispiel)
-
- > T: man sollte die in der Hilfe vielleicht auf eine eigene Seite stellen (vasp.pwrap, vasp.opt, vasp.ropt)
-
-
-- vasp_valleys sollte man gleich optimieren (nicht extra anklicken), oder? bei den peaks ist es dafür nicht so sinnvoll, ...
-
diff --git a/externals/grill/vasp/todo/marius.txt b/externals/grill/vasp/todo/marius.txt
deleted file mode 100644
index 735fa5f9..00000000
--- a/externals/grill/vasp/todo/marius.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-vasp.copy besser die offsets erklären
-genauso bei vasp.= nicht so komplizierte sachen...
-bei den peaks muss man erklären, was die density genau aussagt
-bei vasp.! zeigen, dass man einfach aus einem normalen einen immediate machen kann...
-phase bei den oscillatoren??
diff --git a/externals/grill/vasp/todo/neue-objekte.txt b/externals/grill/vasp/todo/neue-objekte.txt
deleted file mode 100644
index e7000804..00000000
--- a/externals/grill/vasp/todo/neue-objekte.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-liste aller objekte, die noch in die hilfe aufgenommen werden müssen
-
-die argumente \ No newline at end of file
diff --git a/externals/grill/vasp/todo/patcher-boys.txt b/externals/grill/vasp/todo/patcher-boys.txt
deleted file mode 100644
index ebf5f846..00000000
--- a/externals/grill/vasp/todo/patcher-boys.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-- Hinzufügen der neuen Objekte
-- Hilfen mit PD-Version vergleichen
-- vasp.minmax .... Hilfe ist sehr missverständlich
diff --git a/externals/grill/vasp/todo/thomas.txt b/externals/grill/vasp/todo/thomas.txt
deleted file mode 100644
index 4f9bc024..00000000
--- a/externals/grill/vasp/todo/thomas.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-Hilfe:
-- Dokumentation (inline?) der abstractions
-
-Objekte:
-- vasp.gather .. nur bang -> Ausgabe vasp 0 ???
diff --git a/externals/grill/vasp/todo/vasp-objects.csv b/externals/grill/vasp/todo/vasp-objects.csv
deleted file mode 100644
index 8d5d560e..00000000
--- a/externals/grill/vasp/todo/vasp-objects.csv
+++ /dev/null
@@ -1,164 +0,0 @@
-"internal name
-(also for help files)";"vasp name
-(if empty: internal name)";abbreviation
-
-vasp;;
-vasp.update;;vasp.u
-vasp.check;;vasp.chk
-vasp.multi;;vasp.m
-
-vasp.sync;;
-
-vasp.split;;
-vasp.join;;
-vasp.spit;;
-vasp.gather;;
-vasp.part;;
-
-vasp.imm;;vasp.!
-
-vasp.radio;;
-
-vasp.list;;vasp.?
-vasp.nonzero;;vasp.??
-
-vasp.vector;;vasp.n
-vasp.qvectors;vasp.vectors?;vasp.n?
-
-vasp.channel;;vasp.c
-vasp.qchannel;vasp.channel?;vasp.c?
-vasp.qchannels;vasp.channels?;
-
-vasp.frames;;vasp.f
-vasp.dframes;vasp.frames+;vasp.f+
-vasp.mframes;vasp.frames*;vasp.f*
-vasp.rframes;vasp.frames/;vasp.f/
-vasp.qframes;vasp.frames?;vasp.f?
-vasp.sframes;vasp.frames=;vasp.f=
-
-vasp.offset;;vasp.o
-vasp.doffset;vasp.offset+;vasp.o+
-vasp.qoffset;vasp.offset?;vasp.o?
-vasp.soffset;vasp.offset=;vasp.o=
-
-vasp.size;;vasp.s
-vasp.dsize;vasp.size+;vasp.s+
-vasp.msize;vasp.size*;vasp.s*
-vasp.rsize;vasp.size/;vasp.s/
-vasp.qsize;vasp.size?;vasp.s?
-
-vasp.set;;vasp.=
-vasp.cset;;vasp.c=
-vasp.copy;;vasp.->
-vasp.ccopy;;vasp.c->
-
-vasp.add;vasp.+;
-vasp.cadd;vasp.c+;
-vasp.sub;vasp.-;
-vasp.csub;vasp.c-;
-vasp.subr;vasp.!-;
-vasp.csubr;vasp.c!-;
-vasp.mul;vasp.*;
-vasp.cmul;vasp.c*;
-vasp.div;vasp./;
-vasp.cdiv;vasp.c/;
-vasp.divr;vasp.r/;
-vasp.cdivr;vasp.c!/;
-vasp.mod;vasp.%
-
-vasp.sqr;
-vasp.ssqr;
-vasp.csqr;
-vasp.sqrt;
-vasp.ssqrt;
-vasp.pow;
-vasp.powi;
-vasp.cpowi;
-vasp.rpow;
-vasp.radd;vasp.r+
-
-vasp.exp;
-vasp.log;
-
-vasp.sign;
-vasp.abs;
-vasp.cabs;
-
-vasp.qsum;vasp.sum?
-
-vasp.lwr;vasp.<
-vasp.gtr;vasp.>
-vasp.leq;vasp.<=
-vasp.geq;vasp.>=
-vasp.equ;vasp.==
-vasp.neq;vasp.!=
-vasp.alwr;vasp.a<
-vasp.agtr;vasp.a>
-vasp.aleq;vasp.a<=
-vasp.ageq;vasp.a>=
-
-vasp.polar;
-vasp.rect;
-
-vasp.cnorm;
-vasp.cconj;
-
-vasp.min;
-vasp.rmin;
-vasp.max;
-vasp.rmax;
-vasp.qmin;vasp.min?
-vasp.qmax;vasp.max?
-vasp.qamin;vasp.amin?
-vasp.qamax;vasp.amax?
-vasp.qrmin;vasp.rmin?
-vasp.qrmax;vasp.rmax?
-vasp.minmax;
-
-vasp.gate;
-vasp.rgate;
-
-vasp.peaks;
-vasp.rpeaks;
-vasp.valleys;
-vasp.rvalleys;
-vasp.qpeaks;vasp.peaks?
-
-vasp.shift;
-vasp.xshift;
-vasp.rot;
-vasp.xrot;
-vasp.mirr;
-vasp.xmirr;
-
-vasp.osc;
-vasp.mosc;vasp.*osc
-vasp.cosc;
-vasp.mcosc;vasp.*cosc
-vasp.phasor;
-vasp.mphasor;vasp.*phasor
-vasp.noise;
-vasp.cnoise;
-
-vasp.window;
-vasp.mwindow;vasp.*window
-vasp.iwindow;vasp.!window
-vasp.miwindow;vasp.*!window
-vasp.xwindow;
-vasp.mxwindow;vasp.*xwindow
-
-vasp.flp;
-vasp.fhp;
-
-vasp.int;
-vasp.dif;
-
-vasp.fix;
-
-vasp.tilt;
-vasp.xtilt;
-
-vasp.rfft;
-vasp.rifft;vasp.r!fft
-vasp.cfft;
-vasp.cifft;vasp.c!fft
diff --git a/externals/grill/vasp/vasp.doxy b/externals/grill/vasp/vasp.doxy
deleted file mode 100644
index 38fb121b..00000000
--- a/externals/grill/vasp/vasp.doxy
+++ /dev/null
@@ -1,188 +0,0 @@
-# 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/vasp/vasp.mcp b/externals/grill/vasp/vasp.mcp
deleted file mode 100644
index 8a8391fe..00000000
--- a/externals/grill/vasp/vasp.mcp
+++ /dev/null
Binary files differ
diff --git a/externals/grill/vasp/vasp.vcproj b/externals/grill/vasp/vasp.vcproj
deleted file mode 100644
index e47aea6e..00000000
--- a/externals/grill/vasp/vasp.vcproj
+++ /dev/null
@@ -1,2785 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="vasp">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="PD Debug|Win32"
- OutputDirectory=".\pd-msvc\d"
- IntermediateDirectory=".\pd-msvc\d"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="f:\prog\pd\pd-cvs\src,f:\prog\max\flext\source"
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;FLEXT_SYS=2;VASP_COMPACT"
- BasicRuntimeChecks="3"
- RuntimeLibrary="5"
- UsePrecompiledHeader="2"
- PrecompiledHeaderThrough="main.h"
- BrowseInformation="1"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="4"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pthreadVC.lib pd.lib"
- OutputFile=".\pd-msvc\d/vasp.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="c:\programme\audio\pd\bin"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile=".\pd-msvc\d/vasp.pdb"
- ImportLibrary=".\pd-msvc\d/vasp.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="_DEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\pd-msvc\d/vasp.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="PD Threads Debug|Win32"
- OutputDirectory=".\pd-msvc\td"
- IntermediateDirectory=".\pd-msvc\td"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="C:\data\prog\packs\pthreads\include;c:\programme\audio\pd\src;..\flext\source"
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;FLEXT_SYS=2;FLEXT_THREADS;VASP_COMPACT"
- BasicRuntimeChecks="3"
- RuntimeLibrary="1"
- UsePrecompiledHeader="2"
- PrecompiledHeaderThrough="main.h"
- BrowseInformation="1"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="4"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pthreadVC2.lib pd.lib"
- OutputFile=".\pd-msvc\td/vasp.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="c:\data\pd\pd-cvs\bin;c:\data\prog\packs\pthreads\lib"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile=".\pd-msvc\td/vasp.pdb"
- ImportLibrary=".\pd-msvc\td/vasp.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="_DEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\pd-msvc\td/vasp.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="PD Threads Release|Win32"
- OutputDirectory=".\pd-msvc\t"
- IntermediateDirectory=".\pd-msvc\t"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- GlobalOptimizations="TRUE"
- InlineFunctionExpansion="2"
- FavorSizeOrSpeed="1"
- OptimizeForProcessor="2"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src,..\flext\source"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;FLEXT_SYS=2;FLEXT_THREADS"
- StringPooling="TRUE"
- ExceptionHandling="TRUE"
- RuntimeLibrary="0"
- BufferSecurityCheck="FALSE"
- DisableLanguageExtensions="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderThrough="main.h"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pthreadVC.lib pd.lib"
- OutputFile="pd-msvc/vasp.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="c:\programme\audio\pd\bin"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile=".\pd-msvc\t/vasp.pdb"
- ImportLibrary=".\pd-msvc\t/vasp.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\pd-msvc\t/vasp.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="PD Release|Win32"
- OutputDirectory=".\pd-msvc\r"
- IntermediateDirectory=".\pd-msvc\r"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- GlobalOptimizations="TRUE"
- InlineFunctionExpansion="2"
- FavorSizeOrSpeed="1"
- OptimizeForProcessor="2"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src,f:\prog\max\flext\source"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;FLEXT_SYS=2"
- RuntimeLibrary="4"
- UsePrecompiledHeader="2"
- PrecompiledHeaderThrough="main.h"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pthreadVC.lib pd.lib"
- OutputFile=".\pd-msvc\r/vasp.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="c:\programme\audio\pd\bin"
- ImportLibrary=".\pd-msvc\r/vasp.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\pd-msvc\r/vasp.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="PD Shared Release|Win32"
- OutputDirectory=".\pd-msvc\sr"
- IntermediateDirectory=".\pd-msvc\sr"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- GlobalOptimizations="TRUE"
- InlineFunctionExpansion="2"
- FavorSizeOrSpeed="1"
- OmitFramePointers="TRUE"
- OptimizeForProcessor="3"
- OptimizeForWindowsApplication="FALSE"
- AdditionalIncludeDirectories="&quot;c:\data\prog\pd\pd-cvs\src&quot;;c:\data\prog\packs\pthreads;..\flext\source"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;FLEXT_SYS=2;FLEXT_SHARED"
- ExceptionHandling="TRUE"
- RuntimeLibrary="2"
- EnableEnhancedInstructionSet="1"
- DisableLanguageExtensions="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderThrough="main.h"
- PrecompiledHeaderFile="$(outdir)/$(TargetName).pch"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pthreadVC.lib pd.lib"
- OutputFile="$(outdir)/vasp.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="&quot;c:\data\prog\pd\pd-cvs\bin&quot;;c:\data\prog\packs\pthreads"
- GenerateDebugInformation="FALSE"
- ProgramDatabaseFile="$(outdir)/vasp.pdb"
- ImportLibrary="$(outdir)/vasp.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\pd-msvc\t/vasp.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="PD Shared Debug|Win32"
- OutputDirectory=".\pd-msvc\sd"
- IntermediateDirectory=".\pd-msvc\sd"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="f:\prog\pd\pd-cvs\src;f:\prog\packs\pthreads,f:\prog\max\flext\source"
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;FLEXT_SYS=2;FLEXT_SHARED;VASP_COMPACT"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- UsePrecompiledHeader="2"
- PrecompiledHeaderThrough="main.h"
- BrowseInformation="1"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="4"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pthreadVC.lib pd.lib"
- OutputFile=".\pd-msvc\sd/vasp.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="f:\prog\pd\pd-cvs\bin;f:\prog\packs\pthreads"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile=".\pd-msvc\td/vasp.pdb"
- ImportLibrary=".\pd-msvc\td/vasp.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="_DEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\pd-msvc\td/vasp.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="doc"
- Filter="">
- <File
- RelativePath="changes.txt">
- </File>
- <File
- RelativePath="license.txt">
- </File>
- <File
- RelativePath="readme.txt">
- </File>
- <File
- RelativePath="todo.txt">
- </File>
- </Filter>
- <Filter
- Name="vasp"
- Filter="">
- <File
- RelativePath="source\arg.cpp">
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\arg.h">
- </File>
- <File
- RelativePath="source\buflib.cpp">
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\buflib.h">
- </File>
- <File
- RelativePath="source\classes.cpp">
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\classes.h">
- </File>
- <File
- RelativePath="source\env.cpp">
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\env.h">
- </File>
- <File
- RelativePath="source\util.cpp">
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\util.h">
- </File>
- <File
- RelativePath="source\vasp.cpp">
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\vasp.h">
- </File>
- <File
- RelativePath="source\vbuffer.cpp">
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\vbuffer.h">
- </File>
- <File
- RelativePath="source\vecblk.cpp">
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\vecblk.h">
- </File>
- </Filter>
- <Filter
- Name="ops"
- Filter="">
- <File
- RelativePath="source\opbase.cpp">
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\opbase.h">
- </File>
- <File
- RelativePath="source\opdefs.h">
- </File>
- <File
- RelativePath="source\opfuns.h">
- </File>
- <File
- RelativePath="source\oploop.h">
- </File>
- <File
- RelativePath="source\opparam.cpp">
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\opparam.h">
- </File>
- <File
- RelativePath="source\oppermute.h">
- </File>
- <File
- RelativePath="source\ops.h">
- </File>
- <File
- RelativePath="source\opvecs.cpp">
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <Filter
- Name="funcs"
- Filter="">
- <File
- RelativePath="source\ops_arith.cpp">
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\ops_arith.h">
- </File>
- <File
- RelativePath="source\ops_assign.cpp">
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\ops_assign.h">
- </File>
- <File
- RelativePath="source\ops_carith.cpp">
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\ops_carith.h">
- </File>
- <File
- RelativePath="source\ops_cmp.cpp">
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\ops_cmp.h">
- </File>
- <File
- RelativePath="source\ops_cplx.cpp">
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\ops_cplx.h">
- </File>
- <File
- RelativePath="source\ops_dft.cpp">
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\ops_dft.h">
- </File>
- <File
- RelativePath="source\ops_feature.cpp">
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\ops_feature.h">
- </File>
- <File
- RelativePath="source\ops_flt.cpp">
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\ops_flt.h">
- </File>
- <File
- RelativePath="source\ops_gate.cpp">
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\ops_gen.cpp">
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\ops_gen.h">
- </File>
- <File
- RelativePath="source\ops_qminmax.cpp">
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\ops_rearr.cpp">
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\ops_rearr.h">
- </File>
- <File
- RelativePath="source\ops_resmp.cpp">
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\ops_resmp.h">
- </File>
- <File
- RelativePath="source\ops_search.cpp">
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\ops_search.h">
- </File>
- <File
- RelativePath="source\ops_trnsc.cpp">
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\ops_trnsc.h">
- </File>
- <File
- RelativePath="source\ops_wnd.cpp">
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\ops_wnd.h">
- </File>
- </Filter>
- </Filter>
- <Filter
- Name="dft"
- Filter="">
- <File
- RelativePath="source\mixfft.cpp">
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\rdx2fft.cpp">
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\rvfft.cpp">
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- </Filter>
- <Filter
- Name="objs"
- Filter="">
- <File
- RelativePath="source\obj_chns.cpp">
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\obj_frames.cpp">
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\obj_imm.cpp">
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\obj_offs.cpp">
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\obj_part.cpp">
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\obj_peaks.cpp">
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\obj_q.cpp">
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\obj_radio.cpp">
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\obj_size.cpp">
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\obj_split.cpp">
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\obj_sync.cpp">
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\obj_vasp.cpp">
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\obj_vecs.cpp">
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath="source\main.cpp">
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Threads Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\main.h">
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/externals/grill/vasp/vasp.xcodeproj/project.pbxproj b/externals/grill/vasp/vasp.xcodeproj/project.pbxproj
deleted file mode 100644
index 049affb7..00000000
--- a/externals/grill/vasp/vasp.xcodeproj/project.pbxproj
+++ /dev/null
@@ -1,507 +0,0 @@
-// !$*UTF8*$!
-{
- archiveVersion = 1;
- classes = {
- };
- objectVersion = 42;
- objects = {
-
-/* Begin PBXBuildFile section */
- E9EACC230B7D6883002F61CC /* arg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9EACBD90B7D6883002F61CC /* arg.cpp */; };
- E9EACC240B7D6883002F61CC /* arg.h in Headers */ = {isa = PBXBuildFile; fileRef = E9EACBDA0B7D6883002F61CC /* arg.h */; };
- E9EACC250B7D6883002F61CC /* buflib.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9EACBDB0B7D6883002F61CC /* buflib.cpp */; };
- E9EACC260B7D6883002F61CC /* buflib.h in Headers */ = {isa = PBXBuildFile; fileRef = E9EACBDC0B7D6883002F61CC /* buflib.h */; };
- E9EACC270B7D6883002F61CC /* classes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9EACBDD0B7D6883002F61CC /* classes.cpp */; };
- E9EACC280B7D6883002F61CC /* classes.h in Headers */ = {isa = PBXBuildFile; fileRef = E9EACBDE0B7D6883002F61CC /* classes.h */; };
- E9EACC290B7D6883002F61CC /* env.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9EACBDF0B7D6883002F61CC /* env.cpp */; };
- E9EACC2A0B7D6883002F61CC /* env.h in Headers */ = {isa = PBXBuildFile; fileRef = E9EACBE00B7D6883002F61CC /* env.h */; };
- E9EACC2B0B7D6883002F61CC /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9EACBE10B7D6883002F61CC /* main.cpp */; };
- E9EACC2C0B7D6883002F61CC /* main.h in Headers */ = {isa = PBXBuildFile; fileRef = E9EACBE20B7D6883002F61CC /* main.h */; };
- E9EACC2D0B7D6883002F61CC /* mixfft.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9EACBE30B7D6883002F61CC /* mixfft.cpp */; };
- E9EACC2E0B7D6883002F61CC /* obj_chns.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9EACBE40B7D6883002F61CC /* obj_chns.cpp */; };
- E9EACC2F0B7D6883002F61CC /* obj_frames.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9EACBE50B7D6883002F61CC /* obj_frames.cpp */; };
- E9EACC300B7D6883002F61CC /* obj_imm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9EACBE60B7D6883002F61CC /* obj_imm.cpp */; };
- E9EACC310B7D6883002F61CC /* obj_offs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9EACBE70B7D6883002F61CC /* obj_offs.cpp */; };
- E9EACC320B7D6883002F61CC /* obj_part.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9EACBE80B7D6883002F61CC /* obj_part.cpp */; };
- E9EACC330B7D6883002F61CC /* obj_peaks.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9EACBE90B7D6883002F61CC /* obj_peaks.cpp */; };
- E9EACC340B7D6883002F61CC /* obj_q.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9EACBEA0B7D6883002F61CC /* obj_q.cpp */; };
- E9EACC350B7D6883002F61CC /* obj_radio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9EACBEB0B7D6883002F61CC /* obj_radio.cpp */; };
- E9EACC360B7D6883002F61CC /* obj_size.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9EACBEC0B7D6883002F61CC /* obj_size.cpp */; };
- E9EACC370B7D6883002F61CC /* obj_split.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9EACBED0B7D6883002F61CC /* obj_split.cpp */; };
- E9EACC380B7D6883002F61CC /* obj_sync.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9EACBEE0B7D6883002F61CC /* obj_sync.cpp */; };
- E9EACC390B7D6883002F61CC /* obj_vasp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9EACBEF0B7D6883002F61CC /* obj_vasp.cpp */; };
- E9EACC3A0B7D6883002F61CC /* obj_vecs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9EACBF00B7D6883002F61CC /* obj_vecs.cpp */; };
- E9EACC3B0B7D6883002F61CC /* opbase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9EACBF10B7D6883002F61CC /* opbase.cpp */; };
- E9EACC3C0B7D6883002F61CC /* opbase.h in Headers */ = {isa = PBXBuildFile; fileRef = E9EACBF20B7D6883002F61CC /* opbase.h */; };
- E9EACC3D0B7D6883002F61CC /* opdefs.h in Headers */ = {isa = PBXBuildFile; fileRef = E9EACBF30B7D6883002F61CC /* opdefs.h */; };
- E9EACC3E0B7D6883002F61CC /* opfuns.h in Headers */ = {isa = PBXBuildFile; fileRef = E9EACBF40B7D6883002F61CC /* opfuns.h */; };
- E9EACC3F0B7D6883002F61CC /* oploop.h in Headers */ = {isa = PBXBuildFile; fileRef = E9EACBF50B7D6883002F61CC /* oploop.h */; };
- E9EACC400B7D6883002F61CC /* opparam.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9EACBF60B7D6883002F61CC /* opparam.cpp */; };
- E9EACC410B7D6883002F61CC /* opparam.h in Headers */ = {isa = PBXBuildFile; fileRef = E9EACBF70B7D6883002F61CC /* opparam.h */; };
- E9EACC420B7D6883002F61CC /* oppermute.h in Headers */ = {isa = PBXBuildFile; fileRef = E9EACBF80B7D6883002F61CC /* oppermute.h */; };
- E9EACC430B7D6883002F61CC /* ops_arith.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9EACBF90B7D6883002F61CC /* ops_arith.cpp */; };
- E9EACC440B7D6883002F61CC /* ops_arith.h in Headers */ = {isa = PBXBuildFile; fileRef = E9EACBFA0B7D6883002F61CC /* ops_arith.h */; };
- E9EACC450B7D6883002F61CC /* ops_assign.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9EACBFB0B7D6883002F61CC /* ops_assign.cpp */; };
- E9EACC460B7D6883002F61CC /* ops_assign.h in Headers */ = {isa = PBXBuildFile; fileRef = E9EACBFC0B7D6883002F61CC /* ops_assign.h */; };
- E9EACC470B7D6883002F61CC /* ops_carith.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9EACBFD0B7D6883002F61CC /* ops_carith.cpp */; };
- E9EACC480B7D6883002F61CC /* ops_carith.h in Headers */ = {isa = PBXBuildFile; fileRef = E9EACBFE0B7D6883002F61CC /* ops_carith.h */; };
- E9EACC490B7D6883002F61CC /* ops_cmp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9EACBFF0B7D6883002F61CC /* ops_cmp.cpp */; };
- E9EACC4A0B7D6883002F61CC /* ops_cmp.h in Headers */ = {isa = PBXBuildFile; fileRef = E9EACC000B7D6883002F61CC /* ops_cmp.h */; };
- E9EACC4B0B7D6883002F61CC /* ops_cplx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9EACC010B7D6883002F61CC /* ops_cplx.cpp */; };
- E9EACC4C0B7D6883002F61CC /* ops_cplx.h in Headers */ = {isa = PBXBuildFile; fileRef = E9EACC020B7D6883002F61CC /* ops_cplx.h */; };
- E9EACC4D0B7D6883002F61CC /* ops_dft.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9EACC030B7D6883002F61CC /* ops_dft.cpp */; };
- E9EACC4E0B7D6883002F61CC /* ops_dft.h in Headers */ = {isa = PBXBuildFile; fileRef = E9EACC040B7D6883002F61CC /* ops_dft.h */; };
- E9EACC4F0B7D6883002F61CC /* ops_feature.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9EACC050B7D6883002F61CC /* ops_feature.cpp */; };
- E9EACC500B7D6883002F61CC /* ops_feature.h in Headers */ = {isa = PBXBuildFile; fileRef = E9EACC060B7D6883002F61CC /* ops_feature.h */; };
- E9EACC510B7D6883002F61CC /* ops_flt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9EACC070B7D6883002F61CC /* ops_flt.cpp */; };
- E9EACC520B7D6883002F61CC /* ops_flt.h in Headers */ = {isa = PBXBuildFile; fileRef = E9EACC080B7D6883002F61CC /* ops_flt.h */; };
- E9EACC530B7D6883002F61CC /* ops_gate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9EACC090B7D6883002F61CC /* ops_gate.cpp */; };
- E9EACC540B7D6883002F61CC /* ops_gen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9EACC0A0B7D6883002F61CC /* ops_gen.cpp */; };
- E9EACC550B7D6883002F61CC /* ops_gen.h in Headers */ = {isa = PBXBuildFile; fileRef = E9EACC0B0B7D6883002F61CC /* ops_gen.h */; };
- E9EACC560B7D6883002F61CC /* ops_qminmax.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9EACC0C0B7D6883002F61CC /* ops_qminmax.cpp */; };
- E9EACC570B7D6883002F61CC /* ops_rearr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9EACC0D0B7D6883002F61CC /* ops_rearr.cpp */; };
- E9EACC580B7D6883002F61CC /* ops_rearr.h in Headers */ = {isa = PBXBuildFile; fileRef = E9EACC0E0B7D6883002F61CC /* ops_rearr.h */; };
- E9EACC590B7D6883002F61CC /* ops_resmp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9EACC0F0B7D6883002F61CC /* ops_resmp.cpp */; };
- E9EACC5A0B7D6883002F61CC /* ops_resmp.h in Headers */ = {isa = PBXBuildFile; fileRef = E9EACC100B7D6883002F61CC /* ops_resmp.h */; };
- E9EACC5B0B7D6883002F61CC /* ops_search.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9EACC110B7D6883002F61CC /* ops_search.cpp */; };
- E9EACC5C0B7D6883002F61CC /* ops_search.h in Headers */ = {isa = PBXBuildFile; fileRef = E9EACC120B7D6883002F61CC /* ops_search.h */; };
- E9EACC5D0B7D6883002F61CC /* ops_trnsc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9EACC130B7D6883002F61CC /* ops_trnsc.cpp */; };
- E9EACC5E0B7D6883002F61CC /* ops_trnsc.h in Headers */ = {isa = PBXBuildFile; fileRef = E9EACC140B7D6883002F61CC /* ops_trnsc.h */; };
- E9EACC5F0B7D6883002F61CC /* ops_wnd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9EACC150B7D6883002F61CC /* ops_wnd.cpp */; };
- E9EACC600B7D6883002F61CC /* ops_wnd.h in Headers */ = {isa = PBXBuildFile; fileRef = E9EACC160B7D6883002F61CC /* ops_wnd.h */; };
- E9EACC610B7D6883002F61CC /* ops.h in Headers */ = {isa = PBXBuildFile; fileRef = E9EACC170B7D6883002F61CC /* ops.h */; };
- E9EACC620B7D6883002F61CC /* opvecs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9EACC180B7D6883002F61CC /* opvecs.cpp */; };
- E9EACC630B7D6883002F61CC /* rdx2fft.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9EACC190B7D6883002F61CC /* rdx2fft.cpp */; };
- E9EACC640B7D6883002F61CC /* rvfft.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9EACC1A0B7D6883002F61CC /* rvfft.cpp */; };
- E9EACC650B7D6883002F61CC /* util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9EACC1B0B7D6883002F61CC /* util.cpp */; };
- E9EACC660B7D6883002F61CC /* util.h in Headers */ = {isa = PBXBuildFile; fileRef = E9EACC1C0B7D6883002F61CC /* util.h */; };
- E9EACC670B7D6883002F61CC /* vasp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9EACC1D0B7D6883002F61CC /* vasp.cpp */; };
- E9EACC680B7D6883002F61CC /* vasp.h in Headers */ = {isa = PBXBuildFile; fileRef = E9EACC1E0B7D6883002F61CC /* vasp.h */; };
- E9EACC690B7D6883002F61CC /* vbuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9EACC1F0B7D6883002F61CC /* vbuffer.cpp */; };
- E9EACC6A0B7D6883002F61CC /* vbuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = E9EACC200B7D6883002F61CC /* vbuffer.h */; };
- E9EACC6B0B7D6883002F61CC /* vecblk.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9EACC210B7D6883002F61CC /* vecblk.cpp */; };
- E9EACC6C0B7D6883002F61CC /* vecblk.h in Headers */ = {isa = PBXBuildFile; fileRef = E9EACC220B7D6883002F61CC /* vecblk.h */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXFileReference section */
- D2AAC0630554660B00DB518D /* vasp.pd_darwin */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = vasp.pd_darwin; sourceTree = BUILT_PRODUCTS_DIR; };
- E9EACBD90B7D6883002F61CC /* arg.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = arg.cpp; path = source/arg.cpp; sourceTree = "<group>"; };
- E9EACBDA0B7D6883002F61CC /* arg.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = arg.h; path = source/arg.h; sourceTree = "<group>"; };
- E9EACBDB0B7D6883002F61CC /* buflib.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = buflib.cpp; path = source/buflib.cpp; sourceTree = "<group>"; };
- E9EACBDC0B7D6883002F61CC /* buflib.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = buflib.h; path = source/buflib.h; sourceTree = "<group>"; };
- E9EACBDD0B7D6883002F61CC /* classes.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = classes.cpp; path = source/classes.cpp; sourceTree = "<group>"; };
- E9EACBDE0B7D6883002F61CC /* classes.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = classes.h; path = source/classes.h; sourceTree = "<group>"; };
- E9EACBDF0B7D6883002F61CC /* env.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = env.cpp; path = source/env.cpp; sourceTree = "<group>"; };
- E9EACBE00B7D6883002F61CC /* env.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = env.h; path = source/env.h; sourceTree = "<group>"; };
- E9EACBE10B7D6883002F61CC /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = main.cpp; path = source/main.cpp; sourceTree = "<group>"; };
- E9EACBE20B7D6883002F61CC /* main.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = main.h; path = source/main.h; sourceTree = "<group>"; };
- E9EACBE30B7D6883002F61CC /* mixfft.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = mixfft.cpp; path = source/mixfft.cpp; sourceTree = "<group>"; };
- E9EACBE40B7D6883002F61CC /* obj_chns.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = obj_chns.cpp; path = source/obj_chns.cpp; sourceTree = "<group>"; };
- E9EACBE50B7D6883002F61CC /* obj_frames.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = obj_frames.cpp; path = source/obj_frames.cpp; sourceTree = "<group>"; };
- E9EACBE60B7D6883002F61CC /* obj_imm.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = obj_imm.cpp; path = source/obj_imm.cpp; sourceTree = "<group>"; };
- E9EACBE70B7D6883002F61CC /* obj_offs.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = obj_offs.cpp; path = source/obj_offs.cpp; sourceTree = "<group>"; };
- E9EACBE80B7D6883002F61CC /* obj_part.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = obj_part.cpp; path = source/obj_part.cpp; sourceTree = "<group>"; };
- E9EACBE90B7D6883002F61CC /* obj_peaks.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = obj_peaks.cpp; path = source/obj_peaks.cpp; sourceTree = "<group>"; };
- E9EACBEA0B7D6883002F61CC /* obj_q.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = obj_q.cpp; path = source/obj_q.cpp; sourceTree = "<group>"; };
- E9EACBEB0B7D6883002F61CC /* obj_radio.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = obj_radio.cpp; path = source/obj_radio.cpp; sourceTree = "<group>"; };
- E9EACBEC0B7D6883002F61CC /* obj_size.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = obj_size.cpp; path = source/obj_size.cpp; sourceTree = "<group>"; };
- E9EACBED0B7D6883002F61CC /* obj_split.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = obj_split.cpp; path = source/obj_split.cpp; sourceTree = "<group>"; };
- E9EACBEE0B7D6883002F61CC /* obj_sync.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = obj_sync.cpp; path = source/obj_sync.cpp; sourceTree = "<group>"; };
- E9EACBEF0B7D6883002F61CC /* obj_vasp.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = obj_vasp.cpp; path = source/obj_vasp.cpp; sourceTree = "<group>"; };
- E9EACBF00B7D6883002F61CC /* obj_vecs.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = obj_vecs.cpp; path = source/obj_vecs.cpp; sourceTree = "<group>"; };
- E9EACBF10B7D6883002F61CC /* opbase.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = opbase.cpp; path = source/opbase.cpp; sourceTree = "<group>"; };
- E9EACBF20B7D6883002F61CC /* opbase.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = opbase.h; path = source/opbase.h; sourceTree = "<group>"; };
- E9EACBF30B7D6883002F61CC /* opdefs.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = opdefs.h; path = source/opdefs.h; sourceTree = "<group>"; };
- E9EACBF40B7D6883002F61CC /* opfuns.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = opfuns.h; path = source/opfuns.h; sourceTree = "<group>"; };
- E9EACBF50B7D6883002F61CC /* oploop.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = oploop.h; path = source/oploop.h; sourceTree = "<group>"; };
- E9EACBF60B7D6883002F61CC /* opparam.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = opparam.cpp; path = source/opparam.cpp; sourceTree = "<group>"; };
- E9EACBF70B7D6883002F61CC /* opparam.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = opparam.h; path = source/opparam.h; sourceTree = "<group>"; };
- E9EACBF80B7D6883002F61CC /* oppermute.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = oppermute.h; path = source/oppermute.h; sourceTree = "<group>"; };
- E9EACBF90B7D6883002F61CC /* ops_arith.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = ops_arith.cpp; path = source/ops_arith.cpp; sourceTree = "<group>"; };
- E9EACBFA0B7D6883002F61CC /* ops_arith.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ops_arith.h; path = source/ops_arith.h; sourceTree = "<group>"; };
- E9EACBFB0B7D6883002F61CC /* ops_assign.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = ops_assign.cpp; path = source/ops_assign.cpp; sourceTree = "<group>"; };
- E9EACBFC0B7D6883002F61CC /* ops_assign.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ops_assign.h; path = source/ops_assign.h; sourceTree = "<group>"; };
- E9EACBFD0B7D6883002F61CC /* ops_carith.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = ops_carith.cpp; path = source/ops_carith.cpp; sourceTree = "<group>"; };
- E9EACBFE0B7D6883002F61CC /* ops_carith.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ops_carith.h; path = source/ops_carith.h; sourceTree = "<group>"; };
- E9EACBFF0B7D6883002F61CC /* ops_cmp.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = ops_cmp.cpp; path = source/ops_cmp.cpp; sourceTree = "<group>"; };
- E9EACC000B7D6883002F61CC /* ops_cmp.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ops_cmp.h; path = source/ops_cmp.h; sourceTree = "<group>"; };
- E9EACC010B7D6883002F61CC /* ops_cplx.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = ops_cplx.cpp; path = source/ops_cplx.cpp; sourceTree = "<group>"; };
- E9EACC020B7D6883002F61CC /* ops_cplx.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ops_cplx.h; path = source/ops_cplx.h; sourceTree = "<group>"; };
- E9EACC030B7D6883002F61CC /* ops_dft.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = ops_dft.cpp; path = source/ops_dft.cpp; sourceTree = "<group>"; };
- E9EACC040B7D6883002F61CC /* ops_dft.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ops_dft.h; path = source/ops_dft.h; sourceTree = "<group>"; };
- E9EACC050B7D6883002F61CC /* ops_feature.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = ops_feature.cpp; path = source/ops_feature.cpp; sourceTree = "<group>"; };
- E9EACC060B7D6883002F61CC /* ops_feature.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ops_feature.h; path = source/ops_feature.h; sourceTree = "<group>"; };
- E9EACC070B7D6883002F61CC /* ops_flt.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = ops_flt.cpp; path = source/ops_flt.cpp; sourceTree = "<group>"; };
- E9EACC080B7D6883002F61CC /* ops_flt.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ops_flt.h; path = source/ops_flt.h; sourceTree = "<group>"; };
- E9EACC090B7D6883002F61CC /* ops_gate.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = ops_gate.cpp; path = source/ops_gate.cpp; sourceTree = "<group>"; };
- E9EACC0A0B7D6883002F61CC /* ops_gen.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = ops_gen.cpp; path = source/ops_gen.cpp; sourceTree = "<group>"; };
- E9EACC0B0B7D6883002F61CC /* ops_gen.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ops_gen.h; path = source/ops_gen.h; sourceTree = "<group>"; };
- E9EACC0C0B7D6883002F61CC /* ops_qminmax.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = ops_qminmax.cpp; path = source/ops_qminmax.cpp; sourceTree = "<group>"; };
- E9EACC0D0B7D6883002F61CC /* ops_rearr.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = ops_rearr.cpp; path = source/ops_rearr.cpp; sourceTree = "<group>"; };
- E9EACC0E0B7D6883002F61CC /* ops_rearr.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ops_rearr.h; path = source/ops_rearr.h; sourceTree = "<group>"; };
- E9EACC0F0B7D6883002F61CC /* ops_resmp.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = ops_resmp.cpp; path = source/ops_resmp.cpp; sourceTree = "<group>"; };
- E9EACC100B7D6883002F61CC /* ops_resmp.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ops_resmp.h; path = source/ops_resmp.h; sourceTree = "<group>"; };
- E9EACC110B7D6883002F61CC /* ops_search.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = ops_search.cpp; path = source/ops_search.cpp; sourceTree = "<group>"; };
- E9EACC120B7D6883002F61CC /* ops_search.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ops_search.h; path = source/ops_search.h; sourceTree = "<group>"; };
- E9EACC130B7D6883002F61CC /* ops_trnsc.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = ops_trnsc.cpp; path = source/ops_trnsc.cpp; sourceTree = "<group>"; };
- E9EACC140B7D6883002F61CC /* ops_trnsc.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ops_trnsc.h; path = source/ops_trnsc.h; sourceTree = "<group>"; };
- E9EACC150B7D6883002F61CC /* ops_wnd.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = ops_wnd.cpp; path = source/ops_wnd.cpp; sourceTree = "<group>"; };
- E9EACC160B7D6883002F61CC /* ops_wnd.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ops_wnd.h; path = source/ops_wnd.h; sourceTree = "<group>"; };
- E9EACC170B7D6883002F61CC /* ops.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ops.h; path = source/ops.h; sourceTree = "<group>"; };
- E9EACC180B7D6883002F61CC /* opvecs.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = opvecs.cpp; path = source/opvecs.cpp; sourceTree = "<group>"; };
- E9EACC190B7D6883002F61CC /* rdx2fft.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = rdx2fft.cpp; path = source/rdx2fft.cpp; sourceTree = "<group>"; };
- E9EACC1A0B7D6883002F61CC /* rvfft.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = rvfft.cpp; path = source/rvfft.cpp; sourceTree = "<group>"; };
- E9EACC1B0B7D6883002F61CC /* util.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = util.cpp; path = source/util.cpp; sourceTree = "<group>"; };
- E9EACC1C0B7D6883002F61CC /* util.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = util.h; path = source/util.h; sourceTree = "<group>"; };
- E9EACC1D0B7D6883002F61CC /* vasp.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = vasp.cpp; path = source/vasp.cpp; sourceTree = "<group>"; };
- E9EACC1E0B7D6883002F61CC /* vasp.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = vasp.h; path = source/vasp.h; sourceTree = "<group>"; };
- E9EACC1F0B7D6883002F61CC /* vbuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = vbuffer.cpp; path = source/vbuffer.cpp; sourceTree = "<group>"; };
- E9EACC200B7D6883002F61CC /* vbuffer.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = vbuffer.h; path = source/vbuffer.h; sourceTree = "<group>"; };
- E9EACC210B7D6883002F61CC /* vecblk.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = vecblk.cpp; path = source/vecblk.cpp; sourceTree = "<group>"; };
- E9EACC220B7D6883002F61CC /* vecblk.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = vecblk.h; path = source/vecblk.h; sourceTree = "<group>"; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
- D289988505E68E00004EDB86 /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
- 08FB7794FE84155DC02AAC07 /* vasp */ = {
- isa = PBXGroup;
- children = (
- 08FB7795FE84155DC02AAC07 /* Source */,
- 1AB674ADFE9D54B511CA2CBB /* Products */,
- );
- name = vasp;
- sourceTree = "<group>";
- };
- 08FB7795FE84155DC02AAC07 /* Source */ = {
- isa = PBXGroup;
- children = (
- E9EACBD90B7D6883002F61CC /* arg.cpp */,
- E9EACBDA0B7D6883002F61CC /* arg.h */,
- E9EACBDB0B7D6883002F61CC /* buflib.cpp */,
- E9EACBDC0B7D6883002F61CC /* buflib.h */,
- E9EACBDD0B7D6883002F61CC /* classes.cpp */,
- E9EACBDE0B7D6883002F61CC /* classes.h */,
- E9EACBDF0B7D6883002F61CC /* env.cpp */,
- E9EACBE00B7D6883002F61CC /* env.h */,
- E9EACBE10B7D6883002F61CC /* main.cpp */,
- E9EACBE20B7D6883002F61CC /* main.h */,
- E9EACBE30B7D6883002F61CC /* mixfft.cpp */,
- E9EACBE40B7D6883002F61CC /* obj_chns.cpp */,
- E9EACBE50B7D6883002F61CC /* obj_frames.cpp */,
- E9EACBE60B7D6883002F61CC /* obj_imm.cpp */,
- E9EACBE70B7D6883002F61CC /* obj_offs.cpp */,
- E9EACBE80B7D6883002F61CC /* obj_part.cpp */,
- E9EACBE90B7D6883002F61CC /* obj_peaks.cpp */,
- E9EACBEA0B7D6883002F61CC /* obj_q.cpp */,
- E9EACBEB0B7D6883002F61CC /* obj_radio.cpp */,
- E9EACBEC0B7D6883002F61CC /* obj_size.cpp */,
- E9EACBED0B7D6883002F61CC /* obj_split.cpp */,
- E9EACBEE0B7D6883002F61CC /* obj_sync.cpp */,
- E9EACBEF0B7D6883002F61CC /* obj_vasp.cpp */,
- E9EACBF00B7D6883002F61CC /* obj_vecs.cpp */,
- E9EACBF10B7D6883002F61CC /* opbase.cpp */,
- E9EACBF20B7D6883002F61CC /* opbase.h */,
- E9EACBF30B7D6883002F61CC /* opdefs.h */,
- E9EACBF40B7D6883002F61CC /* opfuns.h */,
- E9EACBF50B7D6883002F61CC /* oploop.h */,
- E9EACBF60B7D6883002F61CC /* opparam.cpp */,
- E9EACBF70B7D6883002F61CC /* opparam.h */,
- E9EACBF80B7D6883002F61CC /* oppermute.h */,
- E9EACBF90B7D6883002F61CC /* ops_arith.cpp */,
- E9EACBFA0B7D6883002F61CC /* ops_arith.h */,
- E9EACBFB0B7D6883002F61CC /* ops_assign.cpp */,
- E9EACBFC0B7D6883002F61CC /* ops_assign.h */,
- E9EACBFD0B7D6883002F61CC /* ops_carith.cpp */,
- E9EACBFE0B7D6883002F61CC /* ops_carith.h */,
- E9EACBFF0B7D6883002F61CC /* ops_cmp.cpp */,
- E9EACC000B7D6883002F61CC /* ops_cmp.h */,
- E9EACC010B7D6883002F61CC /* ops_cplx.cpp */,
- E9EACC020B7D6883002F61CC /* ops_cplx.h */,
- E9EACC030B7D6883002F61CC /* ops_dft.cpp */,
- E9EACC040B7D6883002F61CC /* ops_dft.h */,
- E9EACC050B7D6883002F61CC /* ops_feature.cpp */,
- E9EACC060B7D6883002F61CC /* ops_feature.h */,
- E9EACC070B7D6883002F61CC /* ops_flt.cpp */,
- E9EACC080B7D6883002F61CC /* ops_flt.h */,
- E9EACC090B7D6883002F61CC /* ops_gate.cpp */,
- E9EACC0A0B7D6883002F61CC /* ops_gen.cpp */,
- E9EACC0B0B7D6883002F61CC /* ops_gen.h */,
- E9EACC0C0B7D6883002F61CC /* ops_qminmax.cpp */,
- E9EACC0D0B7D6883002F61CC /* ops_rearr.cpp */,
- E9EACC0E0B7D6883002F61CC /* ops_rearr.h */,
- E9EACC0F0B7D6883002F61CC /* ops_resmp.cpp */,
- E9EACC100B7D6883002F61CC /* ops_resmp.h */,
- E9EACC110B7D6883002F61CC /* ops_search.cpp */,
- E9EACC120B7D6883002F61CC /* ops_search.h */,
- E9EACC130B7D6883002F61CC /* ops_trnsc.cpp */,
- E9EACC140B7D6883002F61CC /* ops_trnsc.h */,
- E9EACC150B7D6883002F61CC /* ops_wnd.cpp */,
- E9EACC160B7D6883002F61CC /* ops_wnd.h */,
- E9EACC170B7D6883002F61CC /* ops.h */,
- E9EACC180B7D6883002F61CC /* opvecs.cpp */,
- E9EACC190B7D6883002F61CC /* rdx2fft.cpp */,
- E9EACC1A0B7D6883002F61CC /* rvfft.cpp */,
- E9EACC1B0B7D6883002F61CC /* util.cpp */,
- E9EACC1C0B7D6883002F61CC /* util.h */,
- E9EACC1D0B7D6883002F61CC /* vasp.cpp */,
- E9EACC1E0B7D6883002F61CC /* vasp.h */,
- E9EACC1F0B7D6883002F61CC /* vbuffer.cpp */,
- E9EACC200B7D6883002F61CC /* vbuffer.h */,
- E9EACC210B7D6883002F61CC /* vecblk.cpp */,
- E9EACC220B7D6883002F61CC /* vecblk.h */,
- );
- name = Source;
- sourceTree = "<group>";
- };
- 1AB674ADFE9D54B511CA2CBB /* Products */ = {
- isa = PBXGroup;
- children = (
- D2AAC0630554660B00DB518D /* vasp.pd_darwin */,
- );
- name = Products;
- sourceTree = "<group>";
- };
-/* End PBXGroup section */
-
-/* Begin PBXHeadersBuildPhase section */
- D2AAC0600554660B00DB518D /* Headers */ = {
- isa = PBXHeadersBuildPhase;
- buildActionMask = 2147483647;
- files = (
- E9EACC240B7D6883002F61CC /* arg.h in Headers */,
- E9EACC260B7D6883002F61CC /* buflib.h in Headers */,
- E9EACC280B7D6883002F61CC /* classes.h in Headers */,
- E9EACC2A0B7D6883002F61CC /* env.h in Headers */,
- E9EACC2C0B7D6883002F61CC /* main.h in Headers */,
- E9EACC3C0B7D6883002F61CC /* opbase.h in Headers */,
- E9EACC3D0B7D6883002F61CC /* opdefs.h in Headers */,
- E9EACC3E0B7D6883002F61CC /* opfuns.h in Headers */,
- E9EACC3F0B7D6883002F61CC /* oploop.h in Headers */,
- E9EACC410B7D6883002F61CC /* opparam.h in Headers */,
- E9EACC420B7D6883002F61CC /* oppermute.h in Headers */,
- E9EACC440B7D6883002F61CC /* ops_arith.h in Headers */,
- E9EACC460B7D6883002F61CC /* ops_assign.h in Headers */,
- E9EACC480B7D6883002F61CC /* ops_carith.h in Headers */,
- E9EACC4A0B7D6883002F61CC /* ops_cmp.h in Headers */,
- E9EACC4C0B7D6883002F61CC /* ops_cplx.h in Headers */,
- E9EACC4E0B7D6883002F61CC /* ops_dft.h in Headers */,
- E9EACC500B7D6883002F61CC /* ops_feature.h in Headers */,
- E9EACC520B7D6883002F61CC /* ops_flt.h in Headers */,
- E9EACC550B7D6883002F61CC /* ops_gen.h in Headers */,
- E9EACC580B7D6883002F61CC /* ops_rearr.h in Headers */,
- E9EACC5A0B7D6883002F61CC /* ops_resmp.h in Headers */,
- E9EACC5C0B7D6883002F61CC /* ops_search.h in Headers */,
- E9EACC5E0B7D6883002F61CC /* ops_trnsc.h in Headers */,
- E9EACC600B7D6883002F61CC /* ops_wnd.h in Headers */,
- E9EACC610B7D6883002F61CC /* ops.h in Headers */,
- E9EACC660B7D6883002F61CC /* util.h in Headers */,
- E9EACC680B7D6883002F61CC /* vasp.h in Headers */,
- E9EACC6A0B7D6883002F61CC /* vbuffer.h in Headers */,
- E9EACC6C0B7D6883002F61CC /* vecblk.h in Headers */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXHeadersBuildPhase section */
-
-/* Begin PBXNativeTarget section */
- D2AAC0620554660B00DB518D /* vasp */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 1DEB914A08733D8E0010E9CD /* Build configuration list for PBXNativeTarget "vasp" */;
- buildPhases = (
- D2AAC0600554660B00DB518D /* Headers */,
- D2AAC0610554660B00DB518D /* Sources */,
- D289988505E68E00004EDB86 /* Frameworks */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = vasp;
- productName = vasp;
- productReference = D2AAC0630554660B00DB518D /* vasp.pd_darwin */;
- productType = "com.apple.product-type.library.dynamic";
- };
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
- 08FB7793FE84155DC02AAC07 /* Project object */ = {
- isa = PBXProject;
- buildConfigurationList = 1DEB914E08733D8E0010E9CD /* Build configuration list for PBXProject "vasp" */;
- hasScannedForEncodings = 1;
- mainGroup = 08FB7794FE84155DC02AAC07 /* vasp */;
- projectDirPath = "";
- targets = (
- D2AAC0620554660B00DB518D /* vasp */,
- );
- };
-/* End PBXProject section */
-
-/* Begin PBXSourcesBuildPhase section */
- D2AAC0610554660B00DB518D /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- E9EACC230B7D6883002F61CC /* arg.cpp in Sources */,
- E9EACC250B7D6883002F61CC /* buflib.cpp in Sources */,
- E9EACC270B7D6883002F61CC /* classes.cpp in Sources */,
- E9EACC290B7D6883002F61CC /* env.cpp in Sources */,
- E9EACC2B0B7D6883002F61CC /* main.cpp in Sources */,
- E9EACC2D0B7D6883002F61CC /* mixfft.cpp in Sources */,
- E9EACC2E0B7D6883002F61CC /* obj_chns.cpp in Sources */,
- E9EACC2F0B7D6883002F61CC /* obj_frames.cpp in Sources */,
- E9EACC300B7D6883002F61CC /* obj_imm.cpp in Sources */,
- E9EACC310B7D6883002F61CC /* obj_offs.cpp in Sources */,
- E9EACC320B7D6883002F61CC /* obj_part.cpp in Sources */,
- E9EACC330B7D6883002F61CC /* obj_peaks.cpp in Sources */,
- E9EACC340B7D6883002F61CC /* obj_q.cpp in Sources */,
- E9EACC350B7D6883002F61CC /* obj_radio.cpp in Sources */,
- E9EACC360B7D6883002F61CC /* obj_size.cpp in Sources */,
- E9EACC370B7D6883002F61CC /* obj_split.cpp in Sources */,
- E9EACC380B7D6883002F61CC /* obj_sync.cpp in Sources */,
- E9EACC390B7D6883002F61CC /* obj_vasp.cpp in Sources */,
- E9EACC3A0B7D6883002F61CC /* obj_vecs.cpp in Sources */,
- E9EACC3B0B7D6883002F61CC /* opbase.cpp in Sources */,
- E9EACC400B7D6883002F61CC /* opparam.cpp in Sources */,
- E9EACC430B7D6883002F61CC /* ops_arith.cpp in Sources */,
- E9EACC450B7D6883002F61CC /* ops_assign.cpp in Sources */,
- E9EACC470B7D6883002F61CC /* ops_carith.cpp in Sources */,
- E9EACC490B7D6883002F61CC /* ops_cmp.cpp in Sources */,
- E9EACC4B0B7D6883002F61CC /* ops_cplx.cpp in Sources */,
- E9EACC4D0B7D6883002F61CC /* ops_dft.cpp in Sources */,
- E9EACC4F0B7D6883002F61CC /* ops_feature.cpp in Sources */,
- E9EACC510B7D6883002F61CC /* ops_flt.cpp in Sources */,
- E9EACC530B7D6883002F61CC /* ops_gate.cpp in Sources */,
- E9EACC540B7D6883002F61CC /* ops_gen.cpp in Sources */,
- E9EACC560B7D6883002F61CC /* ops_qminmax.cpp in Sources */,
- E9EACC570B7D6883002F61CC /* ops_rearr.cpp in Sources */,
- E9EACC590B7D6883002F61CC /* ops_resmp.cpp in Sources */,
- E9EACC5B0B7D6883002F61CC /* ops_search.cpp in Sources */,
- E9EACC5D0B7D6883002F61CC /* ops_trnsc.cpp in Sources */,
- E9EACC5F0B7D6883002F61CC /* ops_wnd.cpp in Sources */,
- E9EACC620B7D6883002F61CC /* opvecs.cpp in Sources */,
- E9EACC630B7D6883002F61CC /* rdx2fft.cpp in Sources */,
- E9EACC640B7D6883002F61CC /* rvfft.cpp in Sources */,
- E9EACC650B7D6883002F61CC /* util.cpp in Sources */,
- E9EACC670B7D6883002F61CC /* vasp.cpp in Sources */,
- E9EACC690B7D6883002F61CC /* vbuffer.cpp in Sources */,
- E9EACC6B0B7D6883002F61CC /* vecblk.cpp in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXSourcesBuildPhase section */
-
-/* Begin XCBuildConfiguration section */
- 1DEB914B08733D8E0010E9CD /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- COPY_PHASE_STRIP = NO;
- EXECUTABLE_EXTENSION = pd_darwin;
- GCC_PREPROCESSOR_DEFINITIONS = (
- "$(inherited)",
- "FLEXT_SYS=2",
- FLEXT_THREADS,
- );
- HEADER_SEARCH_PATHS = (
- "/Applications/Pd-0.40-2.app/Contents/Resources/src",
- /usr/local/include/flext,
- );
- INSTALL_PATH = /usr/local/lib;
- LIBRARY_SEARCH_PATHS = /usr/local/lib;
- OTHER_LDFLAGS = (
- "-lflext-pd_td",
- "-undefined",
- dynamic_lookup,
- );
- PRODUCT_NAME = vasp;
- ZERO_LINK = YES;
- };
- name = Debug;
- };
- 1DEB914C08733D8E0010E9CD /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- EXECUTABLE_EXTENSION = pd_darwin;
- GCC_PREPROCESSOR_DEFINITIONS = (
- "$(inherited)",
- "FLEXT_SYS=2",
- FLEXT_THREADS,
- );
- HEADER_SEARCH_PATHS = (
- "/Applications/Pd-0.40-2.app/Contents/Resources/src",
- /usr/local/include/flext,
- );
- INSTALL_PATH = /usr/local/lib;
- LIBRARY_SEARCH_PATHS = /usr/local/lib;
- OTHER_LDFLAGS = (
- "-lflext-pd_t",
- "-undefined",
- dynamic_lookup,
- );
- PRODUCT_NAME = vasp;
- };
- name = Release;
- };
- 1DEB914F08733D8E0010E9CD /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- GCC_OPTIMIZATION_LEVEL = 0;
- GCC_PREPROCESSOR_DEFINITIONS = _DEBUG;
- GCC_THREADSAFE_STATICS = YES;
- GCC_WARN_ABOUT_RETURN_TYPE = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
- PREBINDING = NO;
- SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
- };
- name = Debug;
- };
- 1DEB915008733D8E0010E9CD /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ARCHS = (
- i386,
- ppc,
- );
- GCC_AUTO_VECTORIZATION = YES;
- GCC_ENABLE_SSE3_EXTENSIONS = YES;
- GCC_THREADSAFE_STATICS = YES;
- GCC_WARN_ABOUT_RETURN_TYPE = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
- PREBINDING = NO;
- SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
- };
- name = Release;
- };
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
- 1DEB914A08733D8E0010E9CD /* Build configuration list for PBXNativeTarget "vasp" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 1DEB914B08733D8E0010E9CD /* Debug */,
- 1DEB914C08733D8E0010E9CD /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- 1DEB914E08733D8E0010E9CD /* Build configuration list for PBXProject "vasp" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 1DEB914F08733D8E0010E9CD /* Debug */,
- 1DEB915008733D8E0010E9CD /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
-/* End XCConfigurationList section */
- };
- rootObject = 08FB7793FE84155DC02AAC07 /* Project object */;
-}
diff --git a/externals/grill/vst/build/config-mac.def b/externals/grill/vst/build/config-mac.def
deleted file mode 100644
index d08c7122..00000000
--- a/externals/grill/vst/build/config-mac.def
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-# where is the VST SDK?
-# (at least version 2.3)
-VSTSDKPATH=/Volumes/Daten/Prog/packs/vstsdk2.3
diff --git a/externals/grill/vst/build/config-win.def b/externals/grill/vst/build/config-win.def
deleted file mode 100644
index caa96c20..00000000
--- a/externals/grill/vst/build/config-win.def
+++ /dev/null
@@ -1,3 +0,0 @@
-# where is the VST SDK?
-# (at least version 2.3)
-VSTSDKPATH=c:\data\prog\audio\vstsdk2.3
diff --git a/externals/grill/vst/build/gnumake-mac-gcc.inc b/externals/grill/vst/build/gnumake-mac-gcc.inc
deleted file mode 100644
index 6ecd3681..00000000
--- a/externals/grill/vst/build/gnumake-mac-gcc.inc
+++ /dev/null
@@ -1,3 +0,0 @@
-INCPATH=-I$(VSTSDKPATH)/source/common
-
-
diff --git a/externals/grill/vst/build/nmake-win-msvc.inc b/externals/grill/vst/build/nmake-win-msvc.inc
deleted file mode 100644
index 7503c914..00000000
--- a/externals/grill/vst/build/nmake-win-msvc.inc
+++ /dev/null
@@ -1,2 +0,0 @@
-INCPATH=/I$(VSTSDKPATH)\source\common
-LIBS=user32.lib ole32.lib
diff --git a/externals/grill/vst/gpl.txt b/externals/grill/vst/gpl.txt
deleted file mode 100644
index 5ea29a7d..00000000
--- a/externals/grill/vst/gpl.txt
+++ /dev/null
@@ -1,346 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) 19yy <name of author>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) 19yy name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Library General
-Public License instead of this License.
-
diff --git a/externals/grill/vst/license.txt b/externals/grill/vst/license.txt
deleted file mode 100644
index 4535110c..00000000
--- a/externals/grill/vst/license.txt
+++ /dev/null
@@ -1,74 +0,0 @@
-vst~ - VST plugin object for PD
-based on the work of Jarno Seppänen and Mark Williamson
-Copyright (C) 2003-2005 Thomas Grill
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-In the official vst~ distribution, the GNU General Public License is
-in the file gpl.txt
-
----------------------------------------------------------
-
- OTHER COPYRIGHT NOTICES
-
----------------------------------------------------------
-This package uses the flext C++ layer - See its license text below:
-
-
---- plugin~ by Jarno Seppänen --------------------------
-
-This is a Pd [1] tilde object for hosting LADSPA [2] and VST [3] audio
-plug-ins on Linux and Windows systems, respectively. The LADSPA
-plug-in interface is supported completely on Linux, while the VST 1.0
-audio processing plug-in interface (without plug-in graphics) is
-supported on Windows.
-
-This text corresponds to release 0.2 of plugin~ as of 4th April, 2001.
-This release of plugin~ has been tested with Pd 0.32P1.
-
-plugin~ is distributed under the GNU General Public License. For more
-information, please read the accompanying file "COPYING".
-
-
---- vst by mark@junklight.com --------------------------
-
-reference: http://iem.kug.ac.at/~jams/
-this plugin uses a tiny amount of code from the plugin~
-object mentioned above. It also tries to replicate the
-syntax
-
-
---- flext ----------------------------------------------
-flext - C++ layer for Max/MSP and pd (pure data) externals
-Copyright (C) 2001-2005 Thomas Grill
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-In the official flext distribution, the GNU General Public License is
-in the file gpl.txt
-
-
diff --git a/externals/grill/vst/package.txt b/externals/grill/vst/package.txt
deleted file mode 100644
index 59e4c4c6..00000000
--- a/externals/grill/vst/package.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-NAME=vst~
-
-BUILDTYPE=multi
-
-BUILDDIR=build
-SRCDIR=src
-
-SRCS=main.cpp vsthost.cpp vstmaster.cpp vstedit.cpp vstparam.cpp vstmidi.cpp editor.cpp
-
-HDRS=main.h vsthost.h editor.h editorwin.hpp editormac.hpp
diff --git a/externals/grill/vst/pd/vst~-help.pd b/externals/grill/vst/pd/vst~-help.pd
deleted file mode 100644
index 99427cc8..00000000
--- a/externals/grill/vst/pd/vst~-help.pd
+++ /dev/null
@@ -1,449 +0,0 @@
-#N canvas 645 477 862 563 12;
-#X obj 26 94 noise~;
-#X obj 240 189 print A;
-#X obj 27 393 tgl 15 0 empty empty empty 0 -6 0 8 -261689 -1 -1 0 1
-;
-#X msg 27 435 edit \$1;
-#X msg 97 435 getedit;
-#N canvas 367 122 570 368 info 0;
-#X msg 92 160 getversion;
-#X msg 92 105 getname;
-#X msg 93 183 getvendor;
-#X msg 92 218 getsynth;
-#X msg 92 248 getins;
-#X msg 153 250 getouts;
-#X msg 93 134 getdll;
-#X obj 24 290 s \$0-vst;
-#X msg 98 323 print;
-#X text 169 220 is synth?;
-#X text 177 183 get vendor string;
-#X text 179 161 get version;
-#X text 152 134 get shared lib name;
-#X text 157 109 get internal (official) plug name;
-#X text 217 251 number of plug inlets and outlets;
-#X msg 93 41 getattributes;
-#X msg 266 219 geteditor;
-#X text 346 219 has editor?;
-#X msg 22 41 help;
-#X text 213 38 list all attributes;
-#X msg 93 64 getmethods;
-#X text 213 65 list all methods;
-#X connect 0 0 7 0;
-#X connect 1 0 7 0;
-#X connect 2 0 7 0;
-#X connect 3 0 7 0;
-#X connect 4 0 7 0;
-#X connect 5 0 7 0;
-#X connect 6 0 7 0;
-#X connect 8 0 7 0;
-#X connect 15 0 7 0;
-#X connect 16 0 7 0;
-#X connect 18 0 7 0;
-#X connect 20 0 7 0;
-#X restore 521 97 pd info;
-#X obj 96 94 r \$0-vst;
-#X obj 27 462 s \$0-vst;
-#X text 52 392 display edit window;
-#X msg 104 309 getplug;
-#X obj 26 337 s \$0-vst;
-#X text 64 263 set/get plugin;
-#X text 587 97 further information;
-#X obj 23 15 cnv 15 800 58 empty empty vst~ 10 32 0 24 -260818 -1 0
-;
-#X text 237 170 attribute outlet;
-#X text 190 134 inlets outlets [plugname];
-#N canvas 351 2 630 585 win 0;
-#X obj 23 202 s \$0-vst;
-#X msg 122 83 getx;
-#X msg 181 85 gety;
-#X obj 122 37 nbx 5 14 -1e+037 1e+037 0 0 empty empty empty 0 -6 0
-10 -225271 -1 -1 0 256;
-#X msg 123 55 x \$1;
-#X obj 192 37 nbx 5 14 -1e+037 1e+037 0 0 empty empty empty 0 -6 0
-10 -225271 -1 -1 0 256;
-#X msg 193 53 y \$1;
-#X text 264 74 (position of the actual VST interface);
-#X obj 117 208 tgl 15 0 empty empty empty 0 -6 0 8 -225271 -1 -1 0
-1;
-#X msg 116 227 caption \$1;
-#X msg 211 227 getcaption;
-#X text 119 251 set/get window caption and borders;
-#X text 118 316 set/get window title;
-#X msg 218 292 gettitle;
-#X msg 115 292 title KARL;
-#X obj 120 124 nbx 5 14 -1e+037 1e+037 0 0 empty empty empty 0 -6 0
-10 -225271 -1 -1 0 256;
-#X obj 190 124 nbx 5 14 -1e+037 1e+037 0 0 empty empty empty 0 -6 0
-10 -225271 -1 -1 0 256;
-#X msg 121 142 w \$1;
-#X msg 120 170 getw;
-#X msg 191 140 h \$1;
-#X msg 175 170 geth;
-#X text 265 144 set and get editor window size;
-#X text 267 59 set and get editor position;
-#X obj 122 458 bng 15 250 50 0 empty empty empty 0 -6 0 8 -225271 -1
--1;
-#X text 280 457 send editor window to front;
-#X msg 223 457 front;
-#X obj 145 457 delay 100;
-#X obj 123 500 tgl 15 0 empty empty empty 0 -6 0 8 -225271 -1 -1 0
-1;
-#X msg 145 497 handle \$1;
-#X text 230 498 set/unset handle for window (taskbar button);
-#X obj 118 374 tgl 15 0 empty empty empty 0 -6 0 8 -225271 -1 -1 0
-1;
-#X msg 117 396 vis \$1;
-#X msg 186 396 getvis;
-#X text 141 372 make edit window (in)visible;
-#X connect 1 0 0 0;
-#X connect 2 0 0 0;
-#X connect 3 0 4 0;
-#X connect 4 0 0 0;
-#X connect 5 0 6 0;
-#X connect 6 0 0 0;
-#X connect 8 0 9 0;
-#X connect 9 0 0 0;
-#X connect 10 0 0 0;
-#X connect 13 0 0 0;
-#X connect 14 0 0 0;
-#X connect 15 0 17 0;
-#X connect 16 0 19 0;
-#X connect 17 0 0 0;
-#X connect 18 0 0 0;
-#X connect 19 0 0 0;
-#X connect 20 0 0 0;
-#X connect 23 0 26 0;
-#X connect 25 0 0 0;
-#X connect 26 0 25 0;
-#X connect 27 0 28 0;
-#X connect 28 0 0 0;
-#X connect 30 0 31 0;
-#X connect 31 0 0 0;
-#X connect 32 0 0 0;
-#X restore 520 227 pd win;
-#X text 586 227 manipulating the edit window;
-#X msg 26 310 plug \$1;
-#X obj 26 254 bng 25 250 50 0 empty empty empty 0 -6 0 8 -261689 -1
--1;
-#X obj 26 285 openpanel;
-#N canvas 294 23 534 663 midi 0;
-#X obj 16 256 s \$0-vst;
-#X msg 198 201 ctlchg 3 123;
-#X text 204 70 note on;
-#X text 375 71 note off;
-#X text 308 200 control change;
-#X text 272 287 pitch bend;
-#X text 279 228 program change;
-#X msg 197 229 progchg 2;
-#X msg 285 72 noteoff 10;
-#X text 275 336 after touch;
-#X obj 198 267 nbx 5 14 -1e+037 1e+037 0 0 empty empty empty 0 -6 0
-10 -225271 -1 -1 0 256;
-#X obj 198 318 nbx 5 14 -1e+037 1e+037 0 0 empty empty empty 0 -6 0
-10 -225271 -1 -1 0 256;
-#X msg 197 287 pbend \$1;
-#X msg 196 337 atouch \$1;
-#X obj 109 136 nbx 5 14 -1e+037 1e+037 0 0 empty empty empty 0 -6 0
-10 -225271 -1 -1 0 256;
-#X msg 108 71 note 10 100;
-#X msg 108 152 note \$1 100;
-#X msg 284 126 noteoff \$1;
-#X obj 285 109 nbx 5 14 -1e+037 1e+037 0 0 empty empty empty 0 -6 0
-10 -225271 -1 -1 0 256;
-#X text 25 520 MIDI messages have the following format:;
-#X text 23 544 [event midi subtype chn b2 b3 delta note-length note-offset
-detune off-velocity(;
-#X obj 90 371 tgl 15 0 empty empty empty 0 -6 0 8 -225271 -1 -1 0 1
-;
-#X msg 90 390 events \$1;
-#X msg 90 415 getevents;
-#X text 177 393 enable event processing;
-#X text 25 463 if enabled vst~ will output events generated by the
-plugin as [event ...( messages through the dump outlet;
-#X msg 108 93 note 10 0;
-#X text 188 93 "note off";
-#X obj 107 12 nbx 5 14 0 15 0 0 empty empty empty 0 -6 0 10 -225271
--1 -1 0 256;
-#X msg 106 28 channel \$1;
-#X msg 207 28 getchannel;
-#X text 305 20 set/get MIDI channel;
-#X text 25 585 subtypes are note \, noteoff \, atouch \, patouch \,
-ctlchg \, progchg \, pbend;
-#X connect 1 0 0 0;
-#X connect 7 0 0 0;
-#X connect 8 0 0 0;
-#X connect 10 0 12 0;
-#X connect 11 0 13 0;
-#X connect 12 0 0 0;
-#X connect 13 0 0 0;
-#X connect 14 0 16 0;
-#X connect 15 0 0 0;
-#X connect 16 0 0 0;
-#X connect 17 0 0 0;
-#X connect 18 0 17 0;
-#X connect 21 0 22 0;
-#X connect 22 0 0 0;
-#X connect 23 0 0 0;
-#X connect 26 0 0 0;
-#X connect 28 0 29 0;
-#X connect 29 0 0 0;
-#X connect 30 0 0 0;
-#X restore 521 195 pd midi;
-#X text 134 33 based on the work of Jarno Seppanen and Mark Williamson
-;
-#X obj 742 424 loadbang;
-#X obj 520 449 tgl 15 0 empty empty empty 0 -6 0 8 -225271 -1 -1 0
-1;
-#X obj 520 498 s \$0-vst;
-#X msg 520 471 bypass \$1;
-#X msg 602 471 getbypass;
-#X text 545 448 bypass plugin;
-#X obj 520 357 tgl 15 0 empty empty empty 0 -6 0 8 -225271 -1 -1 0
-1;
-#X obj 520 405 s \$0-vst;
-#X text 545 356 mute output;
-#X msg 520 378 mute \$1;
-#X msg 602 378 getmute;
-#N canvas 200 110 497 448 parameters 0;
-#X obj 114 125 hsl 128 15 0 1 0 0 empty empty empty -2 -6 0 8 -225271
--1 -1 0 1;
-#X msg 111 142 param 2 \$1;
-#X obj 21 195 s \$0-vst;
-#X msg 113 26 getparams;
-#X text 191 26 get number of parameters;
-#X msg 213 143 getparam 2;
-#X msg 107 202 param gain 0;
-#X text 203 84 get parameter name;
-#X text 120 277 get value in textual representation;
-#X text 136 164 set/get parameter (0-based);
-#X msg 107 255 getptext \$1;
-#X obj 107 238 nbx 5 14 0 10000 0 0 empty empty empty 0 -6 0 10 -225271
--1 -1 0 256;
-#X obj 111 68 nbx 5 14 0 10000 0 0 empty empty empty 0 -6 0 10 -225271
--1 -1 0 256;
-#X msg 111 86 getpname \$1;
-#X msg 212 255 getptext gain;
-#X msg 214 202 getparam gain;
-#X text 116 293 (may be ambigous!);
-#X obj 106 335 tgl 15 0 empty empty empty 0 -6 0 8 -225271 -1 -1 0
-1;
-#X msg 108 356 feedback \$1;
-#X msg 213 356 getfeedback;
-#X text 108 378 get parameter feedback through dump outlet;
-#X connect 0 0 1 0;
-#X connect 1 0 2 0;
-#X connect 3 0 2 0;
-#X connect 5 0 2 0;
-#X connect 6 0 2 0;
-#X connect 10 0 2 0;
-#X connect 11 0 10 0;
-#X connect 12 0 13 0;
-#X connect 13 0 2 0;
-#X connect 14 0 2 0;
-#X connect 15 0 2 0;
-#X connect 17 0 18 0;
-#X connect 18 0 2 0;
-#X connect 19 0 2 0;
-#X restore 520 130 pd parameters;
-#N canvas 0 0 466 316 programs 0;
-#X obj 39 245 s \$0-vst;
-#X msg 162 106 getprogram;
-#X text 134 34 get number of programs;
-#X msg 39 37 getprograms;
-#X text 93 125 set/get program (0-based);
-#X msg 39 62 getprogcats;
-#X text 134 59 get number of program categories;
-#X msg 59 106 program \$1;
-#X obj 60 90 nbx 5 14 0 10000 0 0 empty empty empty 0 -6 0 10 -225271
--1 -1 0 256;
-#X obj 64 144 nbx 5 14 0 10000 0 0 empty empty empty 0 -6 0 10 -225271
--1 -1 0 256;
-#X msg 62 161 getprogname \$1;
-#X text 182 158 get program name;
-#X obj 63 195 nbx 5 14 0 10000 0 0 empty empty empty 0 -6 0 10 -225271
--1 -1 0 256;
-#X text 199 210 get program name;
-#X msg 61 212 getprogname 2 \$1;
-#X text 201 224 (with category);
-#X text 198 172 (no category);
-#X connect 1 0 0 0;
-#X connect 3 0 0 0;
-#X connect 5 0 0 0;
-#X connect 7 0 0 0;
-#X connect 8 0 7 0;
-#X connect 9 0 10 0;
-#X connect 10 0 0 0;
-#X connect 12 0 14 0;
-#X connect 14 0 0 0;
-#X restore 521 162 pd programs;
-#X text 637 131 VST parameters;
-#X text 638 162 VST programs;
-#X text 134 53 http://grrrr.org;
-#X text 589 196 midi messages for VST synths;
-#X msg 269 316 subplug AudioTrack;
-#X obj 249 441 s \$0-vst;
-#X msg 269 401 getsubplug;
-#X obj 26 135 vst~ 2 2 @pnames 100;
-#X msg 249 283 getpluglist;
-#X text 585 254 sequencer stuff;
-#X text 133 14 VST plugins for PD \, (C)2003-2005 Thomas Grill;
-#X msg 269 341 subplug X-Noise;
-#N canvas 0 0 466 316 out 0;
-#X obj 79 164 *~;
-#X obj 79 194 dac~ 1 2 3 4;
-#X obj 109 164 *~;
-#X obj 139 164 *~;
-#X obj 169 164 *~;
-#X obj 266 26 inlet;
-#X obj 49 26 inlet~;
-#X obj 102 26 inlet~;
-#X obj 154 26 inlet~;
-#X obj 206 26 inlet~;
-#X obj 265 108 line~;
-#X msg 266 82 \$1 1 20;
-#X connect 0 0 1 0;
-#X connect 2 0 1 1;
-#X connect 3 0 1 2;
-#X connect 4 0 1 3;
-#X connect 5 0 11 0;
-#X connect 6 0 0 0;
-#X connect 7 0 2 0;
-#X connect 8 0 3 0;
-#X connect 9 0 4 0;
-#X connect 10 0 4 1;
-#X connect 10 0 3 1;
-#X connect 10 0 2 1;
-#X connect 10 0 0 1;
-#X connect 11 0 10 0;
-#X restore 26 192 pd out;
-#X obj 72 175 hsl 128 15 0.001 1 1 1 empty empty gain -2 -6 0 8 -261689
--1 -1 6400 1;
-#N canvas 105 36 498 655 seq 0;
-#X obj 17 225 s \$0-vst;
-#X msg 112 78 samplepos \$1;
-#X obj 111 60 nbx 5 14 0 1e+037 0 0 empty empty empty 0 -6 0 10 -225271
--1 -1 0 256;
-#X msg 224 77 getsamplepos;
-#X obj 111 108 nbx 5 14 0 1e+037 0 0 empty empty empty 0 -6 0 10 -225271
--1 -1 0 256;
-#X msg 112 126 ppqpos \$1;
-#X msg 199 127 getppqpos;
-#X obj 111 153 nbx 5 14 5 400 0 1 empty empty empty 0 -6 0 10 -225271
--1 -1 120 256;
-#X msg 112 171 tempo \$1;
-#X msg 199 172 gettempo;
-#X msg 113 28 playing \$1;
-#X msg 203 28 getplaying;
-#X obj 112 -1 tgl 25 0 empty empty empty 0 -6 0 8 -225271 -1 -1 0 1
-;
-#X obj 109 218 tgl 25 0 empty empty empty 0 -6 0 8 -225271 -1 -1 0
-1;
-#X msg 110 247 looping \$1;
-#X msg 200 247 getlooping;
-#X obj 111 275 nbx 5 14 0 1e+037 0 0 empty empty empty 0 -6 0 10 -225271
--1 -1 0 256;
-#X msg 112 293 loopstart \$1;
-#X msg 222 293 getloopstart;
-#X obj 111 319 nbx 5 14 0 1e+037 0 0 empty empty empty 0 -6 0 10 -225271
--1 -1 0 256;
-#X msg 112 337 loopend \$1;
-#X msg 222 337 getloopend;
-#X obj 111 363 nbx 5 14 0 1e+037 0 0 empty empty empty 0 -6 0 10 -225271
--1 -1 0 256;
-#X msg 112 379 looplength \$1;
-#X msg 227 379 getlooplength;
-#X obj 115 521 nbx 5 14 0 1e+037 0 0 empty empty empty 0 -6 0 10 -225271
--1 -1 0 256;
-#X msg 116 537 smpteoffset \$1;
-#X msg 238 537 getsmpteoffset;
-#X msg 116 579 smpterate \$1;
-#X msg 230 579 getsmpterate;
-#X obj 116 562 hradio 15 1 0 6 empty empty empty 0 -6 0 8 -225271 -1
--1 0;
-#X text 230 561 24/25/24/30/29.97df/30df;
-#X obj 112 415 nbx 5 14 1 128 0 1 empty empty empty 0 -6 0 10 -225271
--1 -1 4 256;
-#X msg 113 433 timenom \$1;
-#X msg 205 434 gettimenom;
-#X obj 113 455 nbx 5 14 1 128 0 1 empty empty empty 0 -6 0 10 -225271
--1 -1 4 256;
-#X msg 114 473 timeden \$1;
-#X msg 206 474 gettimeden;
-#X text 300 423 time signature;
-#X text 302 438 nominator;
-#X text 302 476 denominator;
-#X text 284 161 tempo in quarters per minute;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X connect 3 0 0 0;
-#X connect 4 0 5 0;
-#X connect 5 0 0 0;
-#X connect 6 0 0 0;
-#X connect 7 0 8 0;
-#X connect 8 0 0 0;
-#X connect 9 0 0 0;
-#X connect 10 0 0 0;
-#X connect 11 0 0 0;
-#X connect 12 0 10 0;
-#X connect 13 0 14 0;
-#X connect 14 0 0 0;
-#X connect 15 0 0 0;
-#X connect 16 0 17 0;
-#X connect 17 0 0 0;
-#X connect 18 0 0 0;
-#X connect 19 0 20 0;
-#X connect 20 0 0 0;
-#X connect 21 0 0 0;
-#X connect 22 0 23 0;
-#X connect 23 0 0 0;
-#X connect 24 0 0 0;
-#X connect 25 0 26 0;
-#X connect 26 0 0 0;
-#X connect 27 0 0 0;
-#X connect 28 0 0 0;
-#X connect 29 0 0 0;
-#X connect 30 0 28 0;
-#X connect 32 0 33 0;
-#X connect 33 0 0 0;
-#X connect 34 0 0 0;
-#X connect 35 0 36 0;
-#X connect 36 0 0 0;
-#X connect 37 0 0 0;
-#X restore 520 256 pd seq;
-#X text 23 508 on the vst~ object box;
-#X obj 27 413 pipe 100;
-#X text 249 244 functions for plugin shells;
-#X text 247 260 (like Waves);
-#X msg 269 366 subplug;
-#X obj 742 462 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
-1;
-#X text 24 491 you can also shift-click;
-#X msg 742 483 \; pd dsp \$1;
-#X connect 0 0 43 0;
-#X connect 0 0 43 1;
-#X connect 2 0 52 0;
-#X connect 3 0 7 0;
-#X connect 4 0 7 0;
-#X connect 6 0 43 0;
-#X connect 9 0 10 0;
-#X connect 18 0 10 0;
-#X connect 19 0 20 0;
-#X connect 20 0 18 0;
-#X connect 23 0 56 0;
-#X connect 24 0 26 0;
-#X connect 26 0 25 0;
-#X connect 27 0 25 0;
-#X connect 29 0 32 0;
-#X connect 32 0 30 0;
-#X connect 33 0 30 0;
-#X connect 40 0 41 0;
-#X connect 42 0 41 0;
-#X connect 43 0 48 0;
-#X connect 43 1 48 1;
-#X connect 43 2 1 0;
-#X connect 44 0 41 0;
-#X connect 47 0 41 0;
-#X connect 49 0 48 4;
-#X connect 52 0 3 0;
-#X connect 55 0 41 0;
-#X connect 56 0 58 0;
diff --git a/externals/grill/vst/readme.txt b/externals/grill/vst/readme.txt
deleted file mode 100644
index 03914813..00000000
--- a/externals/grill/vst/readme.txt
+++ /dev/null
@@ -1,78 +0,0 @@
-vst~ - VST plugin external for PD
-based on the work of Jarno Seppänen and Mark Williamson
-
-Copyright (c)2003-05 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-Donations for further development of the package are highly appreciated.
-Visit https://www.paypal.com/xclick/business=gr%40grrrr.org&item_name=vst&no_note=1&tax=0&currency_code=EUR
-
-----------------------------------------------------------------------------
-
-BUILDING from source
---------------------
-
-You will need the flext C++ layer for PD and Max/MSP externals to compile this.
-See http://grrrr.org/ext/flext
-Download, install and compile the package.
-Afterwards you can proceed with building this external.
-
-
-pd/Max - Windows - Microsoft Visual C, Borland C++, MinGW:
-----------------------------------------------------------
-Start a command shell with your eventual build environment
-(e.g. run vcvars32.bat for Microsoft Visual Studio)
-
-then run
- ..\flext\build.bat
-(you would have to substitute ..\flext with the respective path to the flext package)
-
-
-pd/Max - OSX/Linux - GCC:
--------------------------
-From a shell run
-bash ../flext/build.sh
-(you would have to substitute ../flext with the respective path to the flext package)
-
-
-----------------------------------------------------------------------------
-
-Version history:
-
-0.1.0:
-- fixed crash when there's no "VST_PATH" environment string found
-- included pd path into VST search path
-- made thread of editor window low priority
-- introduced A LOT of attributes to get info about the plugin
-- make editor window closable by patch
-- plugin can be changed with plug attribute
-- fixed crash on destroying vst~ with open editor window
-- stripped all MFC code
-- fixed DSP initialization, zero dangling audio vectors
-- pre12: added "bypass" and "mute" attributes
-- pre13: with flext 0.4.7 no more interruptions on window close
-- pre14: allow window titles with spaces and update it on window startup
-- pre18: open plug interface on Alt-Click
-- pre18: experimental plug shell support
-- pre19: better shell support
-- pre19: restructured code and added time info
-- pre19: support for event processing (like MIDI in)
-- pre21: consistent MIDI handling, correct handling of parameters with spaces
-- pre22: cleaner GUI code, all kinds of window handling
-- pre22: catch exceptions like crashing plugs
-- pre23: security measures for open edit window
-- pre24: workarounds for Waves5 strangenesses
-
-0.0.0:
-- version of mark@junklight.com
-
----------------------------------------------------------------------------
-
-BUGS:
-- mouse interaction in editor can cause audio dropouts
-
-TODO:
-- include necessary Steinberg license stuff
-- do plugin loading, name scanning in the background
-- translate special characters in strings (like ° as param_label) into system-digestible form
diff --git a/externals/grill/vst/src/editor.cpp b/externals/grill/vst/src/editor.cpp
deleted file mode 100644
index be412b00..00000000
--- a/externals/grill/vst/src/editor.cpp
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
-vst~ - VST plugin object for PD
-based on the work of Jarno Seppänen and Mark Williamson
-
-Copyright (c)2003-2004 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.
-*/
-
-#include "editor.h"
-#include "vsthost.h"
-#include <flext.h>
-
-#if FLEXT_OS == FLEXT_OS_WIN
-// only Windows code is situated in this file
-
-#include "editorwin.hpp"
-
-#elif FLEXT_OS == FLEXT_OS_MAC
-
-#include "editormac.hpp"
-
-#else
-
-#error Platform not supported
-
-#endif
diff --git a/externals/grill/vst/src/editor.h b/externals/grill/vst/src/editor.h
deleted file mode 100644
index 7c5831e7..00000000
--- a/externals/grill/vst/src/editor.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
-vst~ - VST plugin object for PD
-based on the work of Jarno Seppänen and Mark Williamson
-
-Copyright (c)2003-2005 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-*/
-
-#ifndef __EDITOR_H
-#define __EDITOR_H
-
-class VSTPlugin;
-
-void SetupEditor();
-void StartEditor(VSTPlugin *p);
-void StopEditor(VSTPlugin *p);
-void ShowEditor(VSTPlugin *p,bool show);
-void MoveEditor(VSTPlugin *p,int x,int y);
-void SizeEditor(VSTPlugin *p,int x,int y);
-void TitleEditor(VSTPlugin *p,const char *t);
-void CaptionEditor(VSTPlugin *p,bool c);
-void HandleEditor(VSTPlugin *p,bool h);
-void FrontEditor(VSTPlugin *p);
-
-#endif // __EDITOR_H
diff --git a/externals/grill/vst/src/editormac.hpp b/externals/grill/vst/src/editormac.hpp
deleted file mode 100644
index b519aa06..00000000
--- a/externals/grill/vst/src/editormac.hpp
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
-vst~ - VST plugin object for PD
-based on the work of Jarno Seppänen and Mark Williamson
-
-Copyright (c)2003-2004 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.
-*/
-
-#include "Editor.h"
-#include "VstHost.h"
-#include <flext.h>
-
-
-#if FLEXT_OS == FLEXT_OS_MAC
-// only Mac OSX code is situated in this file
-
-void SetupEditor()
-{
-}
-
-void StartEditor(VSTPlugin *p)
-{
-}
-
-void StopEditor(VSTPlugin *p)
-{
-}
-
-void ShowEditor(VSTPlugin *p,bool show)
-{
-}
-
-void MoveEditor(VSTPlugin *p,int x,int y)
-{
-}
-
-void SizeEditor(VSTPlugin *p,int x,int y)
-{
-}
-
-void CaptionEditor(VSTPlugin *plug,bool c)
-{
-}
-
-void TitleEditor(VSTPlugin *p,const char *t)
-{
-}
-
-void HandleEditor(VSTPlugin *p,bool h)
-{
-}
-
-void FrontEditor(VSTPlugin *p)
-{
-}
-
-#endif // FLEXT_OS_MAC
diff --git a/externals/grill/vst/src/editorwin.hpp b/externals/grill/vst/src/editorwin.hpp
deleted file mode 100644
index 558301bc..00000000
--- a/externals/grill/vst/src/editorwin.hpp
+++ /dev/null
@@ -1,361 +0,0 @@
-/*
-vst~ - VST plugin object for PD
-based on the work of Jarno Seppänen and Mark Williamson
-
-Copyright (c)2003-2005 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-*/
-
-#if FLEXT_OS != FLEXT_OS_WIN
-// only Windows code is situated in this file
-#error Wrong implementation
-#endif
-
-#include <map>
-#include <windows.h>
-
-class ThrCmp
-{
-public:
- inline bool operator()(const flext::thrid_t &a,const flext::thrid_t &b) const
- {
- if(sizeof(a) == sizeof(size_t))
- return *(size_t *)&a < *(size_t *)&b;
- else
- return memcmp(&a,&b,sizeof(a)) < 0;
- }
-};
-
-typedef std::map<flext::thrid_t,VSTPlugin *,ThrCmp> WndMap;
-static WndMap wndmap;
-static flext::ThrMutex mapmutex;
-
-#define TIMER_INTERVAL 25
-#define WCLNAME "vst~-class"
-
-
-static LRESULT CALLBACK wndproc(HWND hwnd,UINT msg,WPARAM wp,LPARAM lp)
-{
- mapmutex.Lock();
- VSTPlugin *plug = wndmap[flext::GetThreadId()];
- mapmutex.Unlock();
- FLEXT_ASSERT(plug != NULL);
-
- LRESULT res = 0;
-
- switch(msg) {
- case WM_CREATE:
- // Initialize the window.
- plug->StartEditing(hwnd);
- break;
-
- case WM_CLOSE:
-#ifdef FLEXT_LOGGING
- flext::post("WM_CLOSE");
-#endif
- plug->StopEditing();
-
- DestroyWindow(hwnd);
- break;
- case WM_DESTROY:
-#ifdef FLEXT_LOGGING
- flext::post("WM_DESTROY");
-#endif
- // stop editor thread
- PostQuitMessage(0);
- break;
-
- case WM_TIMER: // fall through
- case WM_ENTERIDLE:
- plug->EditorIdle();
- break;
-#if 0
- case WM_WINDOWPOSCHANGED: {
- // ignore after WM_CLOSE so that x,y positions are preserved
- if(!plug->IsEdited()) break;
-
- WINDOWPOS *w = (WINDOWPOS *)lp;
-
- WINDOWINFO winfo;
- winfo.cbSize = sizeof(winfo);
- GetWindowInfo(hwnd,&winfo);
- int cpx = winfo.rcWindow.left-winfo.rcClient.left;
- int cpy = winfo.rcWindow.top-winfo.rcClient.top;
- int csx = winfo.rcWindow.right-winfo.rcClient.right-cpx;
- int csy = winfo.rcWindow.bottom-winfo.rcClient.bottom-cpy;
- // send normalized coordinates to plugin
- plug->SetPos(w->x+cpx,w->y+cpy,false);
- plug->SetSize(w->cx+csx,w->cy+csy,false);
- return 0;
- }
-#else
- case WM_MOVE: {
- // ignore after WM_CLOSE so that x,y positions are preserved
- if(!plug->IsEdited()) break;
-
- WORD wx = LOWORD(lp),wy = HIWORD(lp);
- short x = reinterpret_cast<short &>(wx),y = reinterpret_cast<short &>(wy);
- // x and y are the coordinates of the client rect (= actual VST interface)
-
- WINDOWINFO winfo;
- winfo.cbSize = sizeof(winfo);
- GetWindowInfo(hwnd,&winfo);
- int px = winfo.rcWindow.left-winfo.rcClient.left;
- int py = winfo.rcWindow.top-winfo.rcClient.top;
- // send normalized coordinates to plugin
- plug->SetPos(x+px,y+py,false);
- break;
- }
-
- case WM_SIZE: {
- if(!plug->IsEdited()) break;
-
- WORD wx = LOWORD(lp),wy = HIWORD(lp);
- short x = reinterpret_cast<short &>(wx),y = reinterpret_cast<short &>(wy);
- // x and y are the coordinates of the client rect (= actual VST interface)
-
- WINDOWINFO winfo;
- winfo.cbSize = sizeof(winfo);
- GetWindowInfo(hwnd,&winfo);
- int px = winfo.rcWindow.left-winfo.rcClient.left;
- int py = winfo.rcWindow.top-winfo.rcClient.top;
- int sx = winfo.rcWindow.right-winfo.rcClient.right-px;
- int sy = winfo.rcWindow.bottom-winfo.rcClient.bottom-py;
- // send normalized coordinates to plugin
- plug->SetSize(x+sx,y+sy,false);
- break;
- }
-#endif
-
-#if 0 // NOT needed for Windows
- case WM_PAINT: {
- // Paint the window's client area.
- RECT rect;
- GetUpdateRect(hwnd,&rect,FALSE);
- ERect erect;
- erect.left = rect.left;
- erect.top = rect.top;
- erect.right = rect.right;
- erect.bottom = rect.bottom;
- plug->Paint(erect);
- break;
- }
-#endif
- case WM_SHOWWINDOW:
- plug->Visible(wp != FALSE,false);
- break;
-
- default:
- #ifdef FLEXT_LOGGING
-// flext::post("WND MSG %i, WP=%i, lp=%i",msg,wp,lp);
- #endif
-
- res = DefWindowProc(hwnd,msg,wp,lp);
- }
- return res;
-}
-
-static void windowsize(HWND wnd,int x,int y,int w,int h)
-{
- // pre correction
- WINDOWINFO winfo;
- winfo.cbSize = sizeof(winfo);
- GetWindowInfo(wnd,&winfo);
- int sx1 = (winfo.rcWindow.right-winfo.rcClient.right)-(winfo.rcWindow.left-winfo.rcClient.left);
- int sy1 = (winfo.rcWindow.bottom-winfo.rcClient.bottom)-(winfo.rcWindow.top-winfo.rcClient.top);
-
- // First reflect new state in flags
- SetWindowPos(wnd,NULL,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE|SWP_NOZORDER|SWP_FRAMECHANGED);
-
- // post correction
- GetWindowInfo(wnd,&winfo);
- int sx2 = (winfo.rcWindow.right-winfo.rcClient.right)-(winfo.rcWindow.left-winfo.rcClient.left);
- int sy2 = (winfo.rcWindow.bottom-winfo.rcClient.bottom)-(winfo.rcWindow.top-winfo.rcClient.top);
-
- // set pos, size and flags
- SetWindowPos(wnd,NULL,x,y,w+sx2-sx1,h+sy2-sy1,SWP_NOZORDER);
-}
-
-static void threadfun(flext::thr_params *p)
-{
- flext::RelPriority(-2);
-
- VSTPlugin *plug = (VSTPlugin *)p;
- HINSTANCE hinstance = (HINSTANCE)GetModuleHandle(NULL);
- flext::thrid_t thrid = flext::GetThreadId();
-
- mapmutex.Lock();
- wndmap[thrid] = plug;
- mapmutex.Unlock();
-
- char tmp[256];
- sprintf(tmp,"vst~ - %s",plug->GetName());
-
- // Get size from plugin
- ERect r;
- plug->GetEditorRect(r);
-
- HWND wnd = CreateWindowEx(
- plug->GetHandle()?WS_EX_APPWINDOW:WS_EX_TOOLWINDOW,
- WCLNAME,tmp,
- WS_POPUP|WS_SYSMENU|WS_MINIMIZEBOX, // no border for the beginning to set proper coordinates
- plug->GetX(),plug->GetY(),r.right-r.left,r.bottom-r.top,
- NULL,NULL,
- hinstance,NULL
- );
-
- if(!wnd)
- FLEXT_LOG1("wnd == NULL: %i",GetLastError());
- else {
- // idle timer
- SetTimer(wnd,0,TIMER_INTERVAL,NULL);
-
- // set caption style
- CaptionEditor(plug,plug->GetCaption());
-
- if(plug->IsVisible()) {
- SetForegroundWindow(wnd);
- ShowWindow(wnd,1);
-
- // notify plugin
- // plug->Dispatch(effEditTop,0,0,0,0);
- }
- else
- ShowWindow(wnd,0);
-
- try
- {
-
- // Message loop
- MSG msg;
- BOOL bRet;
- while( (bRet = GetMessage( &msg, NULL, 0, 0 )) != 0) {
- if(bRet == -1) {
- // handle the error and possibly exit
- FLEXT_LOG1("GetMessage error: %i",GetLastError());
- }
- else {
- TranslateMessage(&msg);
-// double tm1 = flext::GetOSTime();
- DispatchMessage(&msg);
-// double tm2 = flext::GetOSTime();
-// if(tm2-tm1 > 0.01) FLEXT_LOG1("halt %lf",(tm2-tm1)*1000);
- }
- }
-
- }
-
- catch(exception &e) {
- flext::post("vst~ - exception caught, exiting: %s",e.what());
- }
- catch(...) {
- flext::post("vst~ - exception caught, exiting");
- }
-
- if(plug) plug->EditingEnded();
- }
-
- mapmutex.Lock();
- wndmap.erase(thrid);
- mapmutex.Unlock();
-}
-
-void SetupEditor()
-{
- HINSTANCE hinstance = (HINSTANCE)GetModuleHandle(NULL);
-
- // Fill in the window class structure with parameters that describe the main window.
- WNDCLASS wcx;
- wcx.style = CS_DBLCLKS; // | CS_HREDRAW | CS_VREDRAW; // redraw if size changes
- wcx.lpfnWndProc = wndproc; // points to window procedure
- wcx.cbClsExtra = 0; // no extra class memory
- wcx.cbWndExtra = 0; // no extra window memory
- wcx.hInstance = hinstance; // handle to instance
- wcx.hIcon = NULL; //LoadIcon(NULL, IDI_APPLICATION); // predefined app. icon
- wcx.hCursor = LoadCursor(NULL, IDC_ARROW); // predefined arrow
- wcx.hbrBackground = NULL; //GetStockObject(WHITE_BRUSH); // white background brush
- wcx.lpszMenuName = NULL; // name of menu resource
- wcx.lpszClassName = WCLNAME; // name of window class
-
- ATOM at = RegisterClass(&wcx);
- FLEXT_ASSERT(at);
-}
-
-void StartEditor(VSTPlugin *p)
-{
-#ifdef FLEXT_LOGGING
- flext::post("Start editor 1");
-#endif
- flext::LaunchThread(threadfun,reinterpret_cast<flext::thr_params *>(p));
-#ifdef FLEXT_LOGGING
- flext::post("Start editor 2");
-#endif
-}
-
-void StopEditor(VSTPlugin *p)
-{
-#ifdef FLEXT_LOGGING
- flext::post("Stop editor 1");
-#endif
- PostMessage(p->EditorHandle(),WM_CLOSE,0,0);
-// flext::StopThread(threadfun,reinterpret_cast<flext::thr_params *>(p));
-#ifdef FLEXT_LOGGING
- flext::post("Stop editor 2");
-#endif
-}
-
-void ShowEditor(VSTPlugin *p,bool show)
-{
- ShowWindow(p->EditorHandle(),show);
-}
-
-void MoveEditor(VSTPlugin *p,int x,int y)
-{
- HWND wnd = p->EditorHandle();
- SetWindowPos(wnd,NULL,x,y,0,0,SWP_NOSIZE|SWP_NOZORDER);
-}
-
-void SizeEditor(VSTPlugin *p,int x,int y)
-{
- HWND wnd = p->EditorHandle();
- SetWindowPos(wnd,NULL,0,0,x,y,SWP_NOMOVE|SWP_NOZORDER);
-}
-
-void FrontEditor(VSTPlugin *p)
-{
- SetForegroundWindow(p->EditorHandle());
-}
-
-void CaptionEditor(VSTPlugin *plug,bool c)
-{
- HWND wnd = plug->EditorHandle();
- LONG ns,style = GetWindowLong(wnd,GWL_STYLE);
- if(c) ns = style|WS_BORDER|WS_CAPTION;
- else ns = style&~(WS_BORDER|WS_CAPTION);
- if(ns != style) {
- SetWindowLong(wnd,GWL_STYLE,ns);
- windowsize(wnd,plug->GetX(),plug->GetY(),plug->GetW(),plug->GetH());
- }
-}
-
-void HandleEditor(VSTPlugin *plug,bool h)
-{
- HWND wnd = plug->EditorHandle();
- bool v = plug->IsVisible();
- if(v) ShowWindow(wnd,FALSE);
- SetWindowLong(wnd,GWL_EXSTYLE,h?WS_EX_APPWINDOW:WS_EX_TOOLWINDOW);
- if(v) ShowWindow(wnd,TRUE);
-}
-
-void TitleEditor(VSTPlugin *p,const char *t)
-{
- SetWindowText(p->EditorHandle(),t);
-}
-
-/*
-bool IsEditorShown(const VSTPlugin *p)
-{
- return IsWindowVisible(p->EditorHandle()) != FALSE;
-}
-*/ \ No newline at end of file
diff --git a/externals/grill/vst/src/main.cpp b/externals/grill/vst/src/main.cpp
deleted file mode 100644
index d0e5a6c0..00000000
--- a/externals/grill/vst/src/main.cpp
+++ /dev/null
@@ -1,980 +0,0 @@
-/*
-vst~ - VST plugin object for PD
-based on the work of Jarno Seppänen and Mark Williamson
-
-Copyright (c)2003-2005 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-*/
-
-// needed for CoInitializeEx
-#define _WIN32_DCOM
-
-#include "main.h"
-
-#include "editor.h"
-#include "vsthost.h"
-
-#include <stdlib.h>
-#include <string.h>
-#include <string>
-
-#if FLEXT_OS == FLEXT_OS_WIN
-#include <direct.h>
-#include <io.h>
-#include <objbase.h>
-#endif
-
-
-#define VST_VERSION "0.1.0pre26"
-
-
-class vst
- : public flext_dsp
- , public Responder
-{
- FLEXT_HEADER_S(vst,flext_dsp,Setup)
-
-public:
- vst(int argc,const t_atom *argv);
- ~vst();
-
-protected:
- virtual bool CbDsp();
- virtual void CbSignal();
-
- virtual void CbClick() { ms_edit(true); }
-
- bool ms_plug(int argc,const t_atom *argv);
- bool ms_plug(const AtomList &args) { return ms_plug(args.Count(),args.Atoms()); }
- void mg_plug(AtomList &sym) const { sym(1); SetString(sym[0],plugname.c_str()); }
-
- void ms_subplug(int argc,const t_atom *argv);
- void ms_subplug(const AtomList &args) { ms_subplug(args.Count(),args.Atoms()); }
- void mg_subplug(AtomList &sym) const { sym(1); SetString(sym[0],subplug.c_str()); }
-
- void m_pluglist() { if(plug) plug->ListPlugs(sym_pluglist); }
-
- void mg_editor(bool &ed) { ed = plug && plug->HasEditor(); }
-
- void ms_edit(bool on) { if(plug) plug->Edit(on); }
- void mg_edit(bool &ed) { ed = plug && plug->IsEdited(); }
- void ms_vis(bool vis) { if(plug) plug->Visible(vis); }
- void mg_vis(bool &vis) { vis = plug && plug->IsVisible(); }
-
- void mg_winx(int &x) const { x = plug?plug->GetX():0; }
- void mg_winy(int &y) const { y = plug?plug->GetY():0; }
- void mg_winw(int &x) const { x = plug?plug->GetW():0; }
- void mg_winh(int &y) const { y = plug?plug->GetH():0; }
- void ms_winx(int x) { if(plug) plug->SetX(x); }
- void ms_winy(int y) { if(plug) plug->SetY(y); }
- void ms_winw(int x) { if(plug) plug->SetW(x); }
- void ms_winh(int y) { if(plug) plug->SetH(y); }
- void ms_wincaption(bool c) { if(plug) plug->SetCaption(c); }
- void mg_wincaption(bool &c) const { c = plug && plug->GetCaption(); }
- void ms_winhandle(bool c) { if(plug) plug->SetHandle(c); }
- void mg_winhandle(bool &c) const { c = plug && plug->GetHandle(); }
- void ms_wintitle(const AtomList &t);
- void mg_wintitle(AtomList &t) const { if(plug) { t(1); SetString(t[0],plug->GetTitle()); } }
- void m_winfront() const { if(plug) plug->ToFront(); }
-
- void mg_chnsin(int &c) const { c = plug?plug->GetNumInputs():0; }
- void mg_chnsout(int &c) const { c = plug?plug->GetNumOutputs():0; }
- void mg_params(int &p) const { p = plug?plug->GetNumParams():0; }
- void mg_programs(int &p) const { p = plug?plug->GetNumPrograms():0; }
- void mg_progcats(int &p) const { p = plug?plug->GetNumCategories():0; }
- void mg_plugname(const t_symbol *&s) const { s = plug?MakeSymbol(plug->GetName()):sym__; }
- void mg_plugvendor(const t_symbol *&s) const { s = plug?MakeSymbol(plug->GetVendorName()):sym__; }
- void mg_plugdll(const t_symbol *&s) const { s = plug?MakeSymbol(plug->GetDllName()):sym__; }
- void mg_plugversion(int &v) const { v = plug?plug->GetVersion():0; }
- void mg_issynth(bool &s) const { s = plug && plug->IsSynth(); }
-
- void m_print(int ac,const t_atom *av);
-
- void ms_program(int p) { if(plug && p >= 0) plug->SetCurrentProgram(p); }
- void mg_program(int &p) const { p = plug?plug->GetCurrentProgram():0; }
- void mg_progname(int argc,const t_atom *argv) const;
-
- void m_pname(int pnum);
- void ms_paramnames(int cnt) { paramnames = cnt; if(plug) plug->ScanParams(cnt); }
-
- void ms_param(int pnum,float val);
- void ms_params(int argc,const t_atom *argv);
- void mg_param(int pnum);
- void mg_params(int argc,const t_atom *argv);
- void m_ptext(int pnum);
- void m_ptexts(int argc,const t_atom *argv);
-
- void mg_channel(int &chn) const { chn = plug?plug->GetChannel():0; }
- void ms_channel(int chn) { if(plug) plug->SetChannel(chn); }
-
- void m_note(int note,int vel);
- void m_noteoff(int note) { m_note(note,0); }
- void m_programchange(int ctrl_value) { if(plug) plug->AddProgramChange(ctrl_value); }
- void m_ctrlchange(int control,int ctrl_value) { if(plug) plug->AddControlChange(control,ctrl_value); }
- void m_aftertouch(int ctrl_value) { if(plug) plug->AddAftertouch(ctrl_value); }
- void m_polyaftertouch(int note,int ctrl_value) { if(plug) plug->AddPolyAftertouch(note,ctrl_value); }
- void m_pitchbend(int ctrl_value) { if(plug) plug->AddPitchBend(ctrl_value); }
-
- void mg_dumpevents(bool &ev) const { ev = plug?plug->GetEvents():false; }
- void ms_dumpevents(bool ev) { if(plug) plug->SetEvents(ev); }
-
- void mg_playing(bool &p) { p = plug && plug->GetPlaying(); }
- void ms_playing(bool p) { if(plug) plug->SetPlaying(p); }
- void mg_looping(bool &p) { p = plug && plug->GetLooping(); }
- void ms_looping(bool p) { if(plug) plug->SetLooping(p); }
- void mg_feedback(bool &p) { p = plug && plug->GetFeedback(); }
- void ms_feedback(bool p) { if(plug) plug->SetFeedback(p); }
- void mg_samplepos(float &p) { p = plug?(float)plug->GetSamplePos():0; }
- void ms_samplepos(float p) { if(plug) plug->SetSamplePos(p); }
- void mg_ppqpos(float &p) { p = plug?(float)plug->GetPPQPos():0; }
- void ms_ppqpos(float p) { if(plug) plug->SetPPQPos(p); }
- void mg_tempo(float &p) { p = plug?(float)plug->GetTempo():0; }
- void ms_tempo(float p) { if(plug) plug->SetTempo(p); }
- void mg_barstart(float &p) { p = plug?(float)plug->GetBarStart():0; }
- void ms_barstart(float p) { if(plug) plug->SetBarStart(p); }
- void mg_cyclestart(float &p) { p = plug?(float)plug->GetCycleStart():0; }
- void ms_cyclestart(float p) { if(plug) plug->SetCycleStart(p); }
- void mg_cycleend(float &p) { p = plug?(float)plug->GetCycleEnd():0; }
- void ms_cycleend(float p) { if(plug) plug->SetCycleEnd(p); }
- void mg_cyclelength(float &p) { p = plug?(float)(plug->GetCycleEnd()-plug->GetCycleStart()):0; }
- void ms_cyclelength(float p) { if(p) plug->SetCycleEnd(plug->GetCycleStart()+p); }
- void mg_timesignom(int &p) { p = plug?plug->GetTimesigNom():0; }
- void ms_timesignom(int p) { if(plug) plug->SetTimesigNom(p); }
- void mg_timesigden(int &p) { p = plug?plug->GetTimesigDen():0; }
- void ms_timesigden(int p) { if(plug) plug->SetTimesigDen(p); }
- void mg_smpteoffset(int &p) { p = plug?plug->GetSmpteOffset():0; }
- void ms_smpteoffset(int p) { if(plug) plug->SetSmpteOffset(p); }
- void mg_smpterate(int &p) { p = plug?plug->GetSmpteRate():0; }
- void ms_smpterate(int p) { if(plug) plug->SetSmpteRate(p); }
-
-private:
- void display_parameter(int param,bool showparams);
-
- VSTPlugin *plug;
- std::string plugname,subplug;
- bool visible,bypass,mute;
- int paramnames;
-
- int blsz;
- bool (VSTPlugin::*vstfun)(t_sample **insigs,t_sample **outsigs,long n);
- bool sigmatch;
- t_sample **vstin,**vstout,**tmpin,**tmpout;
-
- void InitPlug();
- void ClearPlug();
- bool LoadPlug();
- void InitPlugDSP();
- void InitBuf();
- void ClearBuf();
-
- static void Setup(t_classid);
-
- virtual void Respond(const t_symbol *sym,int argc = 0,const t_atom *argv = NULL);
-
- FLEXT_CALLBACK_V(m_print)
-
- FLEXT_CALLVAR_V(mg_plug,ms_plug)
- FLEXT_CALLVAR_V(mg_subplug,ms_subplug)
- FLEXT_CALLBACK(m_pluglist)
-
- FLEXT_CALLVAR_B(mg_edit,ms_edit)
- FLEXT_CALLGET_B(mg_editor)
- FLEXT_CALLVAR_B(mg_vis,ms_vis)
- FLEXT_ATTRVAR_B(bypass)
- FLEXT_ATTRVAR_B(mute)
-
- FLEXT_CALLVAR_I(mg_channel,ms_channel)
- FLEXT_CALLBACK_II(m_note)
- FLEXT_CALLBACK_I(m_noteoff)
- FLEXT_CALLBACK_II(m_ctrlchange)
- FLEXT_CALLBACK_I(m_aftertouch)
- FLEXT_CALLBACK_II(m_polyaftertouch)
- FLEXT_CALLBACK_I(m_pitchbend)
-
- FLEXT_CALLVAR_B(mg_dumpevents,ms_dumpevents)
-
- FLEXT_CALLBACK_I(m_programchange)
- FLEXT_CALLVAR_I(mg_program,ms_program)
- FLEXT_CALLBACK_V(mg_progname)
-
- FLEXT_CALLBACK_I(m_pname)
- FLEXT_ATTRGET_I(paramnames)
- FLEXT_CALLSET_I(ms_paramnames)
- FLEXT_CALLBACK_2(ms_param,int,float)
- FLEXT_CALLBACK_V(ms_params)
- FLEXT_CALLBACK_I(mg_param)
- FLEXT_CALLBACK_V(mg_params)
- FLEXT_CALLBACK_I(m_ptext)
- FLEXT_CALLBACK_V(m_ptexts)
-
- FLEXT_CALLVAR_I(mg_winx,ms_winx)
- FLEXT_CALLVAR_I(mg_winy,ms_winy)
- FLEXT_CALLVAR_I(mg_winw,ms_winw)
- FLEXT_CALLVAR_I(mg_winh,ms_winh)
- FLEXT_CALLVAR_B(mg_wincaption,ms_wincaption)
- FLEXT_CALLVAR_B(mg_winhandle,ms_winhandle)
- FLEXT_CALLVAR_V(mg_wintitle,ms_wintitle)
- FLEXT_CALLBACK(m_winfront)
-
- FLEXT_CALLGET_I(mg_chnsin)
- FLEXT_CALLGET_I(mg_chnsout)
- FLEXT_CALLGET_I(mg_params)
- FLEXT_CALLGET_I(mg_programs)
- FLEXT_CALLGET_I(mg_progcats)
- FLEXT_CALLGET_S(mg_plugname)
- FLEXT_CALLGET_S(mg_plugvendor)
- FLEXT_CALLGET_S(mg_plugdll)
- FLEXT_CALLGET_I(mg_plugversion)
- FLEXT_CALLGET_B(mg_issynth)
-
- FLEXT_CALLVAR_B(mg_playing,ms_playing)
- FLEXT_CALLVAR_B(mg_looping,ms_looping)
- FLEXT_CALLVAR_B(mg_feedback,ms_feedback)
- FLEXT_CALLVAR_F(mg_samplepos,ms_samplepos)
- FLEXT_CALLVAR_F(mg_ppqpos,ms_ppqpos)
- FLEXT_CALLVAR_F(mg_tempo,ms_tempo)
- FLEXT_CALLVAR_F(mg_barstart,ms_barstart)
- FLEXT_CALLVAR_F(mg_cyclestart,ms_cyclestart)
- FLEXT_CALLVAR_F(mg_cycleend,ms_cycleend)
- FLEXT_CALLVAR_F(mg_cyclelength,ms_cyclelength)
- FLEXT_CALLVAR_I(mg_timesignom,ms_timesignom)
- FLEXT_CALLVAR_I(mg_timesigden,ms_timesigden)
- FLEXT_CALLVAR_I(mg_smpteoffset,ms_smpteoffset)
- FLEXT_CALLVAR_I(mg_smpterate,ms_smpterate)
-
- static const t_symbol *sym_progname,*sym_pname,*sym_param,*sym_ptext,*sym_pluglist;
-};
-
-FLEXT_NEW_DSP_V("vst~",vst);
-
-
-const t_symbol *vst::sym_progname,*vst::sym_pname,*vst::sym_param,*vst::sym_ptext,*vst::sym_pluglist;
-
-void vst::Setup(t_classid c)
-{
- post("");
- post("vst~ %s - VST plugin object, (C)2003-05 Thomas Grill",VST_VERSION);
- post("based on the work of Jarno Seppänen and Mark Williamson");
- post("");
-
- FLEXT_CADDATTR_VAR(c,"plug",mg_plug,ms_plug);
- FLEXT_CADDATTR_VAR(c,"subplug",mg_subplug,ms_subplug);
- FLEXT_CADDMETHOD_(c,0,"getpluglist",m_pluglist);
- FLEXT_CADDATTR_VAR(c,"edit",mg_edit,ms_edit);
- FLEXT_CADDATTR_GET(c,"editor",mg_editor);
- FLEXT_CADDATTR_VAR(c,"vis",mg_vis,ms_vis);
- FLEXT_CADDATTR_VAR1(c,"bypass",bypass);
- FLEXT_CADDATTR_VAR1(c,"mute",mute);
- FLEXT_CADDMETHOD_(c,0,"print",m_print);
-
- FLEXT_CADDATTR_VAR(c,"channel",mg_channel,ms_channel);
- FLEXT_CADDMETHOD_I(c,0,"noteoff",m_noteoff);
- FLEXT_CADDMETHOD_II(c,0,"note",m_note);
- FLEXT_CADDMETHOD_II(c,0,"patouch",m_polyaftertouch);
- FLEXT_CADDMETHOD_II(c,0,"ctlchg",m_ctrlchange);
- FLEXT_CADDMETHOD_(c,0,"atouch",m_aftertouch);
- FLEXT_CADDMETHOD_(c,0,"pbend",m_pitchbend);
-
- FLEXT_CADDATTR_VAR(c,"events",mg_dumpevents,ms_dumpevents);
-
- FLEXT_CADDMETHOD_(c,0,"progchg",m_programchange);
- FLEXT_CADDATTR_VAR(c,"program",mg_program,ms_program);
- FLEXT_CADDMETHOD_(c,0,"getprogname",mg_progname);
-
- FLEXT_CADDMETHOD_I(c,0,"getpname",m_pname);
- FLEXT_CADDATTR_VAR(c,"pnames",paramnames,ms_paramnames);
- FLEXT_CADDMETHOD_2(c,0,"param",ms_param,int,float);
- FLEXT_CADDMETHOD_(c,0,"param",ms_params);
- FLEXT_CADDMETHOD_(c,0,"getparam",mg_param);
- FLEXT_CADDMETHOD_(c,0,"getparam",mg_params);
- FLEXT_CADDMETHOD_(c,0,"getptext",m_ptext);
- FLEXT_CADDMETHOD_(c,0,"getptext",m_ptexts);
-
- FLEXT_CADDATTR_VAR(c,"x",mg_winx,ms_winx);
- FLEXT_CADDATTR_VAR(c,"y",mg_winy,ms_winy);
- FLEXT_CADDATTR_VAR(c,"w",mg_winw,ms_winw);
- FLEXT_CADDATTR_VAR(c,"h",mg_winh,ms_winh);
- FLEXT_CADDATTR_VAR(c,"title",mg_wintitle,ms_wintitle);
- FLEXT_CADDATTR_VAR(c,"caption",mg_wincaption,ms_wincaption);
- FLEXT_CADDATTR_VAR(c,"handle",mg_winhandle,ms_winhandle);
- FLEXT_CADDMETHOD_(c,0,"front",m_winfront);
-
- FLEXT_CADDATTR_GET(c,"ins",mg_chnsin);
- FLEXT_CADDATTR_GET(c,"outs",mg_chnsout);
- FLEXT_CADDATTR_GET(c,"params",mg_params);
- FLEXT_CADDATTR_GET(c,"programs",mg_programs);
- FLEXT_CADDATTR_GET(c,"progcats",mg_progcats);
- FLEXT_CADDATTR_GET(c,"name",mg_plugname);
- FLEXT_CADDATTR_GET(c,"vendor",mg_plugvendor);
- FLEXT_CADDATTR_GET(c,"dll",mg_plugdll);
- FLEXT_CADDATTR_GET(c,"version",mg_plugversion);
- FLEXT_CADDATTR_GET(c,"synth",mg_issynth);
-
- FLEXT_CADDATTR_VAR(c,"playing",mg_playing,ms_playing);
- FLEXT_CADDATTR_VAR(c,"looping",mg_looping,ms_looping);
- FLEXT_CADDATTR_VAR(c,"feedback",mg_feedback,ms_feedback);
- FLEXT_CADDATTR_VAR(c,"samplepos",mg_samplepos,ms_samplepos);
- FLEXT_CADDATTR_VAR(c,"ppqpos",mg_ppqpos,ms_ppqpos);
- FLEXT_CADDATTR_VAR(c,"tempo",mg_tempo,ms_tempo);
- FLEXT_CADDATTR_VAR(c,"barstart",mg_barstart,ms_barstart);
- FLEXT_CADDATTR_VAR(c,"loopstart",mg_cyclestart,ms_cyclestart);
- FLEXT_CADDATTR_VAR(c,"loopend",mg_cycleend,ms_cycleend);
- FLEXT_CADDATTR_VAR(c,"looplength",mg_cyclelength,ms_cyclelength);
- FLEXT_CADDATTR_VAR(c,"timenom",mg_timesignom,ms_timesignom);
- FLEXT_CADDATTR_VAR(c,"timeden",mg_timesigden,ms_timesigden);
- FLEXT_CADDATTR_VAR(c,"smpteoffset",mg_smpteoffset,ms_smpteoffset);
- FLEXT_CADDATTR_VAR(c,"smpterate",mg_smpterate,ms_smpterate);
-
- sym_progname = MakeSymbol("progname");
- sym_pname = MakeSymbol("pname");
- sym_param = MakeSymbol("param");
- sym_ptext = MakeSymbol("ptext");
- sym_pluglist = MakeSymbol("pluglist");
-
- VSTPlugin::Setup();
- SetupEditor();
-}
-
-static int corefs = 0;
-
-vst::vst(int argc,const t_atom *argv):
- plug(NULL),visible(false),
- blsz(0),
- vstfun(NULL),vstin(NULL),vstout(NULL),tmpin(NULL),tmpout(NULL),
- bypass(false),mute(false),paramnames(0)
-{
-#if FLEXT_OS == FLEXT_OS_WIN
- // this is necessary for Waveshell
- if(!corefs++) CoInitializeEx(NULL,COINIT_MULTITHREADED+COINIT_SPEED_OVER_MEMORY);
-#endif
-
- int ins = 1,outs = 1;
- if(argc >= 1 && CanbeInt(argv[0])) { ins = GetAInt(argv[0]); argc--,argv++; }
- if(argc >= 1 && CanbeInt(argv[0])) { outs = GetAInt(argv[0]); argc--,argv++; }
-
- AddInSignal(ins);
- AddOutSignal(outs);
-
- if(argc >= 1 && !ms_plug(argc,argv)) InitProblem();
-}
-
-vst::~vst()
-{
- ClearPlug();
-#if FLEXT_OS == FLEXT_OS_WIN
- if(!--corefs) CoUninitialize();
-#endif
-}
-
-void vst::ClearPlug()
-{
- if(plug) {
- ClearBuf(); // needs valid plug
- VSTPlugin::Delete(plug);
- plug = NULL;
- }
-}
-
-void vst::InitPlug()
-{
- FLEXT_ASSERT(plug);
-
- vstfun = plug->IsReplacing()?&VSTPlugin::processReplacing:&VSTPlugin::process;
- sigmatch = plug->GetNumInputs() == CntInSig() && plug->GetNumOutputs() == CntOutSig();
- InitPlugDSP();
-
- InitBuf();
-
- plug->ScanParams(paramnames);
-}
-
-void vst::InitPlugDSP()
-{
- FLEXT_ASSERT(plug);
- // this might be invalid if DSP is switched off,
- // but the plug will get updated settings with m_dsp later
- plug->DspInit(Samplerate(),Blocksize());
-}
-
-void vst::ClearBuf()
-{
- if(!plug) return;
-
- if(vstin) {
- for(int i = 0; i < plug->GetNumInputs(); ++i) FreeAligned(vstin[i]);
- delete[] vstin; vstin = NULL;
- delete[] tmpin; tmpin = NULL;
- }
- if(vstout) {
- for(int i = 0; i < plug->GetNumOutputs(); ++i) FreeAligned(vstout[i]);
- delete[] vstout; vstout = NULL;
- delete[] tmpout; tmpout = NULL;
- }
-}
-
-void vst::InitBuf()
-{
- FLEXT_ASSERT(!vstin && !tmpin && !vstout && !tmpout);
- const int inputs = plug->GetNumInputs(),outputs = plug->GetNumOutputs();
-
- int i;
-
- vstin = new t_sample *[inputs];
- tmpin = new t_sample *[inputs];
- for(i = 0; i < inputs; ++i) vstin[i] = (t_sample *)NewAligned(Blocksize()*sizeof(t_sample));
-
- vstout = new t_sample *[outputs];
- tmpout = new t_sample *[outputs];
- for(i = 0; i < outputs; ++i) vstout[i] = (t_sample *)NewAligned(Blocksize()*sizeof(t_sample));
-}
-
-static std::string findFilePath(const std::string &path,const std::string &dllname)
-{
-#if FLEXT_OS == FLEXT_OS_WIN
- _chdir( path.c_str() );
- WIN32_FIND_DATA data;
- HANDLE fh = FindFirstFile(dllname.c_str(),&data);
- if(fh != INVALID_HANDLE_VALUE) {
- FindClose(fh);
- return path;
- }
-#endif
-/*
- CFileFind finder;
- if(finder.FindFile( dllname ))
- return path;
- else {
- finder.FindFile();
- while(finder.FindNextFile()) {
- if(finder.IsDirectory()) {
- if(!finder.IsDots()) {
- CString *npath = new CString( finder.GetFilePath());
- const C *ret = findFilePath( *npath , dllname );
- if(ret) {
- CString *retstr = new CString(ret);
- return *retstr;
- }
- }
- }
- }
- }
-*/
-
- return std::string();
-}
-
-// \todo this should be in the background, because it can take some time
-// ideally vst would get a response from VSTPlugin when readily loaded and
-// vst would dump out a respective signal to the patcher
-bool vst::LoadPlug()
-{
- if(plug) ClearPlug();
-
- VSTPlugin *p = VSTPlugin::New(this);
-
- // try loading the dll from the raw filename
- bool ok = p->Instance(plugname.c_str(),subplug.c_str());
- if(ok)
- FLEXT_LOG("raw filename loaded fine");
- else {
-#if FLEXT_SYS == FLEXT_SYS_PD
- // try finding it on the PD path
- char *name,dir[1024];
- int fd = open_via_path("",plugname.c_str(),".dll",dir,&name,sizeof(dir)-1,0);
- if(fd > 0) close(fd);
- else name = NULL;
-
- if(name) {
- FLEXT_LOG("found VST dll on the PD path");
- // if dir is current working directory... name points to dir
- if(dir == name) strcpy(dir,".");
-
- std::string dllname(dir);
- dllname += "\\";
- dllname += name;
-
- ok = p->Instance(dllname.c_str());
- }
-#endif
- }
-
- if(!ok) {
- // try finding it on the VST path
- char *vst_path = getenv("VST_PATH");
-
- std::string dllname(plugname);
- if(dllname.find(".dll") == -1) dllname += ".dll";
-
- if(vst_path) {
- FLEXT_LOG("found VST_PATH env variable");
- char* tok_path = new char[strlen( vst_path)+1];
- strcpy( tok_path , vst_path);
- char *tok = strtok( tok_path , ";" );
- while( tok != NULL ) {
- std::string abpath( tok );
- if( abpath[abpath.length()-1] != '\\' ) abpath += "\\";
-
- FLEXT_LOG1("trying VST_PATH %s",(const char *)abpath.c_str());
-
- std::string realpath = findFilePath( abpath , dllname );
- //post( "findFilePath( %s , %s ) = %s\n" , abpath , dllname , realpath );
- if ( realpath.length() ) {
- realpath += plugname;
- FLEXT_LOG1("trying %s",(const char *)realpath.c_str());
-
- ok = p->Instance(realpath.c_str());
- if(ok) {
- FLEXT_LOG("plugin loaded via VST_PATH");
- break;
- }
- }
-
- tok = strtok( NULL , ";" );
-// if(!tok) post("%s - couldn't find plugin",thisName());
- }
-
- delete[] tok_path;
- }
- }
-
- if(!ok) {
- post("%s - unable to load plugin '%s'",thisName(),plugname.c_str());
- VSTPlugin::Delete(p);
- }
- else {
- plug = p;
- InitPlug();
- }
-
- return ok;
-}
-
-static char *stripesc(char *buf)
-{
-#if FLEXT_SYS == FLEXT_SYS_PD
- // strip char escapes (only in newer/devel PD version)
- char *cs = buf,*cd = cs;
- while(*cs) {
- if(*cs != '\\') *(cd++) = *cs;
- ++cs;
- }
- *cd = 0;
-#endif
- return buf;
-}
-
-bool vst::ms_plug(int argc,const t_atom *argv)
-{
- ClearPlug();
-
- plugname.clear();
- char buf[255];
- for(int i = 0; i < argc; i++) {
- if(i > 0) plugname += ' ';
- GetAString(argv[i],buf,sizeof buf);
-#if FLEXT_OS == FLEXT_OS_WIN
- strlwr(buf);
-#endif
- plugname += stripesc(buf);
- }
-
- if(!plugname.length())
- return false;
- else
- return LoadPlug();
-}
-
-void vst::ms_subplug(int argc,const t_atom *argv)
-{
- subplug.clear();
- char buf[255];
- for(int i = 0; i < argc; i++) {
- if(i > 0) subplug += ' ';
- GetAString(argv[i],buf,sizeof buf);
- subplug += stripesc(buf);
- }
-
- LoadPlug();
-}
-
-bool vst::CbDsp()
-{
- if(plug) {
- FLEXT_ASSERT(vstfun);
-
- InitPlugDSP();
-
- if(blsz != Blocksize()) {
- blsz = Blocksize();
- ClearBuf();
- InitBuf();
- }
- }
- return true;
-}
-
-void vst::CbSignal()
-{
- if(!plug || !plug->UniqueID() || mute)
- flext_dsp::CbSignal();
- else if(bypass) {
- const int n = Blocksize();
- t_sample *const *insigs = InSig();
- t_sample *const *outsigs = OutSig();
-
- // copy as many channels as possible and zero dangling ones
-
- int i,mx = CntInSig();
- if(mx > CntOutSig()) mx = CntOutSig();
- if(mx == 1) {
- CopySamples(outsigs[0],insigs[0],n);
- i = 1;
- }
- else if(mx == 2) {
- t_sample *o1 = outsigs[0],*o2 = outsigs[1];
- const t_sample *i1 = insigs[0],*i2 = insigs[1];
- for(int s = 0; s < n; ++s) {
- const t_sample f = *(i1++);
- *(o2++) = *(i2++);
- *(o1++) = f;
- }
- i = 2;
- }
- else
- for(i = 0; i < mx; ++i) {
- // must copy via temporary buffer as ordering of output signals can collide with input signals
- CopySamples(tmpin[i],insigs[i],n);
- CopySamples(outsigs[i],tmpin[i],n);
- }
-
- for(; i < CntOutSig(); ++i)
- ZeroSamples(outsigs[i],n);
- }
- else if(sigmatch) {
- if(!(plug->*vstfun)(const_cast<t_sample **>(InSig()),const_cast<t_sample **>(OutSig()),Blocksize())) {
- for(int i = 0; i < CntOutSig(); ++i)
- ZeroSamples(OutSig()[i],Blocksize());
- }
- }
- else {
- const int inputs = plug->GetNumInputs(),outputs = plug->GetNumOutputs();
- const int cntin = CntInSig(),cntout = CntOutSig();
- const int n = Blocksize();
- t_sample *const *insigs = InSig();
- t_sample *const *outsigs = OutSig();
- t_sample **inv,**outv;
-
- if(inputs <= cntin)
- inv = const_cast<t_sample **>(insigs);
- else { // more plug inputs than inlets
- int i;
- for(i = 0; i < cntin; ++i) tmpin[i] = const_cast<t_sample *>(insigs[i]);
-
- // set dangling inputs to zero
- // according to mode... (e.g. set zero)
- for(; i < inputs; ++i) ZeroSamples(tmpin[i] = vstin[i],n);
-
- inv = tmpin;
- }
-
- const bool more = outputs <= cntout;
- if(more) // more outlets than plug outputs
- outv = const_cast<t_sample **>(outsigs);
- else {
- int i;
- for(i = 0; i < cntout; ++i) tmpout[i] = outsigs[i];
- for(; i < outputs; ++i) tmpout[i] = vstout[i];
-
- outv = tmpout;
- }
-
- // call plugin DSP function
- if(!(plug->*vstfun)(inv,outv,n)) {
- for(int i = 0; i < outputs; ++i)
- ZeroSamples(outsigs[i],n);
- }
-
- if(more) {
- // according to mode set dangling output vectors
-
- // currently simply clear them....
- for(int i = outputs; i < cntout; ++i)
- ZeroSamples(outsigs[i],n);
- }
- }
-}
-
-void vst::mg_progname(int argc,const t_atom *argv) const
-{
- if(plug) {
- int cat,pnum;
- if(argc == 1 && CanbeInt(argv[0])) {
- cat = -1,pnum = GetAInt(argv[0]);
- }
- else if(argc == 2 && CanbeInt(argv[0]) && CanbeInt(argv[1])) {
- cat = GetAInt(argv[0]),pnum = GetAInt(argv[1]);
- }
- else pnum = -1;
-
- if(pnum >= 0) {
- char str[256];
- plug->GetProgramName(cat,pnum,str);
-
- t_atom at[3];
- SetInt(at[0],cat);
- SetInt(at[1],pnum);
- SetString(at[2],str);
- ToOutAnything(GetOutAttr(),sym_progname,3,at);
- }
- else
- post("%s - Syntax: %s [category] program",thisName(),GetString(thisTag()));
- }
-}
-
-void vst::ms_wintitle(const AtomList &t)
-{
- if(plug) {
- char txt[256];
- t.Print(txt,sizeof txt);
- plug->SetTitle(txt);
- }
-}
-
- /**
- * display the parameters names and values and some other bits and pieces that
- * may be of use
- */
-
-void vst::m_print(int ac,const t_atom *av)
-{
- if(!plug) return;
-
- int i;
- bool params = false;
- bool header = true;
- bool programs = false;
- bool parameters = true;
- int specific = -1;
- if( ac > 0 ) {
- for( i = 0 ; i < ac ; i++) {
- if(IsString(av[i])) {
- const char *buf = GetString(av[i]);
- if ( strcmp( buf , "-params" ) == 0 ) {
- params = true;
- }
- else if ( strcmp( buf , "-noheader" ) == 0 ) {
- header = false;
- }
- else if ( strcmp( buf , "-programs" ) == 0 ) {
- programs = true;
- parameters = false;
- }
- else if ( strcmp( buf , "-parameters" ) == 0 ) {
- parameters = false;
- }
- else if ( strcmp( buf , "-help" ) == 0 ) {
- post("print options:");
- post("-help \t\tprint this");
- post("-programs \tshow the programs");
- post("-parameters \tshow the parameters");
- post("-params \tshow the parameter display values");
- post("-noheader \tdo not display the header");
- return;
- }
- }
- else if(CanbeInt(av[i])) {
- int p = GetAInt(av[i]);
- if (( p > 0 ) && ( p <= plug->GetNumParams())) {
- specific = p - 1;
- }
- }
- }
- }
-
- if ( header ) {
- post("VST~ plugin: %s ", plug->GetName() );
- post("made by: %s ", plug->GetVendorName() );
- post("parameters %d\naudio: %d in(s)/%d out(s) \nLoaded from library \"%s\".\n",
- plug->GetNumParams(),
- CntInSig(),
- CntOutSig(),
- plug->GetDllName());
-
- post("Flags");
- if ( plug->HasEditor() ) post("Has editor");
- if ( plug->IsReplacing() ) post("Can do replacing");
- }
-
- if ( parameters ) {
- if ( specific == -1) {
- for (i = 0; i < plug->GetNumParams(); i++)
- display_parameter( i , params );
- }
- else
- display_parameter( specific , params);
- }
-
- if( programs ) {
- for( int j = 0; j < plug->GetNumCategories() ; j++ ) {
- for( i = 0 ; i < plug->GetNumParams() ; i++ ) {
- char buf[64];
- plug->GetProgramName( j , i , buf );
- post("Program %d: %s ", i , buf );
- }
- }
- }
-}
-
-
-void vst::display_parameter(int param,bool showparams)
-{
- int j = param;
- /* the Steinberg(tm) way... */
- char name[109];
- char display[164];
- float val;
-
-// if(j == 0) post ("Control input/output(s):");
-
- memset (name, 0, sizeof(name));
- memset( display, 0 ,sizeof(display));
- plug->GetParamName( j , name );
-
- if(*name) {
- if (showparams) {
-// plug->DescribeValue( j , display );
- plug->GetParamValue(j,display);
- val = plug->GetParamValue( j );
- post ("parameter[#%d], \"%s\" value=%f (%s) ", j, name, val,display);
- }
- else {
- val = plug->GetParamValue( j );
- post ("parameter[#%d], \"%s\" value=%f ", j, name, val);
- }
- }
-}
-
-void vst::m_pname(int pnum)
-{
- if(!plug || pnum < 0 || pnum >= plug->GetNumParams()) return;
-
- char name[256]; // how many chars needed?
- plug->GetParamName(pnum,name);
-
- t_atom at[2];
- SetInt(at[0],pnum);
- SetString(at[1],name);
- ToOutAnything(GetOutAttr(),sym_pname,2,at);
-}
-
-// set the value of a parameter
-void vst::ms_param(int pnum,float val)
-{
- if(!plug || pnum < 0 || pnum >= plug->GetNumParams()) return;
-
-// float xval = plug->GetParamValue( pnum );
-// if(xval <= 1.0f) // What's that????
- if(true)
- {
- plug->SetParamFloat( pnum, val );
-// if(echoparam) display_parameter(pnum , true );
- }
- else
- FLEXT_ASSERT(false);
-}
-
-void vst::ms_params(int argc,const t_atom *argv)
-{
- if(plug) {
- char str[255]; *str = 0;
- if(argc && CanbeFloat(argv[argc-1]))
- PrintList(argc-1,argv,str,sizeof str);
-
- if(*str) {
- int ix = plug->GetParamIx(str);
- if(ix >= 0)
- ms_param(ix,GetAFloat(argv[argc-1]));
- else
- post("%s %s - Parameter not found",thisName(),GetString(thisTag()),str);
- }
- else
- post("%s - Syntax: %s name value",thisName(),GetString(thisTag()));
- }
-}
-
-void vst::mg_param(int pnum)
-{
- if(!plug || pnum < 0 || pnum >= plug->GetNumParams()) return;
-
- t_atom at[2];
- SetInt(at[0],pnum);
- SetFloat(at[1],plug->GetParamValue(pnum));
- ToOutAnything(GetOutAttr(),sym_param,2,at);
-}
-
-void vst::mg_params(int argc,const t_atom *argv)
-{
- if(plug) {
- char str[255];
- PrintList(argc,argv,str,sizeof str);
-
- if(*str) {
- int ix = plug->GetParamIx(str);
- if(ix >= 0)
- mg_param(ix);
- else
- post("%s %s - Parameter not found",thisName(),GetString(thisTag()),str);
- }
- else
- post("%s - Syntax: %s name value",thisName(),GetString(thisTag()));
- }
-}
-
-void vst::m_ptext(int pnum)
-{
- if(!plug || pnum < 0 || pnum >= plug->GetNumParams()) return;
-
- char display[256]; // how many chars needed?
- memset(display,0,sizeof(display));
- plug->GetParamValue(pnum,display);
-
- t_atom at[2];
- SetInt(at[0],pnum);
- SetString(at[1],display);
- ToOutAnything(GetOutAttr(),sym_ptext,2,at);
-}
-
-void vst::m_ptexts(int argc,const t_atom *argv)
-{
- if(plug) {
- char str[255];
- PrintList(argc,argv,str,sizeof str);
-
- if(*str) {
- int ix = plug->GetParamIx(str);
- if(ix >= 0)
- m_ptext(ix);
- else
- post("%s %s - Parameter not found",thisName(),GetString(thisTag()),str);
- }
- else
- post("%s - Syntax: %s name value",thisName(),GetString(thisTag()));
- }
-}
-
-void vst::m_note(int note,int velocity)
-{
- if(!plug) return;
-
- if(velocity > 0)
- plug->AddNoteOn(note,velocity);
- else
- plug->AddNoteOff(note);
-}
-
-void vst::Respond(const t_symbol *sym,int argc,const t_atom *argv)
-{
- FLEXT_ASSERT(sym);
- ToOutAnything(GetOutAttr(),sym,argc,argv);
-}
diff --git a/externals/grill/vst/src/main.h b/externals/grill/vst/src/main.h
deleted file mode 100644
index c395b63b..00000000
--- a/externals/grill/vst/src/main.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
-vst~ - VST plugin object for PD
-based on the work of Jarno Seppänen and Mark Williamson
-
-Copyright (c)2003-2005 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-*/
-
-#ifndef __VST_H
-#define __VST_H
-
-#define FLEXT_ATTRIBUTES 1
-
-#include <flext.h>
-
-#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 500)
-#error You need at least flext version 0.5.0
-#endif
-
-#if FLEXT_OS == FLEXT_OS_WIN || FLEXT_OS == FLEXT_OS_MAC
-//
-#else
-#error Platform not supported!
-#endif
-
-#endif
-
diff --git a/externals/grill/vst/src/vst.rc b/externals/grill/vst/src/vst.rc
deleted file mode 100644
index 8f8e368b..00000000
--- a/externals/grill/vst/src/vst.rc
+++ /dev/null
@@ -1,135 +0,0 @@
-// Microsoft Visual C++ generated resource script.
-//
-#include "resource.h"
-
-#define APSTUDIO_READONLY_SYMBOLS
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 2 resource.
-//
-#include "afxres.h"
-
-/////////////////////////////////////////////////////////////////////////////
-#undef APSTUDIO_READONLY_SYMBOLS
-
-/////////////////////////////////////////////////////////////////////////////
-// Englisch (USA) resources
-
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
-#ifdef _WIN32
-LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
-#pragma code_page(1252)
-#endif //_WIN32
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Version
-//
-
-VS_VERSION_INFO VERSIONINFO
- FILEVERSION 1,0,0,1
- PRODUCTVERSION 1,0,0,1
- FILEFLAGSMASK 0x3fL
-#ifdef _DEBUG
- FILEFLAGS 0x1L
-#else
- FILEFLAGS 0x0L
-#endif
- FILEOS 0x4L
- FILETYPE 0x2L
- FILESUBTYPE 0x0L
-BEGIN
- BLOCK "StringFileInfo"
- BEGIN
- BLOCK "040904b0"
- BEGIN
- VALUE "FileDescription", "vst~ external"
- VALUE "FileVersion", "0,1, 0, 8"
- VALUE "InternalName", "vst~"
- VALUE "LegalCopyright", "Copyright (C) 2003-2005 Thomas Grill"
- VALUE "OriginalFilename", "vst~.DLL"
- VALUE "ProductName", "VST plugin object"
- VALUE "ProductVersion", "0, 1, 0, 8"
- END
- END
- BLOCK "VarFileInfo"
- BEGIN
- VALUE "Translation", 0x409, 1200
- END
-END
-
-#endif // Englisch (USA) resources
-/////////////////////////////////////////////////////////////////////////////
-
-
-/////////////////////////////////////////////////////////////////////////////
-// Deutsch (Österreich) resources
-
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_DEA)
-#ifdef _WIN32
-LANGUAGE LANG_GERMAN, SUBLANG_GERMAN_AUSTRIAN
-#pragma code_page(1252)
-#endif //_WIN32
-
-#ifdef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// TEXTINCLUDE
-//
-
-1 TEXTINCLUDE
-BEGIN
- "resource.h\0"
-END
-
-2 TEXTINCLUDE
-BEGIN
- "#include ""afxres.h""\r\n"
- "\0"
-END
-
-3 TEXTINCLUDE
-BEGIN
- "#define _AFX_NO_SPLITTER_RESOURCES\r\n"
- "#define _AFX_NO_OLE_RESOURCES\r\n"
- "#define _AFX_NO_TRACKER_RESOURCES\r\n"
- "#define _AFX_NO_PROPERTY_RESOURCES\r\n"
- "\r\n"
- "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n"
- "#ifdef _WIN32\r\n"
- "LANGUAGE 9, 1\r\n"
- "#pragma code_page(1252)\r\n"
- "#endif //_WIN32\r\n"
- "#include ""afxres.rc"" // Standard components\r\n"
- "#endif\r\n"
- "\0"
-END
-
-#endif // APSTUDIO_INVOKED
-
-#endif // Deutsch (Österreich) resources
-/////////////////////////////////////////////////////////////////////////////
-
-
-
-#ifndef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 3 resource.
-//
-#define _AFX_NO_SPLITTER_RESOURCES
-#define _AFX_NO_OLE_RESOURCES
-#define _AFX_NO_TRACKER_RESOURCES
-#define _AFX_NO_PROPERTY_RESOURCES
-
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
-#ifdef _WIN32
-LANGUAGE 9, 1
-#pragma code_page(1252)
-#endif //_WIN32
-#include "afxres.rc" // Standard components
-#endif
-
-/////////////////////////////////////////////////////////////////////////////
-#endif // not APSTUDIO_INVOKED
-
diff --git a/externals/grill/vst/src/vstedit.cpp b/externals/grill/vst/src/vstedit.cpp
deleted file mode 100644
index 1536b9d3..00000000
--- a/externals/grill/vst/src/vstedit.cpp
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
-vst~ - VST plugin object for PD
-based on the work of Jarno Seppänen and Mark Williamson
-
-Copyright (c)2003-2005 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-*/
-
-#include "vsthost.h"
-#include "editor.h"
-
-
-void VSTPlugin::Edit(bool open)
-{
- if(Is()) {
- if(open) {
- if(HasEditor() && !IsEdited())
- StartEditor(this);
- }
- else if(IsEdited())
- StopEditor(this);
- }
-}
-
-void VSTPlugin::StartEditing(WHandle h)
-{
- FLEXT_ASSERT(h != NULL);
- Dispatch(effEditOpen,0,0,hwnd = h);
-
- TitleEditor(this,title.c_str());
-}
-
-void VSTPlugin::StopEditing()
-{
- if(Is() && IsEdited())
- Dispatch(effEditClose);
-}
-
-void VSTPlugin::Visible(bool vis,bool upd)
-{
- visible = vis;
- if(upd && Is() && IsEdited()) ShowEditor(this,vis);
-}
-
-void VSTPlugin::SetPos(int x,int y,bool upd)
-{
- posx = x; posy = y;
- if(upd && Is() && IsEdited()) MoveEditor(this,posx,posy);
-}
-
-void VSTPlugin::SetSize(int x,int y,bool upd)
-{
- sizex = x; sizey = y;
- if(upd && Is() && IsEdited()) SizeEditor(this,sizex,sizey);
-}
-
-void VSTPlugin::SetCaption(bool c)
-{
- caption = c;
- if(Is() && IsEdited()) CaptionEditor(this,c);
-}
-
-void VSTPlugin::SetHandle(bool h)
-{
- handle = h;
- if(Is() && IsEdited()) HandleEditor(this,h);
-}
-
-void VSTPlugin::SetTitle(const char *t)
-{
- title = t;
- if(Is() && IsEdited()) TitleEditor(this,t);
-}
-
-void VSTPlugin::ToFront()
-{
- if(Is() && IsEdited()) {
- FrontEditor(this);
- Dispatch(effEditTop,0,0,vendorname);
- }
-}
diff --git a/externals/grill/vst/src/vsthost.cpp b/externals/grill/vst/src/vsthost.cpp
deleted file mode 100644
index 3fd1a935..00000000
--- a/externals/grill/vst/src/vsthost.cpp
+++ /dev/null
@@ -1,461 +0,0 @@
-/*
-vst~ - VST plugin object for PD
-based on the work of Jarno Seppänen and Mark Williamson
-
-Copyright (c)2003-2005 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-*/
-
-#include "vsthost.h"
-#include "editor.h"
-#include <exception>
-#include "flcontainers.h"
-
-const t_symbol
- *VSTPlugin::sym_param,
- *VSTPlugin::sym_event,
- *VSTPlugin::sym_evmidi,
- *VSTPlugin::sym_evaudio,
- *VSTPlugin::sym_evvideo,
- *VSTPlugin::sym_evparam,
- *VSTPlugin::sym_evtrigger,
- *VSTPlugin::sym_evsysex,
- *VSTPlugin::sym_ev_,
- *VSTPlugin::sym_midi[8];
-
-
-class DelPlugin
- : public Fifo::Cell
-{
-public:
- DelPlugin(VSTPlugin *p): plug(p) {}
- VSTPlugin *plug;
-};
-
-static TypedLifo<DelPlugin> todel;
-flext::ThrCond VSTPlugin::thrcond;
-
-void VSTPlugin::Setup()
-{
- LaunchThread(worker);
-
- sym_param = flext::MakeSymbol("param");
- sym_event = flext::MakeSymbol("event");
- sym_evmidi = flext::MakeSymbol("midi");
- sym_evaudio = flext::MakeSymbol("audio");
- sym_evvideo = flext::MakeSymbol("video");
- sym_evparam = flext::MakeSymbol("param");
- sym_evtrigger = flext::MakeSymbol("trigger");
- sym_evsysex = flext::MakeSymbol("sysex");
- sym_ev_ = flext::MakeSymbol("???");
-
- sym_midi[0] = flext::MakeSymbol("noteoff");
- sym_midi[1] = flext::MakeSymbol("note");
- sym_midi[2] = flext::MakeSymbol("atouch");
- sym_midi[3] = flext::MakeSymbol("ctlchg");
- sym_midi[4] = flext::MakeSymbol("progchg");
- sym_midi[5] = flext::MakeSymbol("atouch");
- sym_midi[6] = flext::MakeSymbol("pbend");
- sym_midi[7] = flext::MakeSymbol("sysex");
-}
-
-VSTPlugin::VSTPlugin(Responder *resp)
- : effect(NULL),pluginmain(NULL),audiomaster(NULL)
-#if FLEXT_OS == FLEXT_OS_WIN
- , hdll(NULL)
-#endif
- , hwnd(NULL)
- , responder(resp)
- , posx(0),posy(0),sizex(0),sizey(0)
- , visible(true),caption(true),handle(false)
- , midichannel(0),eventqusz(0),dumpevents(false)
- , paramnamecnt(0)
- , transchg(true)
- , playing(false),looping(false),feedback(false)
- , samplerate(0)
- , samplepos(0),ppqpos(0)
- , tempo(120)
- , timesignom(4),timesigden(4)
- , barstartpos(0)
- , cyclestartpos(0),cycleendpos(0)
- , smpteoffset(0),smpterate(0)
-{}
-
-VSTPlugin::~VSTPlugin()
-{
- Free();
-}
-
-VSTPlugin *VSTPlugin::New(Responder *resp)
-{
- FLEXT_ASSERT(resp);
- return new VSTPlugin(resp);
-}
-
-void VSTPlugin::Delete(VSTPlugin *p)
-{
- FLEXT_ASSERT(p);
-
- // tell plugin to close editor!
- StopEditor(p);
- // transfer to deletion thread
- todel.Push(new DelPlugin(p));
- thrcond.Signal();
-}
-
-void VSTPlugin::worker(thr_params *)
-{
- TypedLifo<DelPlugin> tmp;
- bool again = false;
- for(;;) {
- // wait for signal
- if(again) {
- thrcond.TimedWait(0.01);
- again = false;
- }
- else
- thrcond.Wait();
-
- DelPlugin *p;
- while((p = todel.Pop()) != NULL) {
- // see if editing has stopped
- if(p && p->plug->hwnd == NULL) {
- // yes, it is now safe to delete the plug
- post("DELETE %s",p->plug->dllname.c_str());
- delete p->plug;
- delete p;
- }
- else {
- tmp.Push(p);
- again = true;
- }
- }
-
- // put back remaining entries
- while((p = tmp.Pop()) != NULL) todel.Push(p);
- }
-}
-
-#if FLEXT_OS == FLEXT_OS_MAC
-OSStatus FSPathMakeFSSpec(const UInt8 *path,FSSpec *spec,Boolean *isDirectory) /* can be NULL */
-{
- OSStatus result;
- FSRef ref;
-
- /* check parameters */
- require_action(NULL != spec, BadParameter, result = paramErr);
-
- /* convert the POSIX path to an FSRef */
- result = FSPathMakeRef(path, &ref, isDirectory);
- require_noerr(result, FSPathMakeRef);
-
- /* and then convert the FSRef to an FSSpec */
- result = FSGetCatalogInfo(&ref, kFSCatInfoNone, NULL, NULL, spec, NULL);
- require_noerr(result, FSGetCatalogInfo);
-
-FSGetCatalogInfo:
-FSPathMakeRef:
-BadParameter:
- return result;
-}
-#endif
-
-// hdll, pluginmain and audiomaster are set here
-// must be NULL beforehand!
-bool VSTPlugin::NewPlugin(const char *plugname)
-{
- FLEXT_ASSERT(!pluginmain && !audiomaster);
-
- dllname = plugname;
-
-#if FLEXT_OS == FLEXT_OS_WIN
- hdll = LoadLibraryEx(dllname.c_str(),NULL,0 /*DONT_RESOLVE_DLL_REFERENCES*/);
-/*
- char buf[255],*c;
- strcpy(buf,dllname.c_str());
- for(c = buf; *c; ++c)
- if(*c == '/')
- *c = '\\';
- char *sl = strrchr(buf,'\\');
- if(sl) *sl = 0;
- SetCurrentDirectory(buf);
- hdll = LoadLibrary(dllname.c_str());
-*/
- if(hdll) pluginmain = (PVSTMAIN)GetProcAddress(hdll,"main");
- audiomaster = Master;
-
-#elif FLEXT_OS == FLEXT_OS_MAC
- short resFileID;
- FSSpec spec;
- OSErr err;
-
- err = FSPathMakeFSSpec(dllname.c_str(),&spec,NULL);
- resFileID = FSpOpenResFile(&spec, fsRdPerm);
- short cResCB = Count1Resources('aEff');
-
- for(int i = 0; i < cResCB; i++) {
- Handle codeH;
- CFragConnectionID connID;
- Ptr mainAddr;
- Str255 errName;
- Str255 fragName;
- char fragNameCStr[256];
- short resID;
- OSType resType;
-
- codeH = Get1IndResource('aEff', short(i+1));
- if(!codeH) continue;
-
- GetResInfo(codeH, &resID, &resType, fragName);
- DetachResource(codeH);
- HLock(codeH);
-
- err = GetMemFragment(*codeH,
- GetHandleSize(codeH),
- fragName,
- kPrivateCFragCopy,
- &connID, (Ptr *) & mainAddr, errName);
-
- if(!err) {
- #ifdef __CFM__
- pluginmain = (PVSTMAIN)NewMachOFromCFM(mainAddr);
- #else
- pluginmain = (PVSTMAIN)mainAddr;
- #endif
- }
- }
- CloseResFile(resFileID);
-
- audiomaster =
-#ifdef __CFM__
- NewCFMFromMachO(Master);
-#else
- Master;
-#endif
-
-#else
-#error Platform not supported
-#endif
-
- if(pluginmain && audiomaster)
- return true;
- else {
- FreePlugin();
- return false;
- }
-}
-
-void VSTPlugin::FreePlugin()
-{
-#if FLEXT_OS == FLEXT_OS_WIN
- if(hdll) { FreeLibrary(hdll); hdll = NULL; }
-#elif FLEXT_OS == FLEXT_OS_MAC
-
-#ifdef __MACOSX__
-#ifdef __CFM__
- if(audiomaster) DisposeCFMFromMachO(audiomaster);
- if(pluginmain) DisposeMachOFromCFM(pluginmain);
-#endif
-#endif
-
-#else
-#error Platform not supported
-#endif
-
- effect = NULL;
- audiomaster = NULL;
- pluginmain = NULL;
-}
-
-/*
-This is static to be able to communicate between the plugin methods
-and the static Audiomaster function
-the this (plugin->user) pointer has not been initialized at the point it is needed
-static should not be a problem, as we are single-threaded and it is immediately
-queried in a called function
-*/
-long VSTPlugin::uniqueid = 0;
-
-std::string VSTPlugin::dllloading;
-
-bool VSTPlugin::InstPlugin(long plugid)
-{
- uniqueid = plugid;
- dllloading = dllname;
-
- FLEXT_ASSERT(pluginmain && audiomaster);
-
- //This calls the "main" function and receives the pointer to the AEffect structure.
- try { effect = pluginmain(audiomaster); }
- catch(std::exception &e) {
- flext::post("vst~ - caught exception while instantiating plugin: %s",e.what());
- }
- catch(...) {
- flext::post("vst~ - caught exception while instantiating plugin");
- }
-
- if(!effect)
- return false;
- else if(effect->magic != kEffectMagic) {
- effect = NULL;
- return false;
- }
- return true;
-}
-
-bool VSTPlugin::Instance(const char *name,const char *subname)
-{
- bool ok = false;
- FLEXT_ASSERT(effect == NULL);
-
- try {
-
-/*
- if(!ok && dllname != name) {
- FreePlugin();
- // freshly load plugin
- ok = NewPlugin(name) && InstPlugin();
- }
-*/
- ok = NewPlugin(name) && InstPlugin();
-
- if(ok && subname && *subname && Dispatch(effGetPlugCategory) == kPlugCategShell) {
- // sub plugin-name given -> scan plugs
-
- long plugid;
- char tmp[64];
-
- // Waves5 continues with the next plug after the last loaded
- // that's not what we want - workaround: swallow all remaining
- while((plugid = Dispatch(effShellGetNextPlugin,0,0,tmp))) {}
-
- // restart from the beginning
- while((plugid = Dispatch(effShellGetNextPlugin,0,0,tmp))) {
- // subplug needs a name
- FLEXT_LOG1("subplug %s",tmp);
- if(!strcmp(subname,tmp))
- // found
- break;
- }
-
- // re-init with plugid set
- if(plugid) ok = InstPlugin(plugid);
- }
-
- if(ok) {
- //init plugin
- effect->user = this;
- ok = Dispatch(effOpen) == 0;
- }
-
- if(ok) {
- ok = Dispatch(effIdentify) == 'NvEf';
- }
-
- if(ok) {
- *productname = 0;
- long ret = Dispatch(effGetProductString,0,0,productname);
-
- if(!*productname) {
- // no product name given by plugin -> extract it from the filename
-
- std::string str1(dllname);
- std::string::size_type slpos = str1.rfind('\\');
- if(slpos == std::string::npos) {
- slpos = str1.rfind('/');
- if(slpos == std::string::npos)
- slpos = 0;
- else
- ++slpos;
- }
- else
- ++slpos;
- std::string str2 = str1.substr(slpos);
- int snip = str2.find('.');
- if( snip != std::string::npos )
- str1 = str2.substr(0,snip);
- else
- str1 = str2;
- strcpy(productname,str1.c_str());
- }
-
- if(*productname) {
- char tmp[512];
- sprintf(tmp,"vst~ - %s",productname);
- title = tmp;
- }
- else
- title = "vst~";
-
- *vendorname = 0;
- Dispatch(effGetVendorString,0,0,vendorname);
- }
-
- }
- catch(std::exception &e) {
- flext::post("vst~ - caught exception while loading plugin: %s",e.what());
- ok = false;
- }
- catch(...) {
- flext::post("vst~ - Caught exception while loading plugin");
- ok = false;
- }
-
- if(!ok) Free();
- return ok;
-}
-
-void VSTPlugin::Free()
-{
- // This should only also in destruction
-
- try {
- if(effect) {
- FLEXT_ASSERT(!IsEdited());
-
- // shut down plugin
- Dispatch(effMainsChanged, 0, 0);
- Dispatch(effClose);
- }
- }
- catch(...) {}
-
- FreePlugin();
-}
-
-void VSTPlugin::DspInit(float sr,int blsz)
-{
- try {
- // sample rate and block size must _first_ be set
- Dispatch(effSetSampleRate,0,0,NULL,samplerate = sr);
- Dispatch(effSetBlockSize, 0,blsz);
- // then signal that mains have changed!
- Dispatch(effMainsChanged,0,1);
- }
- catch(std::exception &e) {
- flext::post("vst~ - caught exception while initializing dsp: %s",e.what());
- }
- catch(...) {
- flext::post("vst~ - caught exception while initializing dsp");
- }
-}
-
-void VSTPlugin::ListPlugs(const t_symbol *sym) const
-{
- if(responder) {
- if(Is() && Dispatch(effGetPlugCategory) == kPlugCategShell) {
- t_atom at;
- // sub plugin-name given -> scan plugs
- char tmp[64];
- // scan shell for subplugins
- while(Dispatch(effShellGetNextPlugin,0,0,tmp)) {
- SetString(at,tmp);
- responder->Respond(sym,1,&at);
- }
- }
-
- // bang
- responder->Respond(sym);
- }
-}
diff --git a/externals/grill/vst/src/vsthost.h b/externals/grill/vst/src/vsthost.h
deleted file mode 100644
index 00225b62..00000000
--- a/externals/grill/vst/src/vsthost.h
+++ /dev/null
@@ -1,357 +0,0 @@
-/*
-vst~ - VST plugin object for PD
-based on the work of Jarno Seppänen and Mark Williamson
-
-Copyright (c)2003-2005 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-*/
-
-#ifndef __VSTHOST_H
-#define __VSTHOST_H
-
-#include <flext.h>
-#include <string>
-#include <map>
-#include <math.h>
-
-#include "AEffectx.h"
-#include "AEffEditor.hpp"
-
-
-#if FLEXT_OS == FLEXT_OS_WIN
-#include <windows.h>
-typedef HWND WHandle;
-typedef HMODULE MHandle;
-#elif FLEXT_OS == FLEXT_OS_MAC
-#include <CoreServices/CoreServices.h>
-typedef Handle WHandle;
-typedef void *MHandle;
-#else
-#error Platform not supported!
-#endif
-
-
-#define MIDI_MAX_EVENTS 64
-
-class Responder
-{
-public:
- virtual void Respond(const t_symbol *sym,int argc = 0,const t_atom *argv = NULL) = 0;
-};
-
-
-class VSTPlugin:
- public flext
-{
-public:
- static VSTPlugin *New(Responder *resp);
- static void Delete(VSTPlugin *p);
-
- static void Setup();
-
- bool Instance(const char *plug,const char *subplug = NULL);
- void DspInit(float samplerate,int blocksize);
-
-private:
- VSTPlugin(Responder *resp);
- ~VSTPlugin();
-
- static ThrCond thrcond;
- static void worker(thr_params *p);
-
- void Free();
-
- //////////////////////////////////////////////////////////////////////////////
-
-public:
- bool Is() const { return effect != NULL; }
-
- long GetVersion() const { return effect->version; }
-
- bool IsSynth() const { return HasFlags(effFlagsIsSynth); }
- bool IsReplacing() const { return HasFlags(effFlagsCanReplacing); }
- bool HasEditor() const { return HasFlags(effFlagsHasEditor); }
-
- const char *GetName() const { return productname; }
- const char *GetVendorName() const { return vendorname; }
- const char *GetDllName() const { return dllname.c_str(); }
-
- long UniqueID() const { return effect->uniqueID; }
-
- int GetNumInputs() const { return effect->numInputs; }
- int GetNumOutputs() const { return effect->numOutputs; }
-
- void ListPlugs(const t_symbol *sym) const;
-
-private:
- char productname[300];
- char vendorname[300];
- std::string dllname; // Contains dll name
-
- //////////////////////////////////////////////////////////////////////////////
-
-public:
- int GetNumParams() const { return effect?effect->numParams:0; }
- void GetParamName(int numparam,char *name) const;
- void GetParamValue(int numparam,char *parval) const;
- float GetParamValue(int numparam) const;
-
- // scan plugin names (can take a _long_ time!!)
- void ScanParams(int i = -1);
- // get number of scanned parameters
- int ScannedParams() const { return paramnamecnt; }
- // get index of named (scanned) parameter... -1 if not found
- int GetParamIx(const char *p) const;
-
- bool SetParamFloat(int parameter, float value);
- bool SetParamInt(int parameter, int value) { return SetParamFloat(parameter,value/65535.0f); }
-
- void SetCurrentProgram(int prg) { Dispatch(effSetProgram,0,prg); }
- int GetCurrentProgram() const { return Dispatch(effGetProgram); }
- int GetNumPrograms() const { return effect->numPrograms; }
-
- int GetNumCategories() const { return Dispatch(effGetNumProgramCategories); }
- bool GetProgramName(int cat,int p,char* buf) const;
-
-private:
- struct NameCmp:
- std::less<std::string>
- {
- bool operator()(const std::string &a,const std::string &b) const { return a.compare(b) < 0; }
- };
-
- typedef std::map<std::string,int,NameCmp> NameMap;
- int paramnamecnt;
- NameMap paramnames;
-
- //////////////////////////////////////////////////////////////////////////////
-
-public:
- void SetPos(int x,int y,bool upd = true);
- void SetSize(int x,int y,bool upd = true);
- void SetX(int x,bool upd = true) { SetPos(x,posy,upd); }
- void SetY(int y,bool upd = true) { SetPos(posx,y,upd); }
- void SetW(int x,bool upd = true) { SetSize(x,sizey,upd); }
- void SetH(int y,bool upd = true) { SetSize(sizex,y,upd); }
- int GetX() const { return posx; }
- int GetY() const { return posy; }
- int GetW() const { return sizex; }
- int GetH() const { return sizey; }
- void SetCaption(bool b);
- bool GetCaption() const { return caption; }
- void SetHandle(bool h);
- bool GetHandle() const { return handle; }
- void SetTitle(const char *t);
- const char *GetTitle() const { return title.c_str(); }
-
- void ToFront();
-
- void Edit(bool open);
-
- void StartEditing(WHandle h);
- void StopEditing();
- bool IsEdited() const { return hwnd != NULL; }
- WHandle EditorHandle() const { return hwnd; }
- void EditingEnded() { hwnd = NULL; thrcond.Signal(); }
-
- void GetEditorRect(ERect &er) const { ERect *r; Dispatch(effEditGetRect,0,0,&r); er = *r; }
- void EditorIdle() { Dispatch(effEditIdle); }
-
- void Visible(bool vis,bool upd = true);
- bool IsVisible() const { return visible; }
-
- void Paint(ERect &r) const { Dispatch(effEditDraw,0,0,&r); }
-
-private:
- bool visible;
- int posx,posy,sizex,sizey; // Window position
- bool caption; // Window border
- bool handle; // Window handle (like taskbar button)
- std::string title; // Window title
-
- //////////////////////////////////////////////////////////////////////////////
-
-public:
- enum {
- MIDI_NOTEOFF = 0x80,
- MIDI_NOTEON = 0x90,
- MIDI_POLYAFTERTOUCH = 0xa0,
- MIDI_CONTROLCHANGE = 0xb0,
- MIDI_PROGRAMCHANGE = 0xc0,
- MIDI_AFTERTOUCH = 0xd0,
- MIDI_PITCHBEND = 0xe0,
- MIDI_SYSEX = 0xf0,
- };
-
- void SetEvents(bool ev) { dumpevents = ev; }
- bool GetEvents() const { return dumpevents; }
-
- bool AddMIDI(unsigned char data0,unsigned char data1 = 0,unsigned char data2 = 0);
-
- static int range(int value,int mn = 0,int mx = 127) { return value < mn?mn:(value > mx?mx:value); }
-
- void SetChannel(int channel) { midichannel = range(channel,0,0xf); }
- int GetChannel() const { return midichannel; }
-
- bool AddNoteOn(unsigned char note,unsigned char speed /*,unsigned char midichannel = 0*/)
- {
- return AddMIDI(MIDI_NOTEON+midichannel,note,speed);
- }
-
- bool AddNoteOff(unsigned char note /*,unsigned char midichannel = 0*/)
- {
- return AddMIDI(MIDI_NOTEOFF+midichannel,note,0);
- }
-
- void AddControlChange(int control,int value)
- {
- AddMIDI(MIDI_CONTROLCHANGE+midichannel,range(control),range(value));
- }
-
- void AddProgramChange(int value)
- {
- AddMIDI(MIDI_PROGRAMCHANGE+midichannel,range(value),0);
- }
-
- void AddPitchBend(int value)
- {
- AddMIDI(MIDI_PITCHBEND+midichannel,(value&127),((value>>7)&127));
- }
-
- void AddAftertouch(int value)
- {
- AddMIDI(MIDI_AFTERTOUCH+midichannel,range(value));
- }
-
- void AddPolyAftertouch(unsigned char note,int value)
- {
- AddMIDI(MIDI_POLYAFTERTOUCH+midichannel,note,range(value));
- }
-
-private:
- void SendMidi();
-
- // static VstTimeInfo _timeInfo;
- VstMidiEvent midievent[MIDI_MAX_EVENTS];
- VstEvents events;
- int eventqusz;
-
- char midichannel;
- bool dumpevents;
-
- //////////////////////////////////////////////////////////////////////////////
-
-public:
-
- void SetPlaying(bool p) { if(playing != p) transchg = true,playing = p; }
- bool GetPlaying() const { return playing; }
- void SetLooping(bool p) { if(looping != p) transchg = true,looping = p; }
- bool GetLooping() const { return looping; }
- void SetFeedback(bool p) { feedback = p; }
- bool GetFeedback() const { return feedback; }
-
- void SetSamplePos(double p) { if(samplepos != p) transchg = true,samplepos = p; }
- double GetSamplePos() const { return samplepos; }
- void SetTempo(double p) { if(tempo != p) transchg = true,tempo = p; }
- double GetTempo() const { return tempo; }
- void SetPPQPos(double p) { if(ppqpos != p) transchg = true,ppqpos = p; }
- double GetPPQPos() const { return ppqpos; }
-
- void SetTimesigNom(int p) { if(timesignom != p) transchg = true,timesignom = p; }
- int GetTimesigNom() const { return timesignom; }
- void SetTimesigDen(int p) { if(timesigden != p) transchg = true,timesigden = p; }
- int GetTimesigDen() const { return timesigden; }
- void SetBarStart(double p) { if(barstartpos != p) transchg = true,barstartpos = p; }
- double GetBarStart() const { return barstartpos; }
- void SetCycleStart(double p) { if(cyclestartpos != p) transchg = true,cyclestartpos = p; }
- double GetCycleStart() const { return cyclestartpos; }
- void SetCycleEnd(double p) { if(cycleendpos != p) transchg = true,cycleendpos = p; }
- double GetCycleEnd() const { return cycleendpos; }
-
- void SetSmpteOffset(int p) { if(smpteoffset != p) transchg = true,smpteoffset = p; }
- int GetSmpteOffset() const { return smpteoffset; }
- void SetSmpteRate(int p) { if(smpterate != p) transchg = true,smpterate = p; }
- int GetSmpteRate() const { return smpterate; }
-
-private:
-
- bool playing,looping,feedback;
- float samplerate;
- bool transchg;
-
- double samplepos,tempo;
- double ppqpos;
-
- int timesignom,timesigden;
- double barstartpos;
- double cyclestartpos,cycleendpos;
- int smpteoffset,smpterate;
-
- //////////////////////////////////////////////////////////////////////////////
-
-public:
- bool processReplacing(float **inputs,float **outputs,long sampleframes )
- {
- FLEXT_ASSERT(effect);
- effect->processReplacing(effect,inputs,outputs,sampleframes);
- if(playing) updatepos(sampleframes);
- return true;
- }
-
- bool process(float **inputs,float **outputs,long sampleframes )
- {
- FLEXT_ASSERT(effect);
- effect->process(effect,inputs,outputs,sampleframes);
- return true;
- }
-
-private:
-
- void updatepos(long frames);
-
- //////////////////////////////////////////////////////////////////////////////
-
-private:
- Responder *responder;
-
- bool NewPlugin(const char *plugname);
- void FreePlugin();
- bool InstPlugin(long plugid = 0);
-
- static long uniqueid;
- static std::string dllloading;
-
- inline long GetFlags() const { return effect?effect->flags:0; }
- inline bool HasFlags(long msk) const { return effect && (effect->flags&msk); }
-
-
-#if FLEXT_OS == FLEXT_OS_WIN
- // the handle to the shared library
- MHandle hdll;
-#endif
- // the handle to the plugin editor window
- WHandle hwnd;
- // the VST plugin instance
- AEffect *effect;
-
- typedef AEffect *(VSTCALLBACK *PVSTMAIN)(audioMasterCallback audioMaster);
- PVSTMAIN pluginmain;
- audioMasterCallback audiomaster;
-
- long Dispatch(long opCode,long index = 0,long value = 0,void *ptr = NULL,float opt = 0) const
- {
- FLEXT_ASSERT(effect);
- return effect->dispatcher(effect,opCode,index,value,ptr,opt);
- }
-
- static long VSTCALLBACK Master(AEffect *effect, long opcode, long index, long value, void *ptr, float opt);
-
- static const t_symbol *sym_param;
- static const t_symbol *sym_event,*sym_evmidi,*sym_evaudio,*sym_evvideo,*sym_evparam,*sym_evtrigger,*sym_evsysex,*sym_ev_;
- static const t_symbol *sym_midi[8];
-
- void ProcessEvent(const VstEvent &ev);
-};
-
-#endif
diff --git a/externals/grill/vst/src/vstmaster.cpp b/externals/grill/vst/src/vstmaster.cpp
deleted file mode 100644
index 6730a647..00000000
--- a/externals/grill/vst/src/vstmaster.cpp
+++ /dev/null
@@ -1,282 +0,0 @@
-/*
-vst~ - VST plugin object for PD
-based on the work of Jarno Seppänen and Mark Williamson
-
-Copyright (c)2003-2005 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-*/
-
-#include "vsthost.h"
-
-static const int VST_VERSION = 100;
-static const char *vendor = "grrrr.org";
-static const char *product = "vst~";
-
-
-void VSTPlugin::ProcessEvent(const VstEvent &ev)
-{
- if(!responder && dumpevents) return;
-
- if(ev.type == kVstMidiType) {
- const VstMidiEvent &mev = (const VstMidiEvent &)ev;
- t_atom lst[10];
- SetSymbol(lst[0],sym_evmidi);
- int midi = ((unsigned char)mev.midiData[0]>>4)-8;
- FLEXT_ASSERT(midi >= 0 && midi < 8);
- SetSymbol(lst[1],sym_midi[midi]);
- SetInt(lst[2],(unsigned char)mev.midiData[0]&0x0f);
- SetInt(lst[3],(unsigned char)mev.midiData[1]);
- SetInt(lst[4],(unsigned char)mev.midiData[2]);
- // what about running status? (obviously not possible)
- SetInt(lst[5],mev.deltaFrames);
- SetInt(lst[6],mev.noteLength);
- SetInt(lst[7],mev.noteOffset);
- SetInt(lst[8],(int)mev.detune);
- SetInt(lst[9],(int)mev.noteOffVelocity);
- responder->Respond(sym_event,9,lst);
- }
- else {
- const t_symbol *sym;
- if(ev.type == kVstAudioType)
- sym = sym_evaudio;
- else if(ev.type == kVstVideoType)
- sym = sym_evvideo;
- else if(ev.type == kVstParameterType)
- sym = sym_evparam;
- else if(ev.type == kVstTriggerType)
- sym = sym_evtrigger;
- else if(ev.type == kVstSysExType)
- sym = sym_evsysex;
- else
- sym = sym_ev_;
-
- int data = ev.byteSize-sizeof(ev.deltaFrames)-sizeof(ev.flags);
- const int stsize = 16;
- t_atom stlst[stsize];
- t_atom *lst = data+3 > stsize?new t_atom[data+3]:stlst;
-
- SetSymbol(lst[0],sym);
- SetInt(lst[1],ev.deltaFrames);
- SetInt(lst[2],ev.flags);
- for(int i = 0; i < data; ++i) SetInt(lst[3],(unsigned char)ev.data[i]);
-
- responder->Respond(sym_event,data+3,lst);
-
- if(lst != stlst) delete[] lst;
- }
-}
-
-// Host callback dispatcher
-long VSTPlugin::Master(AEffect *effect, long opcode, long index, long value, void *ptr, float opt)
-{
- if(opcode != audioMasterGetTime)
- FLEXT_LOG6("VST -> host: Eff = 0x%.8X, Opcode = %d, Index = %d, Value = %d, PTR = %.8X, OPT = %.3f\n",(int)effect, opcode,index,value,(int)ptr,opt);
-
- VSTPlugin *th = effect?(VSTPlugin *)effect->user:NULL;
-
- switch (opcode) {
- case audioMasterAutomate: // 0
- if(th && th->feedback && th->responder) {
- t_atom lst[2];
- SetInt(lst[0],index);
- SetFloat(lst[1],opt);
- th->responder->Respond(sym_param,2,lst);
- }
- return 0;
-
- case audioMasterVersion: // 1
- // support VST 2.3
- return 2300;
-
- case audioMasterCurrentId: // 2
- // set to subplugin id (default 0)
- return uniqueid;
-
- case audioMasterIdle: // 3
- effect->dispatcher(effect, effEditIdle, 0, 0, NULL, 0.0f);
- return 0;
-
- case audioMasterPinConnected: // 4
- //! \todo set connection state correctly (if possible..)
- // index=pin, value=0..input, else..output
- FLEXT_LOG2("Pin connected pin=%li conn=%li",index,value);
- return 0; // 0 means connected
-
- case audioMasterWantMidi: // 6
- FLEXT_LOG1("Want MIDI = %li",value);
- return 0; // VST header says: "currently ignored"
-
- case audioMasterGetTime: { // 7
- if(!th) return 0;
-
- static VstTimeInfo time;
- memset(&time,0,sizeof(time));
-
- // flags
- time.flags = kVstTempoValid|kVstBarsValid|kVstCyclePosValid|kVstPpqPosValid|kVstSmpteValid|kVstTimeSigValid;
-
- if(th->transchg) { time.flags |= kVstTransportChanged; th->transchg = false; }
- if(th->playing) time.flags |= kVstTransportPlaying;
- if(th->looping) time.flags |= kVstTransportCycleActive;
-// if(th->feedback) time.flags |= kVstAutomationWriting;
-
- time.sampleRate = th->samplerate;
- time.samplePos = th->samplepos;
- time.ppqPos = th->ppqpos;
-
- time.tempo = th->tempo;
- time.barStartPos = th->barstartpos;
- time.cycleStartPos = th->cyclestartpos;
- time.cycleEndPos = th->cycleendpos;
-
- time.timeSigNumerator = th->timesignom;
- time.timeSigDenominator = th->timesigden;
-
- // SMPTE data
- time.smpteOffset = th->smpteoffset;
- time.smpteFrameRate = th->smpterate;
-
-// time.samplesToNextClock = 0;
-
- if(value&kVstNanosValid) {
- time.nanoSeconds = flext::GetOSTime()*1.e9;
- time.flags |= kVstNanosValid;
- }
-
- return (long)&time;
- }
-
- case audioMasterProcessEvents: { // 8
- // VST event data from plugin
- VstEvents *evs = static_cast<VstEvents *>(ptr);
- if(th) {
- for(int i = 0; i < evs->numEvents; ++i)
- th->ProcessEvent(*evs->events[i]);
- return 1;
- }
- else
- return 0;
- }
-
- case audioMasterSetTime: { // 9
- VstTimeInfo *tminfo = static_cast<VstTimeInfo *>(ptr);
- FLEXT_LOG3("TimeInfo pos=%lf rate=%lf filter=%li",tminfo->samplePos,tminfo->sampleRate,value);
- return 0; // not supported
- }
-
- case audioMasterTempoAt: // 10
- return 0; // not supported
-
- case audioMasterGetNumAutomatableParameters: // 11
- return 0; // not supported
-
- case audioMasterSizeWindow: // 15
- return 0;
-
- case audioMasterGetSampleRate: // 16
- return 0; // not supported
- case audioMasterGetBlockSize: // 17
- return 0; // not supported
-
- case audioMasterGetCurrentProcessLevel: // 23
- // return thread state
- return flext::IsSystemThread()?2:1;
-
- case audioMasterGetAutomationState: // 24
-// return th?(th->feedback?2:1):0;
- return 0;
-
- case audioMasterGetVendorString: // 32
- strcpy((char*)ptr,vendor);
- return 0;
-
- case audioMasterGetProductString: // 33
- strcpy((char *)ptr,product);
- return 0;
-
- case audioMasterGetVendorVersion: // 34
- return VST_VERSION;
-
- case audioMasterCanDo: // 37
- FLEXT_LOG1("\taudioMasterCanDo PTR = %s",ptr);
- if(!strcmp((char *)ptr,"sendVstEvents"))
- return 1;
- else if(!strcmp((char *)ptr,"sendVstMidiEvent"))
- return 1;
- else if(!strcmp((char *)ptr,"sendVstTimeInfo"))
- return 1; // NOT YET
- else if(!strcmp((char *)ptr,"receiveVstEvents"))
- return 1;
- else if(!strcmp((char *)ptr,"receiveVstMidiEvent"))
- return 1;
- else if(!strcmp((char *)ptr,"receiveVstTimeInfo"))
- return 1; // NOT YET
- else if(!strcmp((char *)ptr,"reportConnectionChanges"))
- return 0; // \TODO PD has hard times supporting that...
- else if(!strcmp((char *)ptr,"acceptIOChanges"))
- return 0; // \TODO what does this means exactly?
- else if(!strcmp((char *)ptr,"supplyIdle"))
- return 1;
- else if(!strcmp((char *)ptr,"sizeWindow"))
- return 1;
- else if(!strcmp((char *)ptr,"supportShell"))
- return 0; // deprecated - new one is shellCategory
- else if(!strcmp((char *)ptr,"offline"))
- return 0; // not supported
- else if(!strcmp((char *)ptr,"asyncProcessing"))
- return 0; // not supported
- else if(!strcmp((char *)ptr,"shellCategory"))
- return 1; // supported!
- else if(!strcmp((char *)ptr,"editFile"))
- return 0; // not supported
- else if(!strcmp((char *)ptr,"openFileSelector"))
- return 0; // not supported
- else if(!strcmp((char *)ptr,"closeFileSelector"))
- return 0; // not supported
- else if(!strcmp((char *)ptr,"startStopProcess"))
- return 0; // not supported
-#ifdef FLEXT_DEBUG
- else
- post("Unknown audioMasterCanDo PTR = %s",ptr);
-#endif
-
- return 0; // not supported
-
- case audioMasterGetLanguage: // 38
- return kVstLangEnglish;
-
- case audioMasterGetDirectory: // 41
- return (long)(th?th->dllname.c_str():dllloading.c_str());
-
- case audioMasterUpdateDisplay: // 42
- FLEXT_LOG("UPDATE DISPLAY");
- return 0;
-
- default:
- FLEXT_LOG1("Unknown opcode %li",opcode);
- return 0;
- }
-}
-
-void VSTPlugin::updatepos(long frames)
-{
- bool inloop = ppqpos < cycleendpos;
-
- // \todo should the sample position also jump back when cycling?
- // and if, how?
- samplepos += frames;
-
- // \todo this factor should be cached
- ppqpos += frames*tempo/(samplerate*60);
-
- if(looping) {
- double cyclelen = cycleendpos-cyclestartpos;
- if(cyclelen > 0) {
- if(inloop && ppqpos >= cycleendpos)
- ppqpos = cyclestartpos+fmod(ppqpos-cyclestartpos,cyclelen);
- }
- else
- ppqpos = cyclestartpos;
- }
-}
diff --git a/externals/grill/vst/src/vstmidi.cpp b/externals/grill/vst/src/vstmidi.cpp
deleted file mode 100644
index 8bddba98..00000000
--- a/externals/grill/vst/src/vstmidi.cpp
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
-vst~ - VST plugin object for PD
-based on the work of Jarno Seppänen and Mark Williamson
-
-Copyright (c)2003-2005 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-*/
-
-#include "vsthost.h"
-
-bool VSTPlugin::AddMIDI(unsigned char data0,unsigned char data1,unsigned char data2)
-{
- if(Is()) {
- VstMidiEvent *pevent = &midievent[eventqusz];
-
- pevent->type = kVstMidiType;
- pevent->byteSize = 24;
- pevent->deltaFrames = 0;
- pevent->flags = 0;
- pevent->detune = 0;
- pevent->noteLength = 0;
- pevent->noteOffset = 0;
- pevent->reserved1 = 0;
- pevent->reserved2 = 0;
- pevent->noteOffVelocity = 0;
- pevent->midiData[0] = data0;
- pevent->midiData[1] = data1;
- pevent->midiData[2] = data2;
- pevent->midiData[3] = 0;
-
- if(eventqusz < MIDI_MAX_EVENTS) ++eventqusz;
- SendMidi();
- return true;
- }
- else return false;
-}
-
-
-void VSTPlugin::SendMidi()
-{
- if(Is() && eventqusz > 0) {
- // Prepare MIDI events and free queue dispatching all events
- events.numEvents = eventqusz;
- events.reserved = 0;
- for(int q = 0; q < eventqusz; q++)
- events.events[q] = (VstEvent*)&midievent[q];
-
- Dispatch(effProcessEvents, 0, 0, &events, 0.0f);
- eventqusz = 0;
- }
-}
diff --git a/externals/grill/vst/src/vstparam.cpp b/externals/grill/vst/src/vstparam.cpp
deleted file mode 100644
index bb80263e..00000000
--- a/externals/grill/vst/src/vstparam.cpp
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
-vst~ - VST plugin object for PD
-based on the work of Jarno Seppänen and Mark Williamson
-
-Copyright (c)2003-2005 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-*/
-
-#include "vsthost.h"
-#include <ctype.h>
-
-static void striptrail(char *txt)
-{
- // strip trailing whitespace
- for(int i = strlen(txt)-1; i >= 0; --i)
- // cast to unsigned char since isspace functions don't want characters like 0x80 = -128
- if(isspace(((unsigned char *)txt)[i])) txt[i] = 0;
- else break;
-}
-
-void VSTPlugin::GetParamName(int numparam,char *name) const
-{
- if(numparam < GetNumParams()) {
- name[0] = 0;
- Dispatch(effGetParamName,numparam,0,name);
- striptrail(name);
- }
- else
- name[0] = 0;
-}
-
-bool VSTPlugin::SetParamFloat(int parameter,float value)
-{
- if(Is() && parameter >= 0 && parameter < GetNumParams()) {
- effect->setParameter(effect,parameter,value);
- return true;
- }
- else
- return false;
-}
-
-void VSTPlugin::GetParamValue(int numparam,char *parval) const
-{
- if(Is()) {
- if(numparam < GetNumParams()) {
- // how many chars needed?
- char par_display[64]; par_display[0] = 0;
- Dispatch(effGetParamDisplay,numparam,0,par_display);
-// if(par_display[7]) par_display[8] = 0; // set trailing zero
-
- // how many chars needed?
- char par_label[64]; par_label[0] = 0;
- Dispatch(effGetParamLabel,numparam,0,par_label);
- striptrail(par_label);
-// if(par_label[7]) par_label[8] = 0; // set trailing zero
-
- sprintf(parval,"%s%s",par_display,par_label);
- }
- else
- strcpy(parval,"Index out of range");
- }
- else
- strcpy(parval,"Plugin not loaded");
-}
-
-float VSTPlugin::GetParamValue(int numparam) const
-{
- if(Is() && numparam < GetNumParams())
- return effect->getParameter(effect,numparam);
- else
- return -1.0;
-}
-
-void VSTPlugin::ScanParams(int cnt)
-{
- if(cnt < 0) cnt = GetNumParams();
- if(paramnamecnt >= cnt) return;
- if(cnt >= GetNumParams()) cnt = GetNumParams();
-
- char name[64];
- for(int i = paramnamecnt; i < cnt; ++i) {
- GetParamName(i,name);
- if(*name) paramnames[std::string(name)] = i;
- }
- paramnamecnt = cnt;
-}
-
-int VSTPlugin::GetParamIx(const char *p) const
-{
- NameMap::const_iterator it = paramnames.find(std::string(p));
- return it == paramnames.end()?-1:it->second;
-}
-
-bool VSTPlugin::GetProgramName(int cat,int p,char *buf) const
-{
- buf[0] = 0;
- int parameter = p;
- if(parameter < GetNumPrograms() && cat < GetNumCategories()) {
- Dispatch(effGetProgramNameIndexed,parameter,cat,buf);
- striptrail(buf);
- return true;
- }
- else
- return false;
-}
diff --git a/externals/grill/vst/vst.vcproj b/externals/grill/vst/vst.vcproj
deleted file mode 100644
index 17426f48..00000000
--- a/externals/grill/vst/vst.vcproj
+++ /dev/null
@@ -1,348 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="vst"
- Keyword="Win32Proj">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="PD Release|Win32"
- OutputDirectory=".\pd-msvc/r"
- IntermediateDirectory=".\pd-msvc/r"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- GlobalOptimizations="TRUE"
- InlineFunctionExpansion="2"
- FavorSizeOrSpeed="1"
- OmitFramePointers="TRUE"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src;..\flext\source;c:\data\prog\audio\vstsdk2.3\source\common"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;WINVER=0x0501;_USRDLL;FLEXT_SYS=2;FLEXT_THREADS"
- StringPooling="TRUE"
- RuntimeLibrary="0"
- EnableFunctionLevelLinking="TRUE"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib pthreadVC.lib"
- OutputFile="./pd-msvc/vst~.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="c:\programme\audio\pd\bin"
- ProgramDatabaseFile=".\pd-msvc/r/vst~.pdb"
- OptimizeReferences="2"
- ImportLibrary=".\pd-msvc/r/vst~.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\pd-msvc/r/vst.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="PD Debug|Win32"
- OutputDirectory=".\pd-msvc/d"
- IntermediateDirectory=".\pd-msvc/d"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="c:\data\prog\packs\pthreads\include;&quot;c:\data\pd\pd-cvs\src&quot;;..\flext\source;c:\data\prog\audio\vstsdk2.3\source\common"
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_WIN32_WINNT=0x0501;WINVER=0x0501;_USRDLL;FLEXT_SYS=2;FLEXT_THREADS;FLEXT_LOGGING"
- BasicRuntimeChecks="3"
- RuntimeLibrary="1"
- RuntimeTypeInfo="TRUE"
- UsePrecompiledHeader="2"
- BrowseInformation="1"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="4"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib pthreadVC2.lib"
- OutputFile="$(outdir)/vst~.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="c:\data\prog\packs\pthreads\lib;&quot;c:\data\pd\pd-cvs\bin&quot;"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile=".\pd-msvc/d/vst~.pdb"
- OptimizeReferences="2"
- ImportLibrary=".\pd-msvc/d/vst~.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="_DEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\pd-msvc/d/vst.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="PD Shared Release|Win32"
- OutputDirectory=".\pd-msvc/sr"
- IntermediateDirectory=".\pd-msvc/sr"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- GlobalOptimizations="TRUE"
- InlineFunctionExpansion="2"
- FavorSizeOrSpeed="1"
- OmitFramePointers="TRUE"
- AdditionalIncludeDirectories="&quot;c:\data\prog\pd\pd-cvs\src&quot;;c:\data\prog\packs\pthreads;..\flext\source;c:\data\prog\audio\vstsdk2.3\source\common"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;WINVER=0x0501;_USRDLL;FLEXT_SYS=2;FLEXT_SHARED"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- EnableEnhancedInstructionSet="1"
- UsePrecompiledHeader="2"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib pthreadVC.lib"
- OutputFile="$(outdir)/vst~.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="&quot;c:\data\prog\pd\pd-cvs\bin&quot;;c:\data\prog\packs\pthreads"
- ProgramDatabaseFile="$(outdir)/vst~.pdb"
- OptimizeReferences="2"
- ImportLibrary=".\pd-msvc/r/vst~.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\pd-msvc/r/vst.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="vst"
- Filter="">
- <File
- RelativePath="..\..\prog\audio\vstsdk2.3\source\common\AEffect.h">
- </File>
- <File
- RelativePath="..\..\prog\audio\vstsdk2.3\source\common\aeffectx.h">
- </File>
- <File
- RelativePath="..\..\prog\audio\vstsdk2.3\source\common\AudioEffect.hpp">
- </File>
- <File
- RelativePath="..\..\prog\audio\vstsdk2.3\source\common\audioeffectx.h">
- </File>
- <File
- RelativePath="..\..\prog\audio\vstsdk2.3\source\common\vstcontrols.h">
- </File>
- <File
- RelativePath="..\..\prog\audio\vstsdk2.3\source\common\vstgui.h">
- </File>
- <File
- RelativePath="..\..\prog\audio\vstsdk2.3\source\common\vstplugscarbon.h">
- </File>
- <File
- RelativePath="..\..\prog\audio\vstsdk2.3\source\common\vstplugsmac.h">
- </File>
- <File
- RelativePath="..\..\prog\audio\vstsdk2.3\source\common\vstplugsmacho.h">
- </File>
- </Filter>
- <Filter
- Name="host"
- Filter="">
- <File
- RelativePath=".\src\editor.cpp">
- </File>
- <File
- RelativePath=".\src\editor.h">
- </File>
- <File
- RelativePath=".\src\editorwin.hpp">
- </File>
- <File
- RelativePath="src\vst.rc">
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions=""
- AdditionalIncludeDirectories="src"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions=""
- AdditionalIncludeDirectories="src"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions=""
- AdditionalIncludeDirectories="src"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath=".\src\vstedit.cpp">
- </File>
- <File
- RelativePath=".\src\vsthost.cpp">
- </File>
- <File
- RelativePath=".\src\vsthost.h">
- </File>
- <File
- RelativePath=".\src\vstmaster.cpp">
- </File>
- <File
- RelativePath=".\src\vstmidi.cpp">
- </File>
- <File
- RelativePath=".\src\vstparam.cpp">
- </File>
- </Filter>
- <Filter
- Name="doc"
- Filter="">
- <File
- RelativePath="gpl.txt">
- </File>
- <File
- RelativePath="license.txt">
- </File>
- <File
- RelativePath="readme.txt">
- </File>
- </Filter>
- <File
- RelativePath="src\main.cpp">
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="src\main.h">
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/externals/grill/vst/vst.xcode/project.pbxproj b/externals/grill/vst/vst.xcode/project.pbxproj
deleted file mode 100644
index 67b0c224..00000000
--- a/externals/grill/vst/vst.xcode/project.pbxproj
+++ /dev/null
@@ -1,422 +0,0 @@
-// !$*UTF8*$!
-{
- archiveVersion = 1;
- classes = {
- };
- objectVersion = 39;
- objects = {
- 014CEA440018CDF011CA2923 = {
- buildSettings = {
- COPY_PHASE_STRIP = NO;
- GCC_ALTIVEC_EXTENSIONS = YES;
- GCC_DYNAMIC_NO_PIC = NO;
- GCC_ENABLE_FIX_AND_CONTINUE = YES;
- GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
- GCC_OPTIMIZATION_LEVEL = 0;
- GCC_PREPROCESSOR_DEFINITIONS = "FLEXT_SYS=2 FLEXT_SHARED";
- ZERO_LINK = YES;
- };
- isa = PBXBuildStyle;
- name = Development;
- };
- 014CEA450018CDF011CA2923 = {
- buildSettings = {
- COPY_PHASE_STRIP = YES;
- GCC_ALTIVEC_EXTENSIONS = YES;
- GCC_ENABLE_FIX_AND_CONTINUE = NO;
- GCC_MODEL_TUNING = "";
- GCC_OPTIMIZATION_LEVEL = 0;
- GCC_PREPROCESSOR_DEFINITIONS = "FLEXT_SYS=2 FLEXT_SHARED";
- ZERO_LINK = NO;
- };
- isa = PBXBuildStyle;
- name = Deployment;
- };
-//010
-//011
-//012
-//013
-//014
-//030
-//031
-//032
-//033
-//034
- 034768DFFF38A50411DB9C8B = {
- children = (
- D2AAC0C705546C1D00DB518D,
- );
- isa = PBXGroup;
- name = Products;
- refType = 4;
- sourceTree = "<group>";
- };
-//030
-//031
-//032
-//033
-//034
-//080
-//081
-//082
-//083
-//084
- 0867D690FE84028FC02AAC07 = {
- buildSettings = {
- };
- buildStyles = (
- 014CEA440018CDF011CA2923,
- 014CEA450018CDF011CA2923,
- );
- hasScannedForEncodings = 1;
- isa = PBXProject;
- mainGroup = 0867D691FE84028FC02AAC07;
- productRefGroup = 034768DFFF38A50411DB9C8B;
- projectDirPath = "";
- targets = (
- D2AAC0C605546C1D00DB518D,
- );
- };
- 0867D691FE84028FC02AAC07 = {
- children = (
- E91C4A8207ECD9EA00062063,
- E91C4A8307ECD9EA00062063,
- E91C4A8407ECD9EA00062063,
- E91C4A8507ECD9EA00062063,
- E91C4A8607ECD9EA00062063,
- E91C4A8707ECD9EA00062063,
- E91C4A8807ECD9EA00062063,
- E91C4A8907ECD9EA00062063,
- E9304A5F07732F1F00EE7812,
- E9E87848074674890035356B,
- E9E87845074674560035356B,
- E9E87713074673750035356B,
- E9E87710074673590035356B,
- E9C0C57907461746002B8D0A,
- E9C0C57A07461746002B8D0A,
- 034768DFFF38A50411DB9C8B,
- );
- isa = PBXGroup;
- name = vst;
- refType = 4;
- sourceTree = "<group>";
- };
-//080
-//081
-//082
-//083
-//084
-//D20
-//D21
-//D22
-//D23
-//D24
- D2AAC0C305546C1D00DB518D = {
- buildActionMask = 2147483647;
- files = (
- E9C0C58007461746002B8D0A,
- E91C4A8A07ECD9EA00062063,
- E91C4A8B07ECD9EA00062063,
- E91C4A8E07ECD9EA00062063,
- );
- isa = PBXHeadersBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- D2AAC0C405546C1D00DB518D = {
- buildActionMask = 2147483647;
- files = (
- E9C0C57F07461746002B8D0A,
- E9304A6007732F1F00EE7812,
- E91C4A8C07ECD9EA00062063,
- E91C4A8D07ECD9EA00062063,
- E91C4A8F07ECD9EA00062063,
- E91C4A9007ECD9EA00062063,
- E91C4A9107ECD9EA00062063,
- );
- isa = PBXSourcesBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- D2AAC0C505546C1D00DB518D = {
- buildActionMask = 2147483647;
- files = (
- E9E87711074673590035356B,
- E9E87714074673750035356B,
- E9E87846074674560035356B,
- E9E87849074674890035356B,
- );
- isa = PBXFrameworksBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- D2AAC0C605546C1D00DB518D = {
- buildPhases = (
- D2AAC0C305546C1D00DB518D,
- D2AAC0C405546C1D00DB518D,
- D2AAC0C505546C1D00DB518D,
- );
- buildRules = (
- );
- buildSettings = {
- DYLIB_COMPATIBILITY_VERSION = 1;
- DYLIB_CURRENT_VERSION = 1;
- EXECUTABLE_EXTENSION = pd_darwin;
- GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
- GCC_PRECOMPILE_PREFIX_HEADER = NO;
- GCC_PREFIX_HEADER = "";
- GCC_PREPROCESSOR_DEFINITIONS = "FLEXT_SYS=2 FLEXT_SHARED";
- HEADER_SEARCH_PATHS = "/usr/local/include/flext $PD/src /Volumes/Daten/Prog/packs/vstsdk2.3/source/common";
- INSTALL_PATH = "";
- LIBRARY_STYLE = BUNDLE;
- OTHER_LDFLAGS = "-bundle_loader /Applications/audio/Pd-0.38-3.app/Contents/Resources/bin/pd";
- PRODUCT_NAME = "vst~";
- SKIP_INSTALL = YES;
- };
- dependencies = (
- );
- isa = PBXNativeTarget;
- name = vst;
- productName = vst;
- productReference = D2AAC0C705546C1D00DB518D;
- productType = "com.apple.product-type.library.dynamic";
- };
- D2AAC0C705546C1D00DB518D = {
- explicitFileType = "compiled.mach-o.dylib";
- includeInIndex = 0;
- isa = PBXFileReference;
- path = "vst~.pd_darwin";
- refType = 3;
- sourceTree = BUILT_PRODUCTS_DIR;
- };
-//D20
-//D21
-//D22
-//D23
-//D24
-//E90
-//E91
-//E92
-//E93
-//E94
- E91C4A8207ECD9EA00062063 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = editor.h;
- path = src/editor.h;
- refType = 4;
- sourceTree = "<group>";
- };
- E91C4A8307ECD9EA00062063 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.h;
- name = editormac.hpp;
- path = src/editormac.hpp;
- refType = 4;
- sourceTree = "<group>";
- };
- E91C4A8407ECD9EA00062063 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = vstedit.cpp;
- path = src/vstedit.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- E91C4A8507ECD9EA00062063 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = vsthost.cpp;
- path = src/vsthost.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- E91C4A8607ECD9EA00062063 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = vsthost.h;
- path = src/vsthost.h;
- refType = 4;
- sourceTree = "<group>";
- };
- E91C4A8707ECD9EA00062063 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = vstmaster.cpp;
- path = src/vstmaster.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- E91C4A8807ECD9EA00062063 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = vstmidi.cpp;
- path = src/vstmidi.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- E91C4A8907ECD9EA00062063 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = vstparam.cpp;
- path = src/vstparam.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- E91C4A8A07ECD9EA00062063 = {
- fileRef = E91C4A8207ECD9EA00062063;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E91C4A8B07ECD9EA00062063 = {
- fileRef = E91C4A8307ECD9EA00062063;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E91C4A8C07ECD9EA00062063 = {
- fileRef = E91C4A8407ECD9EA00062063;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E91C4A8D07ECD9EA00062063 = {
- fileRef = E91C4A8507ECD9EA00062063;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E91C4A8E07ECD9EA00062063 = {
- fileRef = E91C4A8607ECD9EA00062063;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E91C4A8F07ECD9EA00062063 = {
- fileRef = E91C4A8707ECD9EA00062063;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E91C4A9007ECD9EA00062063 = {
- fileRef = E91C4A8807ECD9EA00062063;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E91C4A9107ECD9EA00062063 = {
- fileRef = E91C4A8907ECD9EA00062063;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9304A5F07732F1F00EE7812 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = editor.cpp;
- path = src/editor.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- E9304A6007732F1F00EE7812 = {
- fileRef = E9304A5F07732F1F00EE7812;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9C0C57907461746002B8D0A = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = main.cpp;
- path = src/main.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- E9C0C57A07461746002B8D0A = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = main.h;
- path = src/main.h;
- refType = 4;
- sourceTree = "<group>";
- };
- E9C0C57F07461746002B8D0A = {
- fileRef = E9C0C57907461746002B8D0A;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9C0C58007461746002B8D0A = {
- fileRef = E9C0C57A07461746002B8D0A;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9E87710074673590035356B = {
- isa = PBXFileReference;
- lastKnownFileType = wrapper.framework;
- name = System.framework;
- path = /System/Library/Frameworks/System.framework;
- refType = 0;
- sourceTree = "<absolute>";
- };
- E9E87711074673590035356B = {
- fileRef = E9E87710074673590035356B;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9E87713074673750035356B = {
- isa = PBXFileReference;
- lastKnownFileType = wrapper.framework;
- name = ApplicationServices.framework;
- path = /System/Library/Frameworks/ApplicationServices.framework;
- refType = 0;
- sourceTree = "<absolute>";
- };
- E9E87714074673750035356B = {
- fileRef = E9E87713074673750035356B;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9E87845074674560035356B = {
- isa = PBXFileReference;
- lastKnownFileType = "compiled.mach-o.dylib";
- name = "libflext-pd.dylib";
- path = "/usr/local/lib/libflext-pd.dylib";
- refType = 0;
- sourceTree = "<absolute>";
- };
- E9E87846074674560035356B = {
- fileRef = E9E87845074674560035356B;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9E87848074674890035356B = {
- isa = PBXFileReference;
- lastKnownFileType = wrapper.framework;
- name = vecLib.framework;
- path = /System/Library/Frameworks/vecLib.framework;
- refType = 0;
- sourceTree = "<absolute>";
- };
- E9E87849074674890035356B = {
- fileRef = E9E87848074674890035356B;
- isa = PBXBuildFile;
- settings = {
- };
- };
- };
- rootObject = 0867D690FE84028FC02AAC07;
-}
diff --git a/externals/grill/xsample/.DS_Store b/externals/grill/xsample/.DS_Store
deleted file mode 100644
index 55eaa8bc..00000000
--- a/externals/grill/xsample/.DS_Store
+++ /dev/null
Binary files differ
diff --git a/externals/grill/xsample/gpl.txt b/externals/grill/xsample/gpl.txt
deleted file mode 100644
index 5ea29a7d..00000000
--- a/externals/grill/xsample/gpl.txt
+++ /dev/null
@@ -1,346 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) 19yy <name of author>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) 19yy name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Library General
-Public License instead of this License.
-
diff --git a/externals/grill/xsample/license.txt b/externals/grill/xsample/license.txt
deleted file mode 100644
index 3f8ead45..00000000
--- a/externals/grill/xsample/license.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-xsample - extended sample objects for Max/MSP and pd (pure data)
-Copyright (C) 2001-2005 Thomas Grill
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-In the official xsample distribution, the GNU General Public License is
-in the file gpl.txt
-
----------------------------------------------------------
-
- OTHER COPYRIGHT NOTICES
-
----------------------------------------------------------
-This package uses the flext C++ layer and some code snippets
-from pd (pure data).
-See the license texts below:
-
-
---- flext ----------------------------------------------
-flext - C++ layer for Max/MSP and pd (pure data) externals
-Copyright (C) 2001-2005 Thomas Grill
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-In the official flext distribution, the GNU General Public License is
-in the file gpl.txt
-
diff --git a/externals/grill/xsample/maxmsp/xsample-objectmappings.txt b/externals/grill/xsample/maxmsp/xsample-objectmappings.txt
deleted file mode 100644
index 877090e7..00000000
--- a/externals/grill/xsample/maxmsp/xsample-objectmappings.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-max objectfile xgroove~ xsample;
-max objectfile xplay~ xsample;
-max objectfile xrecord~ xsample;
-
-max oblist xsample xgroove~;
-max oblist xsample xplay~;
-max oblist xsample xrecord~;
diff --git a/externals/grill/xsample/maxmsp/xsample.help b/externals/grill/xsample/maxmsp/xsample.help
deleted file mode 100755
index 629d9501..00000000
--- a/externals/grill/xsample/maxmsp/xsample.help
+++ /dev/null
Binary files differ
diff --git a/externals/grill/xsample/package.txt b/externals/grill/xsample/package.txt
deleted file mode 100644
index 2d8ef2f2..00000000
--- a/externals/grill/xsample/package.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-# xsample - extended sample objects for Max/MSP and PD (pure data)
-#
-# Copyright (c)2001-2005 Thomas Grill (gr@grrrr.org)
-# For information on usage and redistribution, and for a DISCLAIMER OF ALL
-# WARRANTIES, see the file, "license.txt," in this distribution.
-#
-# more information on http://grrrr.org/ext
-# ------------------------------------------------------------------------
-#
-# This file contains information for the building process
-#
-# DO NOT EDIT!!
-#
-# ------------------------------------------------------------------------
-
-NAME=xsample
-
-SRCDIR=source
-
-PRECOMPILE=prefix.h
-
-SRCS=main.cpp play.cpp groove.cpp record.cpp inter.cpp
-HDRS=prefix.h main.h inter.h
diff --git a/externals/grill/xsample/pd-ex/xplaydemo.pd b/externals/grill/xsample/pd-ex/xplaydemo.pd
deleted file mode 100644
index c2bb0478..00000000
--- a/externals/grill/xsample/pd-ex/xplaydemo.pd
+++ /dev/null
@@ -1,79 +0,0 @@
-#N canvas 126 119 739 716 12;
-#N canvas 0 0 450 300 graph2 0;
-#X array loop1 220000 float 0;
-#X coords 0 0.5 219999 -0.5 200 140 1;
-#X restore 449 285 graph;
-#N canvas 0 0 450 300 graph3 0;
-#X array loop2 220000 float 0;
-#X coords 0 0.5 219999 -0.5 200 140 1;
-#X restore 450 429 graph;
-#X obj 131 309 xplay~ loop1;
-#X obj 151 459 xplay~ loop2;
-#X obj 32 697 dac~;
-#X msg 16 240 start;
-#X msg 15 267 stop;
-#N canvas 0 0 450 300 graph1 0;
-#X array loop3 220000 float 0;
-#X coords 0 0.5 219999 -0.5 200 140 1;
-#X restore 450 575 graph;
-#X obj 242 623 xplay~ loop3;
-#X msg 103 232 print;
-#X msg 161 232 help;
-#X msg 13 364 start;
-#X msg 13 390 stop;
-#X msg 9 498 start;
-#X msg 11 524 stop;
-#X obj 180 136 xrecord~ loop1;
-#X msg 126 60 set loop2;
-#X msg 42 60 set loop1;
-#X msg 48 108 start;
-#X msg 49 136 stop;
-#X msg 209 60 set loop3;
-#X msg 305 57 append 0;
-#X obj 306 33 loadbang;
-#X text 5 -59 Demo of xplay~ to play synchronized loops;
-#X text 40 43 Click to choose loop to record;
-#X obj 333 95 adc~;
-#X obj 289 264 *~ 220000;
-#X obj 290 226 phasor~ 0.2;
-#X text 156 692 each loop array holds 220000 samples recorded at 44khz
-;
-#X text 5 91 record;
-#X text 78 -34 Record something in each of the three loop arrays. Choose
-(set) the loop to record \, then press start. There's room for up to
-5 seconds in each loop.;
-#X text 17 183 After you have recorded something into each loop \,
-you can play them selectively using the start/stop controls;
-#X text 389 224 <= this generates the position signal that xplay requires
-at the proper rate for this sample size.;
-#X text 379 48 <= We record from the beginning of the array each time.
-;
-#X text 370 96 <= Audio will be recorded from your sound card input
-(e.g. microphone);
-#X text 350 -60 (by Glenn Meader);
-#X connect 2 0 4 0;
-#X connect 2 0 4 1;
-#X connect 3 0 4 1;
-#X connect 3 0 4 0;
-#X connect 5 0 2 0;
-#X connect 6 0 2 0;
-#X connect 8 0 4 0;
-#X connect 8 0 4 1;
-#X connect 9 0 2 0;
-#X connect 10 0 2 0;
-#X connect 11 0 3 0;
-#X connect 12 0 3 0;
-#X connect 13 0 8 0;
-#X connect 14 0 8 0;
-#X connect 16 0 15 0;
-#X connect 17 0 15 0;
-#X connect 18 0 15 0;
-#X connect 19 0 15 0;
-#X connect 20 0 15 0;
-#X connect 21 0 15 0;
-#X connect 22 0 21 0;
-#X connect 25 0 15 0;
-#X connect 26 0 2 0;
-#X connect 26 0 3 0;
-#X connect 26 0 8 0;
-#X connect 27 0 26 0;
diff --git a/externals/grill/xsample/pd-ex/xsampledemo.pd b/externals/grill/xsample/pd-ex/xsampledemo.pd
deleted file mode 100644
index aa269f00..00000000
--- a/externals/grill/xsample/pd-ex/xsampledemo.pd
+++ /dev/null
@@ -1,68 +0,0 @@
-#N canvas 242 109 742 690 12;
-#X text 13 3 xsample~ demo;
-#N canvas 0 22 452 302 graph5 0;
-#X array loop1 440000 float 0;
-#X coords 0 0.2 439999 -0.2 200 140 1;
-#X restore 516 184 graph;
-#X obj 244 262 xrecord~ loop1;
-#X msg 74 233 start;
-#X msg 75 265 stop;
-#X obj 111 108 adc~;
-#X msg 225 158 help;
-#X msg 237 184 print;
-#X msg 165 122 append 0;
-#X obj 246 297 snapshot~;
-#X obj 165 96 loadbang;
-#X floatatom 245 328 10 0 0 1 looplength - -;
-#X text 4 214 Click to start recording;
-#X text 273 156 Click help prints info;
-#X text 236 98 start from the beginning of the array each time;
-#X obj 147 579 xgroove~ loop1;
-#X msg 121 449 print;
-#X msg 135 472 help;
-#X msg 15 536 start;
-#X msg 16 565 stop;
-#X floatatom 172 526 8 0 0 2 speed - -;
-#X floatatom 208 624 8 0 0 3 startsample - -;
-#X floatatom 311 623 10 0 0 3 endsample - -;
-#X obj 134 631 dac~;
-#X obj 185 448 loadbang;
-#X msg 188 470 1;
-#X text 2 515 play the loop;
-#X text 244 525 negative numbers play sample backwards;
-#X text 259 356 The xrecord object puts out the current position so
-we take a snapshot of it when we stop recording to get the number of
-samples we have recorded.;
-#X text 262 556 use the last sample number as the max position so loop
-is played the right length;
-#X text 78 23 This demo records sound coming from your sound card input
-(e.g. microphone). It stores the sample in the array "loop1". The array
-has 440000 elements so it can store a max of 10 seconds \, recording
-at 44khz.;
-#X text 285 182 print current status;
-#X text 25 428 Playback of the sample stored in loop1 using the xgroove
-object:;
-#X text 136 4 (by Glenn Meader);
-#X text 20 314;
-#X connect 2 0 9 0;
-#X connect 3 0 2 0;
-#X connect 4 0 2 0;
-#X connect 5 0 2 0;
-#X connect 6 0 2 0;
-#X connect 7 0 2 0;
-#X connect 8 0 2 0;
-#X connect 9 0 11 0;
-#X connect 10 0 8 0;
-#X connect 10 0 9 0;
-#X connect 11 0 15 2;
-#X connect 15 0 23 0;
-#X connect 15 0 23 1;
-#X connect 15 2 21 0;
-#X connect 15 3 22 0;
-#X connect 16 0 15 0;
-#X connect 17 0 15 0;
-#X connect 18 0 15 0;
-#X connect 19 0 15 0;
-#X connect 20 0 15 0;
-#X connect 24 0 25 0;
-#X connect 25 0 20 0;
diff --git a/externals/grill/xsample/pd/xgroove~-help.pd b/externals/grill/xsample/pd/xgroove~-help.pd
deleted file mode 100644
index 03906625..00000000
--- a/externals/grill/xsample/pd/xgroove~-help.pd
+++ /dev/null
@@ -1,250 +0,0 @@
-#N canvas 69 62 945 610 12;
-#X obj 215 253 hsl 128 15 0.001 3 1 1 empty empty speed 0 -8 0 10 -225271
--1 -1 5000 1;
-#X msg 603 169 loop \$1;
-#X obj 28 72 bng 15 250 50 0 empty empty empty 20 8 0 8 -258699 -1
--1;
-#X msg 27 92 stop;
-#N canvas 0 0 450 300 graph7 0;
-#X array \$0-buf 10000 float 0;
-#X coords 0 1 9999 -1 300 150 1;
-#X restore 573 269 graph;
-#X obj 17 556 dac~;
-#X msg 120 73 reset;
-#X text 299 321 min/max points;
-#X text 50 69 start;
-#X text 67 90 stop;
-#X msg 119 99 help;
-#X text 280 269 (float or signal);
-#X msg 749 167 interp \$1;
-#X msg 237 305 all;
-#X text 747 94 interpolation;
-#X text 622 116 once;
-#X text 768 116 none;
-#X text 768 148 linear;
-#X text 224 75 units;
-#X msg 225 163 units \$1;
-#X msg 358 163 sclmode \$1;
-#X text 244 127 ms;
-#X text 244 142 s;
-#X text 377 127 buffer;
-#X text 377 142 loop;
-#X obj 487 208 bng 15 250 50 0 empty empty empty 0 -6 0 8 -228992 -1
--1;
-#X obj 335 349 print A;
-#N canvas 0 0 450 300 graph2 0;
-#X array \$0-scp 300 float 0;
-#X coords 0 1 299 -1 300 100 1;
-#X restore 573 447 graph;
-#X obj 26 525 *~;
-#X obj 82 491 hsl 128 15 0.0001 1 1 0 empty empty volume -2 -6 0 8
--261689 -1 -1 0 1;
-#X obj 79 509 nbx 5 14 -1e+037 1e+037 0 0 empty empty empty 0 -6 0
-10 -261689 -1 -1 0.0001 256;
-#X msg 25 249 pos \$1;
-#X msg 63 220 200;
-#X msg 25 221 100;
-#X obj 507 209 nbx 5 14 0 1e+037 0 1 empty empty frq 0 -6 0 10 -228992
--1 -1 220 256;
-#N canvas 19 334 427 333 loopzone 0;
-#X msg 28 84 xzone \$1;
-#X obj 31 43 hsl 128 15 0 300 0 0 empty empty empty -2 -6 0 8 -262131
--1 -1 0 1;
-#X floatatom 28 64 5 0 0 0 - - -;
-#X msg 203 207 xfade \$1;
-#X obj 203 142 vdl 15 0 0 4 empty empty empty 0 -6 0 8 -262144 -1 -1
-0;
-#X text 202 123 loop zone mode;
-#X text 222 141 keep loop pos;
-#X text 222 157 keep loop length;
-#X text 222 173 keep fade length;
-#X msg 47 205 xshape \$1;
-#X obj 48 155 vdl 15 0 0 3 empty empty empty 0 -6 0 8 -262144 -1 -1
-0;
-#X text 45 133 fade zone shape;
-#X text 67 152 linear;
-#X text 67 168 quarter sine;
-#X text 67 184 half sine;
-#X text 125 67 length of the loop zone;
-#X text 123 84 (in units);
-#X text 222 188 zone inside loop;
-#X text 21 9 xgroove~ crossfading loop zone;
-#X obj 27 255 s to-g;
-#X connect 0 0 19 0;
-#X connect 1 0 2 0;
-#X connect 2 0 0 0;
-#X connect 3 0 19 0;
-#X connect 4 0 3 0;
-#X connect 9 0 19 0;
-#X connect 10 0 9 0;
-#X restore 23 414 pd loopzone;
-#X text 64 147 set buffer;
-#X text 23 383 settings for;
-#X text 22 395 cross-fading loop zone;
-#X text 399 349 print attributes;
-#X obj 357 394 bng 15 250 50 0 empty empty loop_bang 0 -6 0 8 -262131
--1 -1;
-#X text 357 60 scale mode;
-#X text 354 75 (pos message and position outlet);
-#X text 622 148 bidirectional;
-#X text 244 111 buffer size;
-#X obj 574 419 hsl 300 15 0 10000 0 0 empty bufpos empty -2 -6 0 8
--262144 -1 -1 10628 1;
-#X obj 236 527 nbx 5 14 -1e+037 1e+037 0 0 empty empty position 0 -6
-0 10 -228992 -1 -1 3554.44 256;
-#N canvas 0 0 474 324 watch 0;
-#X obj 163 18 loadbang;
-#X obj 88 80 snapshot~;
-#X obj 164 44 metro 50;
-#X obj 143 109 s bufpos;
-#X obj 176 196 outlet;
-#X obj 22 14 inlet~;
-#X obj 88 14 inlet~;
-#X obj 22 196 tabwrite~ \$0-scp;
-#X connect 0 0 2 0;
-#X connect 1 0 3 0;
-#X connect 1 0 4 0;
-#X connect 1 0 7 0;
-#X connect 2 0 1 0;
-#X connect 2 0 7 0;
-#X connect 5 0 7 0;
-#X connect 6 0 1 0;
-#X restore 235 492 pd watch;
-#X text 377 111 units in loop;
-#N canvas 97 34 266 202 genosc 0;
-#X obj 38 29 inlet;
-#X obj 64 94 osc~ 1000;
-#X obj 38 54 route bang;
-#X obj 37 134 tabwrite~ \$0-buf;
-#X obj 158 94 loadbang;
-#X connect 0 0 2 0;
-#X connect 1 0 3 0;
-#X connect 2 0 3 0;
-#X connect 2 1 1 0;
-#X connect 4 0 3 0;
-#X restore 487 229 pd genosc;
-#X text 600 97 loop mode;
-#X text 23 201 set position;
-#X obj 299 426 nbx 5 14 0 1e+037 0 1 empty empty min 0 -6 0 10 -262131
--1 -1 1004 256;
-#X obj 356 426 nbx 5 14 0 1e+037 0 1 empty empty max 0 -6 0 10 -262131
--1 -1 8996 256;
-#X obj 298 309 nbx 5 14 0 1e+037 0 1 empty empty min 0 -6 0 10 -225271
--1 -1 1004 256;
-#X obj 355 309 nbx 5 14 0 1e+037 0 1 empty empty max 0 -6 0 10 -225271
--1 -1 8996 256;
-#X text 244 95 frames (def.);
-#X text 377 96 units in buffer (def.);
-#X text 622 132 forward (def.);
-#X text 768 132 4-point (def.);
-#N canvas 12 194 490 407 attributes 0;
-#X msg 82 74 getattributes;
-#X msg 138 133 getmax;
-#X msg 81 133 getmin;
-#X text 198 75 dump all attributes;
-#X text 200 135 get min/max positions;
-#X msg 82 105 getbuffer;
-#X msg 80 162 getpos;
-#X text 140 162 get current position;
-#X text 167 105 get buffer name;
-#X msg 79 251 getloop;
-#X msg 79 276 getinterp;
-#X text 147 251 get loop mode;
-#X text 160 276 get interpolation mode;
-#X msg 79 197 getunits;
-#X text 152 197 get unit setting;
-#X msg 79 222 getsclmode;
-#X text 170 222 get scale mode;
-#X msg 79 315 getxfade;
-#X msg 78 365 getxshape;
-#X text 157 315 get crossfade mode;
-#X msg 79 340 getxzone;
-#X text 154 340 get crossfade length;
-#X text 156 367 get crossfade shape;
-#X text 19 12 xgroove~ attributes;
-#X obj 19 195 s to-g;
-#X msg 82 49 getmethods;
-#X text 174 49 dump all methods;
-#X connect 0 0 24 0;
-#X connect 1 0 24 0;
-#X connect 2 0 24 0;
-#X connect 5 0 24 0;
-#X connect 6 0 24 0;
-#X connect 9 0 24 0;
-#X connect 10 0 24 0;
-#X connect 13 0 24 0;
-#X connect 15 0 24 0;
-#X connect 17 0 24 0;
-#X connect 18 0 24 0;
-#X connect 20 0 24 0;
-#X connect 25 0 24 0;
-#X restore 24 343 pd attributes;
-#X text 23 324 attribute stuff;
-#X text 484 177 generate;
-#X obj 26 10 cnv 15 850 40 empty empty xgroove~ 10 22 0 24 -260818
--1 0;
-#X msg 105 221 1000;
-#X msg 96 249 posmod \$1;
-#X text 146 227 modulo;
-#X text 301 439 min/max points;
-#X text 299 454 (sample rounded);
-#X obj 603 120 vradio 15 1 0 3 empty empty empty 0 -6 0 8 -225271 -1
--1 0;
-#X obj 749 119 vradio 15 1 0 3 empty empty empty 0 -6 0 8 -225271 -1
--1 0;
-#X obj 225 99 vradio 15 1 0 4 empty empty empty 0 -6 0 8 -225271 -1
--1 0;
-#X obj 358 99 vradio 15 1 0 4 empty empty empty 0 -6 0 8 -225271 -1
--1 0;
-#X obj 65 164 s to-g;
-#X obj 298 197 s to-g;
-#X obj 61 278 s to-g;
-#X obj 180 304 r to-g;
-#X obj 704 201 s to-g;
-#X obj 191 349 xgroove~ \$0-buf;
-#X text 227 29 http://grrrr.org/ext;
-#X obj 79 550 line~;
-#X msg 79 527 \$1 50;
-#X obj 212 271 nbx 5 14 -1e+037 1e+037 0 0 empty empty empty 0 -6 0
-10 -225271 -1 -1 0.0233854 256;
-#X text 227 10 varispeed sample player \, (C)2001-2005 Thomas Grill
-;
-#X connect 0 0 82 0;
-#X connect 1 0 77 0;
-#X connect 2 0 73 0;
-#X connect 3 0 73 0;
-#X connect 6 0 73 0;
-#X connect 10 0 73 0;
-#X connect 12 0 77 0;
-#X connect 13 0 78 0;
-#X connect 19 0 74 0;
-#X connect 20 0 74 0;
-#X connect 25 0 49 0;
-#X connect 28 0 5 0;
-#X connect 28 0 5 1;
-#X connect 29 0 30 0;
-#X connect 30 0 81 0;
-#X connect 31 0 75 0;
-#X connect 32 0 31 0;
-#X connect 33 0 31 0;
-#X connect 34 0 49 0;
-#X connect 47 0 46 0;
-#X connect 54 0 78 1;
-#X connect 55 0 78 2;
-#X connect 64 0 65 0;
-#X connect 65 0 75 0;
-#X connect 69 0 1 0;
-#X connect 70 0 12 0;
-#X connect 71 0 19 0;
-#X connect 72 0 20 0;
-#X connect 76 0 78 0;
-#X connect 78 0 28 0;
-#X connect 78 0 47 0;
-#X connect 78 1 47 1;
-#X connect 78 2 52 0;
-#X connect 78 3 53 0;
-#X connect 78 4 40 0;
-#X connect 78 5 26 0;
-#X connect 80 0 28 1;
-#X connect 81 0 80 0;
-#X connect 82 0 78 0;
diff --git a/externals/grill/xsample/pd/xplay~-help.pd b/externals/grill/xsample/pd/xplay~-help.pd
deleted file mode 100644
index a079a361..00000000
--- a/externals/grill/xsample/pd/xplay~-help.pd
+++ /dev/null
@@ -1,123 +0,0 @@
-#N canvas 165 149 716 444 12;
-#X obj 21 75 bng 15 250 50 0 empty empty empty 20 8 0 8 -258699 -1
--1;
-#X msg 21 95 stop;
-#X msg 107 99 reset;
-#X text 43 72 start;
-#X text 60 93 stop;
-#X obj 159 217 *~ 300;
-#X text 161 239 position signal;
-#X msg 107 75 help;
-#N canvas 0 0 450 300 graph7 0;
-#X array \$0-buf 300 float 1;
-#A 0 -0.445589 -0.568192 -0.679282 -0.776596 -0.858191 -0.922374 -0.967874
--0.99377 -0.999505 -0.985009 -0.950534 -0.896801 -0.824907 -0.736274
--0.632737 -0.516371 -0.38954 -0.254823 -0.114932 0.0272834 0.168947
-0.307184 0.439204 0.562312 0.674031 0.772096 0.854499 0.919606 0.966059
-0.992941 0.999714 0.986201 0.952726 0.899931 0.8289 0.741087 0.638231
-0.522457 0.396092 0.261698 0.122005 -0.0201642 -0.161923 -0.300402
--0.432789 -0.556415 -0.668753 -0.767544 -0.85079 -0.916775 -0.964202
--0.992074 -0.999845 -0.987371 -0.954858 -0.903018 -0.832869 -0.74584
--0.643712 -0.528517 -0.402624 -0.268571 -0.129073 0.013039 0.154887
-0.293596 0.426359 0.550472 0.663443 0.762958 0.847014 0.913919 0.962278
-0.991158 0.999942 0.988459 0.956966 0.906048 0.836789 0.75057 0.649134
-0.534557 0.409131 0.275422 0.136132 -0.00591801 -0.147849 -0.286781
--0.419902 -0.544521 -0.658091 -0.758339 -0.84321 -0.910993 -0.960333
--0.990181 -0.999986 -0.989519 -0.958993 -0.909055 -0.840666 -0.755257
--0.654544 -0.540557 -0.415628 -0.282266 -0.143188 -0.00120819 0.140795
-0.279949 0.413425 0.538524 0.652719 0.753668 0.83936 0.908035 0.958306
-0.989179 0.999971 0.99052 0.960994 0.911984 0.844512 0.759903 0.659907
-0.54654 0.422089 0.289093 0.150232 0.00832932 -0.133744 -0.273102 -0.406932
--0.532511 -0.647298 -0.748981 -0.835462 -0.90503 -0.956253 -0.988091
--0.999927 -0.991469 -0.962937 -0.914892 -0.848294 -0.764525 -0.665244
--0.55249 -0.428544 -0.295904 -0.157275 -0.015455 0.126676 0.266245
-0.400409 0.526467 0.641853 0.744228 0.831539 0.901971 0.954143 0.986978
-0.999801 0.992384 0.96483 0.917738 0.852053 0.769085 0.67055 0.558412
-0.434962 0.302703 0.164301 0.0225751 -0.11961 -0.25937 -0.393881 -0.520396
--0.636376 -0.739458 -0.827548 -0.898887 -0.951984 -0.985804 -0.99965
--0.993222 -0.966689 -0.920545 -0.855754 -0.773631 -0.675811 -0.564313
--0.441369 -0.309483 -0.171329 -0.0296987 0.112532 0.252482 0.387314
-0.514306 0.63086 0.73464 0.823534 0.895727 0.94979 0.984581 0.999431
-0.994035 0.968475 0.92331 0.859418 0.778115 0.681053 0.570172 0.447749
-0.316248 0.178338 0.0368166 -0.105453 -0.245585 -0.380741 -0.508177
--0.625327 -0.729788 -0.819469 -0.892548 -0.947524 -0.98332 -0.999169
--0.994777 -0.970238 -0.926013 -0.863044 -0.782573 -0.686245 -0.576021
--0.454107 -0.323001 -0.185347 -0.0439363 0.0983649 0.23867 0.374141
-0.502032 0.619741 0.724906 0.815363 0.889305 0.945234 0.981988 0.998863
-0.99548 0.971926 0.928692 0.866611 0.786989 0.69141 0.581818 0.460448
-0.32973 0.19234 0.0510499 -0.0912742 -0.231752 -0.367527 -0.495857
--0.614144 -0.719972 -0.811227 -0.886027 -0.942877 -0.980632 -0.998489
--0.996135 -0.973581 -0.931298 -0.87016 -0.79136 -0.696541 -0.587603
--0.466754 -0.336455 -0.199327 -0.0581653 0.0841763 0.22481 0.360894
-0.489656 0.608499 0.715018 0.80703 0.882706 0.940481 0.979199 0.998091
-0.996726 0.975184 0.933873 0.873632 0.795706;
-#X coords 0 1 299 -1 300 200 1;
-#X restore 370 80 graph;
-#X obj 162 174 hsl 128 15 1 100 1 1 empty empty speed 0 -8 0 10 -225271
--1 -1 9300 1;
-#X msg 107 123 print;
-#X obj 159 194 phasor~ 100;
-#X obj 180 311 print A;
-#X obj 37 389 dac~;
-#X obj 46 358 *~;
-#X obj 87 360 hsl 128 15 0.0001 1 1 0 empty empty volume -2 -6 0 8
--261689 -1 -1 0 1;
-#X obj 84 378 nbx 5 14 -1e+037 1e+037 0 0 empty empty empty 0 -6 0
-10 -261689 -1 -1 0 256;
-#X obj 21 10 cnv 15 650 40 empty empty xplay~ 10 22 0 24 -260818 -1
-0;
-#N canvas 0 0 450 300 graph2 0;
-#X array \$0-scp 300 float 0;
-#X coords 0 1 299 -1 300 100 1;
-#X restore 370 294 graph;
-#N canvas 0 0 265 143 watch 0;
-#X obj 100 13 loadbang;
-#X obj 101 39 metro 50;
-#X obj 22 14 inlet~;
-#X obj 22 94 tabwrite~ \$0-scp;
-#X connect 0 0 1 0;
-#X connect 1 0 3 0;
-#X connect 2 0 3 0;
-#X restore 90 310 pd watch;
-#N canvas 33 327 454 231 attributes 0;
-#X msg 85 60 getattributes;
-#X obj 22 181 s to;
-#X text 203 61 dump all attributes;
-#X msg 85 91 getbuffer;
-#X text 170 91 get buffer name;
-#X msg 84 186 getinterp;
-#X text 165 186 get interpolation mode;
-#X msg 85 130 getunits;
-#X text 158 130 get unit setting;
-#X msg 85 155 getsclmode;
-#X text 176 155 get scale mode;
-#X text 21 15 xplay~ attributes;
-#X connect 0 0 1 0;
-#X connect 3 0 1 0;
-#X connect 5 0 1 0;
-#X connect 7 0 1 0;
-#X connect 9 0 1 0;
-#X restore 22 210 pd attributes;
-#X text 21 192 attributes;
-#X obj 21 154 s to-p;
-#X obj 21 250 r to-p;
-#X obj 81 280 xplay~ \$0-buf;
-#X text 180 29 http://grrrr.org/ext;
-#X text 179 11 buffer-based sample player \, (C)2001-2005 Thomas Grill
-;
-#X connect 0 0 22 0;
-#X connect 1 0 22 0;
-#X connect 2 0 22 0;
-#X connect 5 0 24 0;
-#X connect 7 0 22 0;
-#X connect 9 0 11 0;
-#X connect 10 0 22 0;
-#X connect 11 0 5 0;
-#X connect 14 0 13 0;
-#X connect 14 0 13 1;
-#X connect 15 0 16 0;
-#X connect 16 0 14 1;
-#X connect 23 0 24 0;
-#X connect 24 0 14 0;
-#X connect 24 0 19 0;
-#X connect 24 1 12 0;
diff --git a/externals/grill/xsample/pd/xrecord~-help.pd b/externals/grill/xsample/pd/xrecord~-help.pd
deleted file mode 100644
index cccbdee9..00000000
--- a/externals/grill/xsample/pd/xrecord~-help.pd
+++ /dev/null
@@ -1,168 +0,0 @@
-#N canvas 58 17 877 659 12;
-#X obj 18 83 bng 15 250 50 0 empty empty empty 20 8 0 8 -258699 -1
--1;
-#X msg 17 103 stop;
-#N canvas 0 0 450 300 graph7 0;
-#X array \$0-buf 10000 float 0;
-#X coords 0 1 9999 -1 200 140 1;
-#X restore 61 477 graph;
-#X msg 15 137 reset;
-#X obj 74 355 snapshot~;
-#X floatatom 76 380 7 0 0 0 - - -;
-#X obj 22 288 loadbang;
-#X msg 14 167 help;
-#X obj 179 164 tgl 15 1 empty empty empty 20 8 0 8 -225271 -1 -1 1
-1;
-#X msg 197 161 loop \$1;
-#X msg 177 104 0;
-#X msg 213 104 200;
-#X msg 176 132 draw \$1;
-#X obj 427 332 bng 15 250 50 0 empty empty empty 20 8 0 8 -258699 -1
--1;
-#X msg 426 352 stop;
-#X msg 425 391 reset;
-#X obj 516 575 snapshot~;
-#X floatatom 516 605 7 0 0 0 - - -;
-#X obj 427 503 loadbang;
-#X obj 553 299 tgl 15 1 empty empty empty 20 8 0 8 -225271 -1 -1 1
-1;
-#X msg 572 296 loop \$1;
-#X msg 468 263 0;
-#X msg 467 291 draw \$1;
-#X obj 554 322 tgl 15 1 empty empty empty 20 8 0 8 -225271 -1 -1 1
-1;
-#X msg 572 320 sigmode \$1;
-#X msg 425 417 print;
-#X obj 579 425 hsl 128 15 -0.001 1 0 1 empty empty empty 20 8 0 8 -225271
--1 -1 2800 1;
-#X msg 601 347 mixmode \$1;
-#X floatatom 645 443 8 0 0 0 - - -;
-#X obj 427 530 metro 30;
-#X obj 22 315 metro 30;
-#X obj 681 86 osc~ 10;
-#X obj 90 146 r~ rec;
-#X obj 498 396 r~ rec;
-#X obj 667 149 s~ rec;
-#X obj 664 113 *~ 1;
-#X obj 663 90 tgl 15 1 empty empty empty 20 8 0 8 -225271 -1 -1 1 1
-;
-#X obj 760 115 *~ 1;
-#X obj 759 92 tgl 15 0 empty empty empty 20 8 0 8 -225271 -1 -1 0 1
-;
-#X obj 777 88 adc~;
-#X text 266 164 looping on/off;
-#X text 241 133 display refresh;
-#X text 56 81 start;
-#X text 57 103 stop;
-#X text 30 338 position signal;
-#X text 635 295 looping on/off;
-#X text 660 321 signal mode on/off;
-#X text 714 436 trigger signal;
-#X text 383 189 <----- message triggered;
-#X text 187 439 signal triggered ------->;
-#X text 509 242 click to activate auto update;
-#X text 448 328 start;
-#X text 466 352 stop;
-#X msg 152 239 all;
-#X msg 504 263 100;
-#X obj 554 497 line~;
-#X msg 554 472 \$1 20;
-#X msg 13 203 getattributes;
-#X obj 236 281 print A;
-#X msg 14 231 getbuffer;
-#X obj 583 116 *~ 1;
-#X obj 582 93 tgl 15 1 empty empty empty 20 8 0 8 -225271 -1 -1 0 1
-;
-#X obj 602 89 noise~;
-#X obj 554 349 hradio 15 1 0 3 empty empty empty 0 -6 0 8 -225271 -1
--1 0;
-#X text 575 366 mixmode (off \, mix-in \, add);
-#X text 582 396 by the trigger signal;
-#X text 581 383 the amount of mixing-in is given;
-#X obj 95 280 xrecord~ \$0-buf;
-#X obj 516 529 xrecord~ \$0-buf;
-#X obj 18 12 cnv 15 800 40 empty empty xrecord~ 10 22 0 24 -260818
--1 0;
-#X text 202 253 min/max points;
-#X obj 201 241 nbx 5 14 0 1e+037 0 1 empty empty min 0 -6 0 10 -225271
--1 -1 0 256;
-#X obj 258 241 nbx 5 14 0 1e+037 0 1 empty empty max 0 -6 0 10 -225271
--1 -1 10002 256;
-#X obj 190 365 nbx 5 14 0 1e+037 0 1 empty empty min 0 -6 0 10 -262131
--1 -1 0 256;
-#X obj 247 365 nbx 5 14 0 1e+037 0 1 empty empty max 0 -6 0 10 -262131
--1 -1 10000 256;
-#X text 192 378 min/max points;
-#X obj 224 321 bng 15 250 50 0 empty empty loop_bang 0 -6 0 8 -262131
--1 -1;
-#X text 294 284 print attributes;
-#X obj 617 574 nbx 5 14 0 1e+037 0 1 empty empty min 0 -6 0 10 -262131
--1 -1 0 256;
-#X obj 674 574 nbx 5 14 0 1e+037 0 1 empty empty max 0 -6 0 10 -262131
--1 -1 10000 256;
-#X obj 618 500 nbx 5 14 0 1e+037 0 1 empty empty min 0 -6 0 10 -225271
--1 -1 0 256;
-#X obj 675 500 nbx 5 14 0 1e+037 0 1 empty empty max 0 -6 0 10 -225271
--1 -1 10000 256;
-#X text 224 31 http://grrrr.org/ext;
-#X text 224 12 buffer-based signal recorder \, (C)2001-2005 Thomas
-Grill;
-#X connect 0 0 67 0;
-#X connect 1 0 67 0;
-#X connect 3 0 67 0;
-#X connect 4 0 5 0;
-#X connect 6 0 30 0;
-#X connect 7 0 67 0;
-#X connect 8 0 9 0;
-#X connect 9 0 67 0;
-#X connect 10 0 12 0;
-#X connect 11 0 12 0;
-#X connect 12 0 67 0;
-#X connect 13 0 68 0;
-#X connect 14 0 68 0;
-#X connect 15 0 68 0;
-#X connect 16 0 17 0;
-#X connect 18 0 29 0;
-#X connect 19 0 20 0;
-#X connect 20 0 68 0;
-#X connect 21 0 22 0;
-#X connect 22 0 68 0;
-#X connect 23 0 24 0;
-#X connect 24 0 68 0;
-#X connect 25 0 68 0;
-#X connect 26 0 28 0;
-#X connect 26 0 56 0;
-#X connect 27 0 68 0;
-#X connect 29 0 16 0;
-#X connect 30 0 4 0;
-#X connect 31 0 35 0;
-#X connect 32 0 67 0;
-#X connect 33 0 68 0;
-#X connect 35 0 34 0;
-#X connect 36 0 35 1;
-#X connect 37 0 34 0;
-#X connect 38 0 37 1;
-#X connect 39 0 37 0;
-#X connect 39 1 37 0;
-#X connect 53 0 67 0;
-#X connect 54 0 22 0;
-#X connect 55 0 68 1;
-#X connect 56 0 55 0;
-#X connect 57 0 67 0;
-#X connect 59 0 67 0;
-#X connect 60 0 34 0;
-#X connect 61 0 60 1;
-#X connect 62 0 60 0;
-#X connect 63 0 27 0;
-#X connect 67 0 4 0;
-#X connect 67 1 73 0;
-#X connect 67 2 74 0;
-#X connect 67 3 76 0;
-#X connect 67 4 58 0;
-#X connect 68 0 16 0;
-#X connect 68 1 78 0;
-#X connect 68 2 79 0;
-#X connect 71 0 67 2;
-#X connect 72 0 67 3;
-#X connect 80 0 68 2;
-#X connect 81 0 68 3;
diff --git a/externals/grill/xsample/readme.txt b/externals/grill/xsample/readme.txt
deleted file mode 100644
index 86b96d76..00000000
--- a/externals/grill/xsample/readme.txt
+++ /dev/null
@@ -1,172 +0,0 @@
-xsample - extended sample objects for Max/MSP and PD (pure data)
-
-Copyright (c)2001-2006 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-
-----------------------------------------------------------------------------
-
-Maximum care has been taken to prepare a delightful experience for you electronic artists.
-Donations for further development of the package are HIGHLY APPRECIATED.
-
-Visit https://www.paypal.com/xclick/business=gr%40grrrr.org&item_name=xsample&no_note=1&tax=0&currency_code=EUR
-
-----------------------------------------------------------------------------
-
-IMPORTANT INFORMATION for all Max/MSP users:
-
-1)
-For Mac OSX it is best to put the max-darwin/xsample.mxd file into the folder
-/Library/Application Support/Cycling '74/externals
-and the file maxmsp/xsample-objectmappings.txt into the folder
-/Library/Application Support/Cycling '74/init .
-
-For Windows put the max-msvc\xsample.mxe file into the folder
-C:\program files\common files\Cycling '74\externals (english version)
-and the file maxmsp/xsample-objectmappings.txt in
-C:\program files\common files\Cycling '74\init (english version)
-
-Put the maxmsp/xsample.help file into the max-help folder.
-
-2)
-Alternatively (or for OS9) it is advisable to put the xsample.mxd or xsample.mxe file
-into the "max-startup" folder. Hence it will be loaded at Max startup.
-
-----------------------------------------------------------------------------
-
-IMPORTANT INFORMATION for all PD users:
-
-xsample is a library containing several external objects. You should load it at PD startup
-by adding "-lib xsample" to the PD command line.
-(If you forgot to do that, you can load the library by creating an [xsample] dummy object.
-
-----------------------------------------------------------------------------
-
-
-BUILDING XSAMPLE from source
-----------------------------
-
-You will need the flext C++ layer for PD and Max/MSP externals to compile this.
-See http://grrrr.org/ext/flext
-Download, install and compile the package.
-Afterwards you can proceed with building xsample.
-
-
-pd/Max - Windows - Microsoft Visual C, Borland C++, MinGW:
-----------------------------------------------------------
-Start a command shell with your eventual build environment
-(e.g. run vcvars32.bat for Microsoft Visual Studio)
-
-then run
- ..\flext\build.bat
-(you would have to substitute ..\flext with the respective path to the flext package)
-
-
-pd/Max - OSX/Linux - GCC:
--------------------------
-From a shell run
-bash ../flext/build.sh
-(you would have to substitute ../flext with the respective path to the flext package)
-
-
-Max - OS9 - Metrowerks CodeWarrior:
------------------------------------
-use the "xsample.mcp" project file
-
-----------------------------------------------------------------------------
-
-
-Goals/features of the package:
-
-- portable and effective sample recording/playing objects for pd and Max/MSP
-- MSP-like groove~ object for PD
-- message- or signal-triggered recording object with mix-in capability
-- avoid the various bugs of the original MSP2 objects
-- multi-channel capability
-- live update of respective buffer/array content
-- switchable 4-point or linear interpolation for xplay~/xgroove~ object
-- cross-fading loop zone for xgroove~
-
-----------------------------------------------------------------------------
-
-Version history:
-
-0.3.1:
-- added mixmode=2 to Max/MSP help files
-- fixed limit consideration for loopmode=0 and 2.
-- fixed buggy sampling in crossfade zones (and simplified it a lot)
-- different initialization on buffer absence
-- renew units and scalemode on buffer change
-- fixed looped recording bug (thanks to Tatama Suomo)
-- reconsidered all state changes
-- more optimizations for interpolation functions
-- use the new flext build system
-- use branch hints
-
-0.3.0:
-- added resources to MaxMSP build
-- xgroove~, xrecord~: introduced a loop/end bang outlet
-- added MaxMSP buffer resize recognition
-- xgroove~: introduced crossfading loop zones
-- adapted source for flext 0.4.1 - most methods within class scope
-- introduced attributes
-- restructured make procedures
-- corrected names of PD makefile, set help names
-- fixed scale mode bug with xgroove~
-- added validity check for buffers
-- Max/MSP OSX: new file xsample-objectmappings.txt fixes load of library on finding correct helpfiles!
-- makefiles for command line MSVC++, BCC, cygwin GCC
-- better handling of non-existent buffers
-- fixed flext-related error on setting buffers
-- xrecord~: mixmode has now 3 states (off, mix-in, add)
-
-0.2.4:
-- according to flext 0.2.3 changed sample type to t_sample (S)
-- xrecord~: fixed mix mode bug
-- fixed argument buffer problem
-
-0.2.3:
-- using flext 0.2.2 - xsample is now a library under MaxMSP
-- cleaner gcc makefile
-- xgroove~, xrecord~: added "all" message to select entire buffer length
-- xgroove~, xplay~: revisited dsp methods, restructured the code, fixed small interpolation bugs
-- xgroove~, xplay~: added linear interpolation (message "interp 2")
-- enabled 0 output channels -> xgroove~: position output only
-- xgroove~: added bidirectional looping (message "loop 2")
-
-0.2.2:
-- using flext 0.2.0
-- xrecord~ for PD: new flext brings better graphics update behavior
-- xrecord~: recording position doesn't jump to start when recording length is reached
-- fixed bug with refresh message (min/max reset)
-- xgroove~: position (by pos message) isn't sample rounded anymore
-- reset/refresh messages readjust dsp routines to current buffer format (e.g. channel count)
-- corrected Max/MSP assist method for multi-channel
-- fixed xplay~ help method
-- changed syntax to x*~ [channels=1] [buffer] for future enhancements (MaxMSP only, warning for old syntax)
-- fixed small bug concerning startup position in xgroove~ and xrecord~
-- fixed deadly bug in xplay~ dsp code (only active with template optimization)
-
-0.2.1:
-- no leftmost float inlet for position setting - use pos method
-- changed dsp handling for flext 0.1.1 conformance
-- workarounds for buggy/incomplete compilers
-- prevent buffer warning message at patcher load (wait for loadbang)
-- fixed bug: current pos is reset when changing min or max points
-
-0.2.0:
-- first version for flext
-
----------------------------------------------------------------------------
-
-TODO list:
-
-features:
-- multi-buffer handling (aka multi-channel for pd)
-- anti-alias filter? (possible?)
-
-- delay min/max changes when cur pos in cross-fade zone
-
-bugs:
-- PD: problems with timed buffer redrawing (takes a lot of cpu time) - flext bug?
-- Max help files aren't correctly opened due to xsample objects residing in a library (FIXED for OSX!!!)
diff --git a/externals/grill/xsample/source/groove.cpp b/externals/grill/xsample/source/groove.cpp
deleted file mode 100644
index c989156e..00000000
--- a/externals/grill/xsample/source/groove.cpp
+++ /dev/null
@@ -1,810 +0,0 @@
-/*
-xsample - extended sample objects for Max/MSP and pd (pure data)
-
-Copyright (c) 2001-2007 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-*/
-
-#ifdef _MSC_VER
-#define _USE_MATH_DEFINES
-#endif
-
-#include "main.h"
-#include <math.h>
-#include <stdio.h>
-
-#ifdef _MSC_VER
-#pragma warning (disable:4244)
-#endif
-
-#ifndef M_PI
-#define M_PI 3.141592653589793238462643383
-#endif
-
-#define XZONE_TABLE 512
-
-
-class xgroove:
- public xinter
-{
- FLEXT_HEADER_S(xgroove,xinter,setup)
-
-public:
- xgroove(int argc,const t_atom *argv);
- virtual ~xgroove();
-
- void m_pos(float pos)
- {
- setpos(LIKELY(s2u)?pos/s2u:0);
- Update(xsc_pos,true);
- }
-
- inline void m_posmod(float pos) { setposmod(LIKELY(pos)?pos/s2u:0); } // motivated by Tim Blechmann
-
- inline void mg_pos(float &v) const { v = curpos*s2u; }
-
-
- enum xs_fade {
- xsf_keeplooppos = 0,xsf_keeplooplen,xsf_keepfade,xsf_inside
- };
-
- enum xs_shape {
- xss_lin = 0,xss_qsine,xss_hsine
- };
-
-
- void ms_xfade(int xf)
- {
- if(xf < 0 || xf > xsf_inside) xf = xsf_keeplooppos;
- xfade = (xs_fade)xf;
- Update(xsc_fade,true);
- }
-
- void ms_xshape(int sh);
-
- void ms_xzone(float xz);
- void mg_xzone(float &xz) { xz = _xzone*s2u; }
-
- void m_loop(xs_loop lp)
- {
- loopmode = lp,bidir = 1;
- Update(xsc_loop,true);
- }
-
-protected:
-
- double curpos; // in samples
- float bidir; // +1 or -1
-
- float _xzone,xzone;
- long znsmin,znsmax;
- xs_fade xfade;
- int xshape;
- t_sample **znbuf;
- t_sample *znpos,*znmul,*znidx;
- int pblksz;
-
- inline void setpos(double pos)
- {
- if(UNLIKELY(pos < znsmin)) curpos = znsmin;
- else if(UNLIKELY(pos > znsmax)) curpos = znsmax;
- else curpos = pos;
- }
-
- inline void setposmod(double pos)
- {
- if(pos >= 0)
- curpos = znsmin+fmod(pos,znsmax-znsmin);
- else
- curpos = znsmax+fmod(pos,znsmax-znsmin);
- }
-
- virtual void DoReset();
- virtual void DoUpdate(unsigned int flags);
-
- virtual void CbSignal();
-
- virtual void m_help();
- virtual void m_print();
-
-private:
- static void setup(t_classid c);
-
- //! return true if something has changed
- bool do_xzone();
-
- DEFSIGFUN(s_pos_off);
- DEFSIGFUN(s_pos_once);
- DEFSIGFUN(s_pos_loop);
- DEFSIGFUN(s_pos_loopzn);
- DEFSIGFUN(s_pos_bidir);
-
- DEFSIGCALL(posfun);
- DEFSTCALL(zonefun);
-
- static t_sample fade_lin[],fade_qsine[],fade_hsine[];
-
- FLEXT_CALLBACK_F(m_pos)
- FLEXT_CALLBACK_F(m_posmod)
- FLEXT_CALLBACK_F(m_min)
- FLEXT_CALLBACK_F(m_max)
- FLEXT_CALLBACK(m_all)
-
- FLEXT_CALLSET_E(m_loop,xs_loop)
-
- FLEXT_CALLSET_I(ms_xfade)
- FLEXT_ATTRGET_I(xfade)
- FLEXT_CALLSET_I(ms_xshape)
- FLEXT_ATTRGET_I(xshape)
- FLEXT_CALLSET_F(ms_xzone)
- FLEXT_CALLGET_F(mg_xzone)
-
- FLEXT_CALLVAR_F(mg_pos,m_pos)
- FLEXT_CALLSET_F(m_min)
- FLEXT_CALLSET_F(m_max)
-};
-
-
-FLEXT_LIB_DSP_V("xgroove~",xgroove)
-
-
-t_sample xgroove::fade_lin[XZONE_TABLE+1];
-t_sample xgroove::fade_qsine[XZONE_TABLE+1];
-t_sample xgroove::fade_hsine[XZONE_TABLE+1];
-
-void xgroove::setup(t_classid c)
-{
- DefineHelp(c,"xgroove~");
-
- FLEXT_CADDMETHOD_(c,0,"all",m_all);
- FLEXT_CADDMETHOD(c,1,m_min);
- FLEXT_CADDMETHOD(c,2,m_max);
-
- FLEXT_CADDATTR_VAR(c,"min",mg_min,m_min);
- FLEXT_CADDATTR_VAR(c,"max",mg_max,m_max);
- FLEXT_CADDATTR_VAR(c,"pos",mg_pos,m_pos);
- FLEXT_CADDMETHOD_(c,0,"posmod",m_posmod);
-
- FLEXT_CADDATTR_VAR_E(c,"loop",loopmode,m_loop);
-
- FLEXT_CADDATTR_VAR(c,"xfade",xfade,ms_xfade);
- FLEXT_CADDATTR_VAR(c,"xzone",mg_xzone,ms_xzone);
- FLEXT_CADDATTR_VAR(c,"xshape",xshape,ms_xshape);
-
- // initialize fade tables
- for(int i = 0; i <= XZONE_TABLE; ++i) {
- const float x = i*(1.f/XZONE_TABLE);
- // linear
- fade_lin[i] = x;
-
- // quarter sine wave
- fade_qsine[i] = sin(x*(M_PI/2));
-
- // half sine wave
- fade_hsine[i] = (sin(x*M_PI-M_PI/2)+1.f)*0.5f;
- }
-}
-
-xgroove::xgroove(int argc,const t_atom *argv):
- curpos(0),bidir(1),
- _xzone(0),xzone(0),
- xfade(xsf_keeplooppos),xshape(xss_lin),
- znpos(NULL),znmul(NULL),znidx(NULL),
- pblksz(0)
-{
- int argi = 0;
-#if FLEXT_SYS == FLEXT_SYS_MAX
- if(argc > argi && CanbeInt(argv[argi])) {
- outchns = GetAInt(argv[argi]);
- argi++;
- }
-#endif
-
- if(argc > argi && IsSymbol(argv[argi])) {
-
- buf.Set(GetSymbol(argv[argi]),true);
- argi++;
-
-#if FLEXT_SYS == FLEXT_SYS_MAX
- // old-style command line?
- if(UNLIKELY(argi == 1 && argc == 2 && CanbeInt(argv[argi]))) {
- outchns = GetAInt(argv[argi]);
- argi++;
- post("%s: old style command line detected - please change to '%s [channels] [buffer]'",thisName(),thisName());
- }
-#endif
- }
-
- AddInSignal("Signal of playing speed"); // speed signal
- AddInFloat("Starting point"); // min play pos
- AddInFloat("Ending point"); // max play pos
- for(int ci = 0; ci < outchns; ++ci) {
- char tmp[30];
- STD::sprintf(tmp,"Audio signal channel %i",ci+1);
- AddOutSignal(tmp); // output
- }
- AddOutSignal("Position currently played"); // position
- AddOutFloat("Starting point (rounded to frame)"); // play min
- AddOutFloat("Ending point (rounded to frame)"); // play max
- AddOutBang("Bang on loop end/rollover"); // loop bang
-
- // don't know vector size yet -> wait for m_dsp
- znbuf = new t_sample *[outchns];
- for(int i = 0; i < outchns; ++i) znbuf[i] = NULL;
-
- // initialize crossfade shape
- ms_xshape(xshape);
-}
-
-xgroove::~xgroove()
-{
- if(znbuf) {
- for(int i = 0; i < outchns; ++i) if(znbuf[i]) FreeAligned(znbuf[i]);
- delete[] znbuf;
- }
-
- if(znpos) FreeAligned(znpos);
- if(znidx) FreeAligned(znidx);
-}
-
-void xgroove::DoReset()
-{
- xinter::DoReset();
- curpos = 0;
- bidir = 1;
-}
-
-void xgroove::ms_xzone(float xz)
-{
- ChkBuffer(true);
-
- _xzone = (UNLIKELY(xz < 0) || UNLIKELY(!s2u))?0:xz/s2u;
- Update(xsc_fade,true);
-}
-
-void xgroove::ms_xshape(int sh)
-{
- if(UNLIKELY(sh < 0) || UNLIKELY(sh > xss_hsine)) sh = xss_lin;
-
- xshape = (xs_shape)sh;
- switch(xshape) {
- case xss_qsine: znmul = fade_qsine; break;
- case xss_hsine: znmul = fade_hsine; break;
- default:
- post("%s - shape parameter invalid, set to linear",thisName());
- case xss_lin:
- znmul = fade_lin; break;
- }
-
- // no need to recalc the fade zone here
-}
-
-
-void xgroove::s_pos_off(int n,t_sample *const *invecs,t_sample *const *outvecs)
-{
- t_sample *pos = outvecs[outchns];
-
- SetSamples(pos,n,curpos);
-
- playfun(n,&pos,outvecs);
-
- SetSamples(pos,n,scale(curpos));
-}
-
-void xgroove::s_pos_once(int n,t_sample *const *invecs,t_sample *const *outvecs)
-{
- const t_sample *speed = invecs[0];
- t_sample *pos = outvecs[outchns];
- bool lpbang = false;
-
- const double smin = curmin,smax = curmax,plen = smax-smin;
-
- if(LIKELY(plen > 0)) {
- register double o = curpos;
-
- for(int i = 0; i < n; ++i) {
- const t_sample spd = speed[i]; // must be first because the vector is reused for output!
-
- if(UNLIKELY(!(o < smax))) { o = smax; lpbang = true; }
- else if(UNLIKELY(o < smin)) { o = smin; lpbang = true; }
-
- pos[i] = o;
- o += spd;
- }
- // normalize and store current playing position
- setpos(o);
-
- playfun(n,&pos,outvecs);
-
- arrscale(n,pos,pos);
- }
- else
- s_pos_off(n,invecs,outvecs);
-
- if(UNLIKELY(lpbang)) {
- doplay = false;
- ToOutBang(outchns+3);
- }
-}
-
-void xgroove::s_pos_loop(int n,t_sample *const *invecs,t_sample *const *outvecs)
-{
- const t_sample *speed = invecs[0];
- t_sample *pos = outvecs[outchns];
- bool lpbang = false;
-
-#ifdef __VEC__
- // prefetch cache
- vec_dst(speed,GetPrefetchConstant(1,n>>2,0),0);
-#endif
-
- const double smin = curmin,smax = curmax,plen = smax-smin;
-
- if(LIKELY(plen > 0)) {
- register double o = curpos;
-
- if(wrap && UNLIKELY(smin < 0) && UNLIKELY(smax >= buf.Frames())) {
- for(int i = 0; i < n; ++i) {
- const t_sample spd = speed[i]; // must be first because the vector is reused for output!
-
- // normalize offset
- if(UNLIKELY(!(o < smax))) { // faster than o >= smax
- o = fmod(o-smin,plen)+smin;
- lpbang = true;
- }
- else if(UNLIKELY(o < smin)) {
- o = fmod(o-smin,plen)+smax;
- lpbang = true;
- }
-
- // TODO normalize to 0...buf.Frames()
- pos[i] = o;
- o += spd;
- }
- }
- else {
- ///////////////////////////////////
- // Most of the time is spent in here
- ///////////////////////////////////
- for(int i = 0; i < n; ++i) {
- const t_sample spd = speed[i]; // must be first because the vector is reused for output!
-
- // normalize offset
- if(UNLIKELY(!(o < smax))) { // faster than o >= smax
- o = fmod(o-smin,plen)+smin;
- lpbang = true;
- }
- else if(UNLIKELY(o < smin)) {
- o = fmod(o-smin,plen)+smax;
- lpbang = true;
- }
-
- pos[i] = o;
- o += spd;
- }
- }
-
- // normalize and store current playing position
- setpos(o);
-
- playfun(n,&pos,outvecs);
-
- arrscale(n,pos,pos);
- }
- else
- s_pos_off(n,invecs,outvecs);
-
-#ifdef __VEC__
- vec_dss(0);
-#endif
-
- if(UNLIKELY(lpbang)) ToOutBang(outchns+3);
-}
-
-void xgroove::s_pos_loopzn(int n,t_sample *const *invecs,t_sample *const *outvecs)
-{
- const t_sample *speed = invecs[0];
- t_sample *pos = outvecs[outchns];
- bool lpbang = false;
-
- FLEXT_ASSERT(xzone);
-
- const float xz = xzone,xf = (float)XZONE_TABLE/xz;
-
- // adapt the playing bounds to the current cross-fade zone
- const long smin = znsmin,smax = znsmax,plen = smax-smin;
-
- // temporary storage
- const long cmin = curmin,cmax = curmax;
- // hack -> set curmin/curmax to loop extremes so that sampling functions (playfun) don't get confused
- curmin = smin,curmax = smax;
-
- if(LIKELY(plen > 0)) {
- bool inzn = false;
- register double o = curpos;
-
- // calculate inner cross-fade boundaries
- const double lmin = smin+xz,lmax = smax-xz,lsh = lmax-lmin+xz;
- const double lmin2 = lmin-xz/2,lmax2 = lmax+xz/2;
-
- for(int i = 0; i < n; ++i) {
- // normalize offset
- if(UNLIKELY(o < smin)) {
- o = fmod(o-smin,plen)+smax;
- lpbang = true;
- }
- else if(UNLIKELY(!(o < smax))) {
- o = fmod(o-smin,plen)+smin;
- lpbang = true;
- }
-
- if(UNLIKELY(o < lmin)) {
- register float inp;
- if(o < lmin2) {
- // in first half of early cross-fade zone
- // this happens only once, then the offset is normalized to the end
- // of the loop (before mid of late crossfade)
-
- o += lsh;
- // now lmax <= o <= lmax2
- lpbang = true;
-
- inp = xz-(float)(o-lmax); // 0 <= inp < xz
- znpos[i] = lmin-inp;
- }
- else {
- // in second half of early cross-fade zone
-
- inp = xz+(float)(o-lmin); // 0 <= inp < xz
- znpos[i] = lmax+inp;
- }
- znidx[i] = inp*xf;
- inzn = true;
- }
- else if(UNLIKELY(!(o < lmax))) {
- register float inp;
- if(!(o < lmax2)) {
- // in second half of late cross-fade zone
- // this happens only once, then the offset is normalized to the beginning
- // of the loop (after mid of early crossfade)
- o -= lsh;
- // now lmin2 <= o <= lmin
- lpbang = true;
-
- inp = xz+(float)(o-lmin); // 0 <= inp < xz
- znpos[i] = lmax+inp;
- }
- else {
- // in first half of late cross-fade zone
- inp = xz-(float)(o-lmax); // 0 <= inp < xz
- znpos[i] = lmin-inp;
- }
- znidx[i] = inp*xf;
- inzn = true;
- }
- else
- znidx[i] = XZONE_TABLE,znpos[i] = 0;
-
- const t_sample spd = speed[i]; // must be first because the vector is reused for output!
- pos[i] = o;
- o += spd;
- }
-
- // normalize and store current playing position
- setpos(o);
-
- // calculate samples (1st voice)
- playfun(n,&pos,outvecs);
-
- // rescale position vector
- arrscale(n,pos,pos);
-
- if(UNLIKELY(inzn)) {
- // only if we have touched the cross-fade zone
-
- // calculate samples in loop zone (2nd voice)
- playfun(n,&znpos,znbuf);
-
- // calculate counterpart in loop fade
- arrscale(n,znidx,znpos,XZONE_TABLE,-1);
-
- // calculate fade coefficients by sampling from the fade curve
- zonefun(znmul,0,XZONE_TABLE+1,n,1,1,&znidx,&znidx,false);
- zonefun(znmul,0,XZONE_TABLE+1,n,1,1,&znpos,&znpos,false);
-
- // mix voices for all channels
- for(int o = 0; o < outchns; ++o) {
- MulSamples(outvecs[o],outvecs[o],znidx,n);
- MulSamples(znbuf[o],znbuf[o],znpos,n);
- AddSamples(outvecs[o],outvecs[o],znbuf[o],n);
- }
- }
- }
- else
- s_pos_off(n,invecs,outvecs);
-
- curmin = cmin,curmax = cmax;
-
- if(UNLIKELY(lpbang)) ToOutBang(outchns+3);
-}
-
-void xgroove::s_pos_bidir(int n,t_sample *const *invecs,t_sample *const *outvecs)
-{
- const t_sample *speed = invecs[0];
- t_sample *pos = outvecs[outchns];
- bool lpbang = false;
-
- const int smin = curmin,smax = curmax,plen = smax-smin;
-
- if(LIKELY(plen > 0)) {
- register double o = curpos;
- register float bd = bidir;
-
- for(int i = 0; i < n; ++i) {
- const t_sample spd = speed[i]; // must be first because the vector is reused for output!
-
- // normalize offset
- // \todo at the moment fmod doesn't take bidirectionality into account!!
- if(UNLIKELY(!(o < smax))) {
- o = smax-fmod(o-smax,plen); // mirror the position at smax
- bd = -bd;
- lpbang = true;
- }
- else if(UNLIKELY(o < smin)) {
- o = smin+fmod(smin-o,plen); // mirror the position at smin
- bd = -bd;
- lpbang = true;
- }
-
- pos[i] = o;
- o += spd*bd;
- }
- // normalize and store current playing position
- setpos(o);
-
- bidir = bd;
- playfun(n,&pos,outvecs);
-
- arrscale(n,pos,pos);
- }
- else
- s_pos_off(n,invecs,outvecs);
-
- if(UNLIKELY(lpbang)) ToOutBang(outchns+3);
-}
-
-void xgroove::CbSignal()
-{
- int ret = ChkBuffer(true);
-
- if(LIKELY(ret)) {
- FLEXT_ASSERT(buf.Valid());
-
- const lock_t l = Lock();
- posfun(Blocksize(),InSig(),OutSig());
- Unlock(l);
-
- Refresh();
- }
- else
- zerofun(Blocksize(),InSig(),OutSig());
-}
-
-
-void xgroove::DoUpdate(unsigned int flags)
-{
- xinter::DoUpdate(flags);
-
- if(flags&xsc_range) {
- // output new range
- ToOutFloat(outchns+1,curmin*s2u);
- ToOutFloat(outchns+2,curmax*s2u);
- }
-
- if(flags&(xsc_fade|xsc_range))
- if(do_xzone()) flags |= xsc_play;
-
- if(flags&(xsc_pos|xsc_range))
- // normalize position
- setpos(curpos);
-
- // loop zone must already be set
- if(flags&xsc_play) {
- if(doplay) {
- switch(loopmode) {
- case xsl_once:
- SETSIGFUN(posfun,SIGFUN(s_pos_once));
- break;
- case xsl_loop:
- if(xzone > 0) {
- const int blksz = Blocksize();
-
- if(pblksz != blksz) {
- for(int o = 0; o < outchns; ++o) {
- if(znbuf[o]) FreeAligned(znbuf[o]);
- znbuf[o] = (t_sample *)NewAligned(blksz*sizeof(t_sample));
- }
-
- if(znpos) FreeAligned(znpos);
- znpos = (t_sample *)NewAligned(blksz*sizeof(t_sample));
- if(znidx) FreeAligned(znidx);
- znidx = (t_sample *)NewAligned(blksz*sizeof(t_sample));
-
- pblksz = blksz;
- }
-
- SETSIGFUN(posfun,SIGFUN(s_pos_loopzn));
-
- // linear interpolation should be just ok for fade zone, no?
- switch(outchns) {
- case 1: SETSTFUN(zonefun,TMPLSTF(st_play2,1,1)); break;
- case 2: SETSTFUN(zonefun,TMPLSTF(st_play2,1,2)); break;
- case 4: SETSTFUN(zonefun,TMPLSTF(st_play2,1,4)); break;
- default: SETSTFUN(zonefun,TMPLSTF(st_play2,1,-1));
- }
- }
- else
- SETSIGFUN(posfun,SIGFUN(s_pos_loop));
- break;
- case xsl_bidir:
- SETSIGFUN(posfun,SIGFUN(s_pos_bidir));
- break;
- default: ; // just to prevent warning
- }
- }
- else
- SETSIGFUN(posfun,SIGFUN(s_pos_off));
- }
-}
-
-bool xgroove::do_xzone()
-{
- // \todo do we really need this?
- if(UNLIKELY(!s2u)) return false; // this can happen if DSP is off
-
- const long frames = buf.Frames();
- if(UNLIKELY(!frames)) return false;
-
- xzone = _xzone; // make a copy for changing it
-
- if(xfade == xsf_inside) {
- // fade zone goes inside the loop -> loop becomes shorter
-
- // \todo what about round-off?
- const long maxfd = (curmax-curmin)/2;
- if(xzone > maxfd) xzone = maxfd;
-
- znsmin = curmin,znsmax = curmax;
- }
- else if(xfade == xsf_keepfade) {
- // try to keep fade zone
- // change of loop bounds may happen
-
- // restrict xzone to half of buffer
- const long maxfd = frames/2;
- if(xzone > maxfd) xzone = maxfd;
-
- // \todo what about round-off?
- const long hzone = CASTINT<long>(xzone/2.f+0.5f);
- znsmin = curmin-hzone;
- znsmax = curmax+hzone;
-
- // widen loop if xzone doesn't fit into it
- // \todo check formula
- long lack = CASTINT<long>(ceil((xzone*2.f-(znsmax-znsmin))/2.f));
- if(lack > 0) znsmin -= lack,znsmax += lack;
-
- if(!wrap) {
- // check buffer limits and shift bounds if necessary
- if(znsmin < 0) {
- znsmax -= znsmin;
- znsmin = 0;
- }
- if(znsmax > frames)
- znsmax = frames;
- }
- }
- else if(xfade == xsf_keeplooplen) {
- // try to keep loop length
- // shifting of loop bounds may happen
-
- const long plen = curmax-curmin;
- if(xzone > plen) xzone = plen;
- const long maxfd = frames-plen;
- if(xzone > maxfd) xzone = maxfd;
-
- // \todo what about round-off?
- const long hzone = CASTINT<long>(xzone/2.f+0.5f);
- znsmin = curmin-hzone;
- znsmax = curmax+hzone;
-
- if(!wrap) {
- // check buffer limits and shift bounds if necessary
- // both cases can't happen because of xzone having been limited above
- if(znsmin < 0) {
- znsmax -= znsmin;
- znsmin = 0;
- }
- else if(znsmax > frames) {
- znsmin -= znsmax-frames;
- znsmax = frames;
- }
- }
- }
- else if(xfade == xsf_keeplooppos) {
- // try to keep loop position and length
-
- // restrict fade zone to maximum length
- const long plen = curmax-curmin;
- if(xzone > plen) xzone = plen;
-
- // \todo what about round-off?
- const long hzone = CASTINT<long>(xzone/2.f+0.5f);
- znsmin = curmin-hzone;
- znsmax = curmax+hzone;
-
- long ovr = znsmax-frames;
- if(-znsmin > ovr) ovr = -znsmin;
- if(ovr > 0) {
- znsmin += ovr;
- znsmax -= ovr;
- xzone -= ovr*2;
- }
- }
-
- FLEXT_ASSERT(znsmin <= znsmax && (znsmax-znsmin) >= xzone*2.f);
-
- return true;
-}
-
-
-void xgroove::m_help()
-{
- post("%s - part of xsample objects, version " XSAMPLE_VERSION,thisName());
- post("(C) Thomas Grill, 2001-2007");
-#if FLEXT_SYS == FLEXT_SYS_MAX
- post("Arguments: %s [channels=1] [buffer]",thisName());
-#else
- post("Arguments: %s [buffer]",thisName());
-#endif
- post("Inlets: 1:Messages/Speed signal, 2:Min position, 3:Max position");
- post("Outlets: 1:Audio signal, 2:Position signal, 3:Min position (rounded), 4:Max position (rounded)");
- post("Methods:");
- post("\thelp: shows this help");
- post("\tset [name] / @buffer [name]: set buffer or reinit");
- post("\tenable 0/1: turn dsp calculation off/on");
- post("\treset: reset min/max playing points and playing offset");
- post("\tprint: print current settings");
- post("\t@loop 0/1/2: sets looping to off/forward/bidirectional");
- post("\t@interp 0/1/2: set interpolation to off/4-point/linear");
- post("\t@min {unit}: set minimum playing point");
- post("\t@max {unit}: set maximum playing point");
- post("\tall: select entire buffer length");
- post("\tpos {unit}: set playing position (obeying the current scale mode)");
- post("\tposmod {unit}: set playing position (modulo into min/max range)");
- post("\tbang/start: start playing");
- post("\tstop: stop playing");
- post("\trefresh: checks buffer and refreshes outlets");
- post("\t@units 0/1/2/3: set units to frames/buffer size/ms/s");
- post("\t@sclmode 0/1/2/3: set range of position to units/units in loop/buffer/loop");
- post("\t@xzone {unit}: length of loop crossfade zone");
- post("\t@xfade 0/1/2/3: fade mode (keep loop/keep loop length/keep fade/inside loop)");
- post("\t@xshape 0/1/2: shape of crossfade (linear/quarter sine/half sine)");
- post("");
-}
-
-void xgroove::m_print()
-{
- static const char *sclmode_txt[] = {"units","units in loop","buffer","loop"};
- static const char *interp_txt[] = {"off","4-point","linear"};
- static const char *loop_txt[] = {"once","looping","bidir"};
-
- // print all current settings
- post("%s - current settings:",thisName());
- post("bufname = '%s', length = %.3f, channels = %i",buf.Name(),(float)(buf.Frames()*s2u),buf.Channels());
- post("out channels = %i, frames/unit = %.3f, scale mode = %s",outchns,(float)(1./s2u),sclmode_txt[sclmode]);
- post("loop = %s, interpolation = %s",loop_txt[(int)loopmode],interp_txt[interp >= xsi_none && interp <= xsi_lin?interp:xsi_none]);
- post("loop crossfade zone = %.3f",(float)(xzone*s2u));
- post("");
-}
diff --git a/externals/grill/xsample/source/inter.cpp b/externals/grill/xsample/source/inter.cpp
deleted file mode 100644
index 1f70b79f..00000000
--- a/externals/grill/xsample/source/inter.cpp
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
-xsample - extended sample objects for Max/MSP and pd (pure data)
-
-Copyright (c) 2001-2006 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-*/
-
-#include "main.h"
-#include <math.h>
-
-#ifdef _MSC_VER
-#pragma warning (disable:4244)
-#endif
-
-#ifndef TMPLOPT
-#include "inter.h"
-#endif
-
-void xinter::setup(t_classid c)
-{
- FLEXT_CADDBANG(c,0,m_start);
- FLEXT_CADDMETHOD_(c,0,"start",m_start);
- FLEXT_CADDMETHOD_(c,0,"stop",m_stop);
-
- FLEXT_CADDATTR_VAR_E(c,"interp",interp,m_interp);
-}
-
-void xinter::DoUpdate(unsigned int flags)
-{
- xsample::DoUpdate(flags);
-
- if(flags&xsc_play) {
- switch(outchns) {
- case 1: SETSIGFUN(zerofun,TMPLFUN(s_play0,-1,1)); break;
- case 2: SETSIGFUN(zerofun,TMPLFUN(s_play0,-1,2)); break;
- case 4: SETSIGFUN(zerofun,TMPLFUN(s_play0,-1,4)); break;
- default: SETSIGFUN(zerofun,TMPLFUN(s_play0,-1,-1));
- }
-
- if(doplay && buf.Ok()) {
- if(interp == xsi_4p)
- switch(buf.Channels()*1000+outchns) {
- case 1001: SETSIGFUN(playfun,TMPLFUN(s_play4,1,1)); break;
- case 1002: SETSIGFUN(playfun,TMPLFUN(s_play4,1,2)); break;
- case 2001: SETSIGFUN(playfun,TMPLFUN(s_play4,2,1)); break;
- case 2002: SETSIGFUN(playfun,TMPLFUN(s_play4,2,2)); break;
- case 4001:
- case 4002:
- case 4003: SETSIGFUN(playfun,TMPLFUN(s_play4,4,-1)); break;
- case 4004: SETSIGFUN(playfun,TMPLFUN(s_play4,4,4)); break;
- default: SETSIGFUN(playfun,TMPLFUN(s_play4,-1,-1));
- }
- else if(interp == xsi_lin)
- switch(buf.Channels()*1000+outchns) {
- case 1001: SETSIGFUN(playfun,TMPLFUN(s_play2,1,1)); break;
- case 1002: SETSIGFUN(playfun,TMPLFUN(s_play2,1,2)); break;
- case 2001: SETSIGFUN(playfun,TMPLFUN(s_play2,2,1)); break;
- case 2002: SETSIGFUN(playfun,TMPLFUN(s_play2,2,2)); break;
- case 4001:
- case 4002:
- case 4003: SETSIGFUN(playfun,TMPLFUN(s_play2,4,-1)); break;
- case 4004: SETSIGFUN(playfun,TMPLFUN(s_play2,4,4)); break;
- default: SETSIGFUN(playfun,TMPLFUN(s_play2,-1,-1));
- }
- else
- switch(buf.Channels()*1000+outchns) {
- case 1001: SETSIGFUN(playfun,TMPLFUN(s_play1,1,1)); break;
- case 1002: SETSIGFUN(playfun,TMPLFUN(s_play1,1,2)); break;
- case 2001: SETSIGFUN(playfun,TMPLFUN(s_play1,2,1)); break;
- case 2002: SETSIGFUN(playfun,TMPLFUN(s_play1,2,2)); break;
- case 4001:
- case 4002:
- case 4003: SETSIGFUN(playfun,TMPLFUN(s_play1,4,-1)); break;
- case 4004: SETSIGFUN(playfun,TMPLFUN(s_play1,4,4)); break;
- default: SETSIGFUN(playfun,TMPLFUN(s_play1,-1,-1));
- }
- }
- else
- SETSIGFUN(playfun,TMPLFUN(s_play0,-1,-1));
- }
-}
diff --git a/externals/grill/xsample/source/inter.h b/externals/grill/xsample/source/inter.h
deleted file mode 100644
index f8a0881b..00000000
--- a/externals/grill/xsample/source/inter.h
+++ /dev/null
@@ -1,420 +0,0 @@
-/*
-xsample - extended sample objects for Max/MSP and pd (pure data)
-
-Copyright (c) 2001-2006 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-*/
-
-#ifndef __INTER_H
-#define __INTER_H
-
-TMPLDEF void xinter::st_play0(const t_sample *,const int ,const int ,const int n,const int inchns,const int outchns,t_sample *const *invecs,t_sample *const *outvecs,bool looped)
-{
- // stopped/invalid buffer -> output zero
- for(int ci = 0; ci < outchns; ++ci) ZeroSamples(outvecs[ci],n);
-}
-
-TMPLDEF void xinter::st_play1(const t_sample *bdt,const int smin,const int smax,const int n,const int inchns,const int outchns,t_sample *const *invecs,t_sample *const *outvecs,bool looped)
-{
- SIGCHNS(BCHNS,inchns,OCHNS,outchns);
-
- // position info are frame units
- const t_sample *pos = invecs[0];
- t_sample *const *sig = outvecs;
-
- // no interpolation
- // ----------------
-
- if(UNLIKELY(smin == smax)) {
- // zero loop length -> assume that smin is a valid sample position...
-
- int ci;
- for(ci = 0; ci < OCHNS; ++ci) SetSamples(sig[ci],n,bdt[smin*BCHNS]);
- // clear rest of output channels (if buffer has less channels)
- for(; ci < outchns; ++ci) ZeroSamples(sig[ci],n);
- }
- else if(OCHNS == 1) {
- t_sample *sig0 = sig[0];
- for(int i = 0; i < n; ++i) {
- register long oint = CASTINT<long>(*(pos++));
-
- // for xplay oint can be out of bounds -> check
- if(LIKELY(oint >= smin))
- if(LIKELY(oint < smax)) {
- // normal
- *(sig0++) = bdt[oint*BCHNS];
- }
- else {
- // position > last sample ... take only last sample
- *(sig0++) = bdt[(smax-1)*BCHNS];
- }
- else {
- // position < 0 ... take only 0th sample
- *(sig0++) = bdt[smin*BCHNS];
- }
- }
- }
- else {
- for(int i = 0,si = 0; i < n; ++i,++si) {
- register long oint = CASTINT<long>(*(pos++));
- register const t_sample *fp;
-
- // for xplay oint can be out of bounds -> check
- if(LIKELY(oint >= smin))
- if(LIKELY(oint < smax)) {
- // normal
- fp = bdt+oint*BCHNS;
- }
- else {
- // position > last sample ... take only last sample
- fp = bdt+(smax-1)*BCHNS;
- }
- else {
- // position < 0 ... take only 0th sample
- fp = bdt+smin*BCHNS;
- }
-
- for(int ci = 0; ci < OCHNS; ++ci)
- sig[ci][si] = fp[ci];
- }
-
- // clear rest of output channels (if buffer has less channels)
- for(int ci = OCHNS; ci < outchns; ++ci) ZeroSamples(sig[ci],n);
- }
-}
-
-TMPLDEF void xinter::st_play2(const t_sample *bdt,const int smin,const int smax,const int n,const int inchns,const int outchns,t_sample *const *invecs,t_sample *const *outvecs,bool looped)
-{
- const int plen = smax-smin;
- if(UNLIKELY(plen < 2)) {
- st_play1 TMPLCALL (bdt,smin,smax,n,inchns,outchns,invecs,outvecs,looped);
- return;
- }
-
- SIGCHNS(BCHNS,inchns,OCHNS,outchns);
-
- // position info are frame units
- const t_sample *pos = invecs[0];
- t_sample *const *sig = outvecs;
-
- // linear interpolation
- // --------------------
-
- const int maxo = smax-1; // last sample in buffer
-
- if(OCHNS == 1) {
- t_sample *sig0 = sig[0];
- for(int i = 0; i < n; ++i) {
- const float o = *(pos++);
- register long oint = CASTINT<long>(o);
- const float frac = o-oint;
- t_sample fp0,fp1;
-
- if(LIKELY(oint >= smin))
- if(LIKELY(oint < maxo)) {
- // normal interpolation
- fp0 = bdt[oint*BCHNS];
- fp1 = bdt[(oint+1)*BCHNS];
- }
- else {
- // position is past last sample
- if(looped) {
- oint = smin+(oint-smin)%plen;
- fp0 = bdt[oint*BCHNS];
- fp1 = oint >= maxo?bdt[smin]:fp0;
- }
- else
- fp0 = fp1 = bdt[maxo*BCHNS];
- }
- else {
- // position is before first sample
- if(looped) {
- oint = smax-(smin-oint)%plen;
- fp0 = bdt[oint*BCHNS];
- fp1 = oint >= maxo?bdt[smin]:fp0;
- }
- else
- fp0 = fp1 = bdt[smin*BCHNS];
- }
-
- *(sig0++) = fp0+frac*(fp1-fp0);
- }
- }
- else {
- for(int i = 0,si = 0; i < n; ++i,++si) {
- const float o = *(pos++);
- register long oint = CASTINT<long>(o);
- const t_sample *fp0,*fp1;
- const float frac = o-oint;
-
- if(LIKELY(oint >= smin))
- if(LIKELY(oint < maxo)) {
- // normal interpolation
- fp0 = bdt+oint*BCHNS;
- fp1 = fp0+BCHNS;
- }
- else {
- // position is past last sample
- if(looped) {
- oint = smin+(oint-smin)%plen;
- fp0 = bdt+oint*BCHNS;
- fp1 = oint >= maxo?bdt+smin:fp0;
- }
- else
- fp0 = fp1 = bdt+maxo*BCHNS;
- }
- else {
- // position is before first sample
- if(looped) {
- oint = smax-(smin-oint)%plen;
- fp0 = bdt+oint*BCHNS;
- fp1 = oint >= maxo?bdt+smin:fp0;
- }
- else
- fp0 = fp1 = bdt+smin*BCHNS;
- }
-
- for(int ci = 0; ci < OCHNS; ++ci)
- sig[ci][si] = fp0[ci]+frac*(fp1[ci]-fp0[ci]);
- }
-
- // clear rest of output channels (if buffer has less channels)
- for(int ci = OCHNS; ci < outchns; ++ci) ZeroSamples(sig[ci],n);
- }
-}
-
-TMPLDEF void xinter::st_play4(const t_sample *bdt,const int smin,const int smax,const int n,const int inchns,const int outchns,t_sample *const *invecs,t_sample *const *outvecs,bool looped)
-{
- const int plen = smax-smin; //curlen;
- if(UNLIKELY(plen < 4)) {
- if(plen < 2) st_play1 TMPLCALL (bdt,smin,smax,n,inchns,outchns,invecs,outvecs,looped);
- else st_play2 TMPLCALL (bdt,smin,smax,n,inchns,outchns,invecs,outvecs,looped);
- return;
- }
-
- SIGCHNS(BCHNS,inchns,OCHNS,outchns);
-
- // position info are frame units
- const t_sample *pos = invecs[0];
- t_sample *const *sig = outvecs;
-
- // 4-point interpolation
- // ---------------------
- const int maxo = smax-1; // last sample in play region
-
- if(OCHNS == 1) {
- t_sample *sig0 = sig[0];
- for(int i = 0; i < n; ++i) {
- float o = pos[i];
- register long oint = CASTINT<long>(o);
- register t_sample fa,fb,fc,fd;
- const float frac = o-oint;
- register const t_sample *ptr = bdt+oint*BCHNS;
-
- if(LIKELY(oint > smin)) {
- if(LIKELY(oint < maxo-2)) {
- // normal case
- fa = ptr[-BCHNS];
- fb = ptr[0];
- fc = ptr[BCHNS];
- fd = ptr[BCHNS*2];
- }
- else {
- // not enough space at the end
-
- if(looped) {
- // normalize position
- oint = smin+(oint-smin)%plen;
- goto looped1;
- }
- else {
- // last sample is outside in any case
- fd = bdt[maxo*BCHNS];
-
- if(oint-1 >= maxo)
- // if first is outside, all are outside
- fa = fb = fc = fd;
- else {
- fa = ptr[-BCHNS];
- if(oint >= maxo)
- fb = fc = fd;
- else {
- fb = ptr[0];
- fc = oint+1 < maxo?ptr[BCHNS]:fd;
- }
- }
- }
- }
- }
- else {
- // not enough space at the beginning
-
- if(looped) {
- // normalize position
- oint = smax-(smin-oint)%plen;
-looped1:
- ptr = bdt+oint*BCHNS;
-
- // inside in any case
- fb = ptr[0];
-
- if(oint < maxo-1) {
- fa = oint > smin?ptr[-BCHNS]:bdt[maxo*BCHNS];
- fc = ptr[BCHNS];
- fd = ptr[BCHNS*2];
- }
- else {
- fa = ptr[-BCHNS];
- fc = oint < maxo?ptr[BCHNS]:ptr[(1-plen)*BCHNS];
- fd = ptr[(2-plen)*BCHNS];
- }
- }
- else {
- // first sample is outside in any case
- fa = bdt[smin*BCHNS];
-
- if(oint+2 < smin)
- // if last is outside, all are outside
- fb = fc = fd = fa;
- else {
- fd = ptr[BCHNS*2];
- if(oint+1 < smin)
- fb = fc = fa;
- else {
- fc = ptr[BCHNS];
- fb = oint < smin?fa:ptr[0];
- }
- }
- }
- }
-
- const float f1 = frac*0.5f-0.5f;
- const float f3 = frac*3.0f-1.0f;
-
- const float amdf = (fa-fd)*frac;
- const float cmb = fc-fb;
- const float bma = fb-fa;
- sig0[i] = fb + frac*( cmb - f1 * ( amdf+bma+cmb*f3 ) );
- }
- }
- else {
- for(int i = 0,si = 0; i < n; ++i,++si) {
- float o = *(pos++);
- register long oint = CASTINT<long>(o);
- const float frac = o-oint;
- register const t_sample *ptr = bdt+oint*BCHNS;
- register const t_sample *fa,*fb,*fc,*fd;
-
- if(LIKELY(oint > smin))
- if(LIKELY(oint < maxo-2)) {
- // normal case
- fb = ptr;
- fa = fb-BCHNS;
- fc = fb+BCHNS;
- fd = fc+BCHNS;
- }
- else {
- // not enough space at the end
-
- if(looped) {
- // normalize position
- oint = smin+(oint-smin)%plen;
- goto looped2;
- }
- else {
- // last sample is outside in any case
- fd = bdt+maxo*BCHNS;
-
- if(oint-1 >= maxo)
- // if first is outside, all are outside
- fa = fb = fc = fd;
- else {
- fa = ptr-BCHNS;
- if(oint >= maxo)
- fb = fc = fd;
- else {
- fb = ptr;
- fc = oint+1 < maxo?ptr+BCHNS:fd;
- }
- }
- }
- }
- else {
- // not enough space at the beginning
-
- if(looped) {
- // normalize position
- oint = smax-(smin-oint)%plen;
-looped2:
- // inside in any case
- fb = bdt+oint*BCHNS;
-
- if(oint < maxo-1) {
- fa = oint > smin?fb-BCHNS:bdt+maxo*BCHNS;
- fc = fb+BCHNS;
- fd = fc+BCHNS;
- }
- else {
- fa = fb-BCHNS;
- fc = oint < maxo?fb+BCHNS:bdt+(oint-plen+1)*BCHNS;
- fd = bdt+(oint-plen+2)*BCHNS;
- }
- }
- else {
- // first sample is outside in any case
- fa = bdt+smin*BCHNS;
-
- if(oint+2 < smin)
- // if last is outside, all are outside
- fb = fc = fd = fa;
- else {
- fd = ptr+BCHNS*2;
- if(oint+1 < smin)
- fb = fc = fa;
- else {
- fc = ptr+BCHNS;
- fb = oint < smin?fa:ptr;
- }
- }
- }
- }
-
- const float f1 = 0.5f*(frac-1.0f);
- const float f3 = frac*3.0f-1.0f;
-
- for(int ci = 0; ci < OCHNS; ++ci) {
- const float amdf = (fa[ci]-fd[ci])*frac;
- const float cmb = fc[ci]-fb[ci];
- const float bma = fb[ci]-fa[ci];
- sig[ci][si] = fb[ci] + frac*( cmb - f1 * ( amdf+bma+cmb*f3 ) );
- }
- }
-
- // clear rest of output channels (if buffer has less channels)
- for(int ci = OCHNS; ci < outchns; ++ci) ZeroSamples(sig[ci],n);
- }
-}
-
-
-TMPLDEF inline void xinter::s_play0(int n,t_sample *const *invecs,t_sample *const *outvecs)
-{
- st_play0 TMPLCALL (buf.Data(),curmin,curmax,n,buf.Channels(),outchns,invecs,outvecs,loopmode == xsl_loop);
-}
-
-TMPLDEF inline void xinter::s_play1(int n,t_sample *const *invecs,t_sample *const *outvecs)
-{
- st_play1 TMPLCALL (buf.Data(),curmin,curmax,n,buf.Channels(),outchns,invecs,outvecs,loopmode == xsl_loop);
-}
-
-TMPLDEF inline void xinter::s_play2(int n,t_sample *const *invecs,t_sample *const *outvecs)
-{
- st_play2 TMPLCALL (buf.Data(),curmin,curmax,n,buf.Channels(),outchns,invecs,outvecs,loopmode == xsl_loop);
-}
-
-TMPLDEF inline void xinter::s_play4(int n,t_sample *const *invecs,t_sample *const *outvecs)
-{
- st_play4 TMPLCALL (buf.Data(),curmin,curmax,n,buf.Channels(),outchns,invecs,outvecs,loopmode == xsl_loop);
-}
-
-#endif
diff --git a/externals/grill/xsample/source/main.cpp b/externals/grill/xsample/source/main.cpp
deleted file mode 100644
index 025352a3..00000000
--- a/externals/grill/xsample/source/main.cpp
+++ /dev/null
@@ -1,220 +0,0 @@
-/*
-xsample - extended sample objects for Max/MSP and pd (pure data)
-
-Copyright (c) 2001-2007 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-*/
-
-#include "main.h"
-
-
-// Initialization function for xsample library
-static void xsample_main()
-{
- flext::post("-------------------------------");
- flext::post("xsample objects, version " XSAMPLE_VERSION);
- flext::post("");
- flext::post(" xrecord~, xplay~, xgroove~ ");
- flext::post(" (C)2001-2007 Thomas Grill ");
-#ifdef FLEXT_DEBUG
- flext::post("");
- flext::post("DEBUG BUILD - " __DATE__ " " __TIME__);
-#endif
- flext::post("-------------------------------");
-
- // call the objects' setup routines
- FLEXT_DSP_SETUP(xrecord);
- FLEXT_DSP_SETUP(xplay);
- FLEXT_DSP_SETUP(xgroove);
-}
-
-// setup the library
-FLEXT_LIB_SETUP(xsample,xsample_main)
-
-// ------------------------------
-
-void xsample::setup(t_classid c)
-{
- FLEXT_CADDMETHOD_(c,0,"help",m_help);
- FLEXT_CADDMETHOD_(c,0,"set",m_set);
- FLEXT_CADDMETHOD_(c,0,"print",m_print);
- FLEXT_CADDMETHOD_(c,0,"refresh",m_refresh);
- FLEXT_CADDMETHOD_(c,0,"reset",m_reset);
-
- FLEXT_CADDATTR_VAR(c,"buffer",mg_buffer,ms_buffer);
- FLEXT_CADDATTR_VAR_E(c,"units",unitmode,m_units);
- FLEXT_CADDATTR_VAR_E(c,"sclmode",sclmode,m_sclmode);
- FLEXT_CADDATTR_GET(c,"scale",s2u);
-}
-
-xsample::xsample():
- update(xsc_all),wrap(false),
-#if FLEXT_SYS == FLEXT_SYS_MAX
- unitmode(xsu_ms), // Max/MSP defaults to milliseconds
-#else
- unitmode(xsu_sample), // PD defaults to samples
-#endif
- sclmode(xss_unitsinbuf),
- curmin(0),curmax(1L<<(sizeof(curmax)*8-2))
-{}
-
-xsample::~xsample() {}
-
-bool xsample::Finalize()
-{
- if(!flext_dsp::Finalize()) return false;
-
- // flags have been set in constructor
- Refresh();
- return true;
-}
-
-int xsample::ChkBuffer(bool refresh)
-{
- if(!buf.Ok()) return 0;
-
- if(UNLIKELY(buf.Update())) {
-#ifdef FLEXT_DEBUG
- post("%s - buffer update!",thisName());
-#endif
- Update(xsc_buffer);
- if(refresh) {
- Refresh();
- return buf.Ok() && buf.Valid()?1:0;
- }
- else
- return buf.Valid()?1:0;
- }
- else
- return buf.Valid()?-1:0;
-}
-
-/* called after all buffer objects have been created in the patch */
-void xsample::CbLoadbang()
-{
- ChkBuffer(true);
-}
-
-void xsample::m_set(int argc,const t_atom *argv)
-{
- const t_symbol *sym = argc >= 1?GetASymbol(argv[0]):NULL;
- int r = buf.Set(sym);
- if(LIKELY(sym) && UNLIKELY(r < 0))
- post("%s - can't find buffer %s",thisName(),GetString(sym));
- Update(xsc_buffer,true);
-}
-
-void xsample::m_min(float mn)
-{
- int ret = ChkBuffer(true);
-
- if(LIKELY(ret) && LIKELY(s2u)) {
- long cmn = CASTINT<long>(mn/s2u+0.5f); // conversion to samples
-
- if(UNLIKELY(cmn < 0))
- curmin = 0;
- else if(UNLIKELY(cmn > curmax))
- curmin = curmax;
- else
- curmin = cmn;
-
- Update(xsc_range,true);
- }
-}
-
-void xsample::m_max(float mx)
-{
- int ret = ChkBuffer(true);
-
- if(LIKELY(ret) && LIKELY(s2u)) {
- long cmx = CASTINT<long>(mx/s2u+0.5f); // conversion to samples
-
- if(UNLIKELY(cmx > buf.Frames()))
- curmax = buf.Frames();
- else if(UNLIKELY(cmx < curmin))
- curmax = curmin;
- else
- curmax = cmx;
-
- Update(xsc_range,true);
- }
-}
-
-bool xsample::CbDsp()
-{
- // this is hopefully called at change of sample rate ?!
-
-#ifdef FLEXT_DEBUG
- post("%s - DSP reset!",thisName());
-#endif
-
- // for PD at least this is also called if a table has been deleted...
- // then we must reset the buffer
-
- Update(xsc_srate|xsc_buffer,true);
- return true;
-}
-
-void xsample::DoReset()
-{
- ResetRange();
-}
-
-void xsample::DoUpdate(unsigned int flags)
-{
- if(flags&xsc_buffer)
- buf.Set();
-
- if(flags&xsc_range && buf.Ok()) {
- const int f = buf.Frames();
-
- if(!wrap) {
- // normalize bounds
- if(curmin < 0) curmin = 0;
- else if(curmin > f) curmin = f;
-
- if(curmax > f) curmax = f;
- else if(curmax < curmin) curmax = curmin;
- }
- else
- // don't normalize
- if(curmax < curmin) curmax = curmin;
- }
-
- if(flags&xsc_units) {
- switch(unitmode) {
- case xsu_sample: // samples
- s2u = 1;
- break;
- case xsu_buffer: // buffer size
- s2u = buf.Ok() && buf.Frames()?1.f/buf.Frames():0;
- break;
- case xsu_ms: // ms
- s2u = 1000.f/Samplerate();
- break;
- case xsu_s: // s
- s2u = 1.f/Samplerate();
- break;
- default:
- post("%s - Unknown unit mode",thisName());
- }
-
- switch(sclmode) {
- case xss_unitsinbuf: // samples/units
- sclmin = 0; sclmul = s2u;
- break;
- case xss_unitsinloop: // samples/units from recmin to recmax
- sclmin = curmin; sclmul = s2u;
- break;
- case xss_buffer: // unity between 0 and buffer size
- sclmin = 0; sclmul = buf.Ok() && buf.Frames()?1.f/buf.Frames():0;
- break;
- case xss_loop: // unity between recmin and recmax
- sclmin = curmin; sclmul = curmin < curmax?1.f/(curmax-curmin):0;
- break;
- default:
- post("%s - Unknown scale mode",thisName());
- }
- }
-}
diff --git a/externals/grill/xsample/source/main.h b/externals/grill/xsample/source/main.h
deleted file mode 100644
index 8cf39d7d..00000000
--- a/externals/grill/xsample/source/main.h
+++ /dev/null
@@ -1,464 +0,0 @@
-/*
-xsample - extended sample objects for Max/MSP and pd (pure data)
-
-Copyright (c) 2001-2006 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-*/
-
-#ifndef __XSAMPLE_H
-#define __XSAMPLE_H
-
-#include "prefix.h"
-
-#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 500)
-#error You need at least flext version 0.5.0
-#endif
-
-#define XSAMPLE_VERSION "0.3.2pre"
-
-extern "C++" {
-
-// most compilers are somehow broken - in other words - can't handle all C++ features
-
-#if defined(_MSC_VER)
-// MS VC 6.0 can't handle <int,int> templates?! -> no optimization
-// MS VC .NET 2002 just dies with template optimization switched on
- #if _MSC_VER >= 1310
- #define TMPLOPT
- #endif
-#elif defined(__BORLANDC__)
-// handles all optimizations
- #define TMPLOPT
-#elif defined(__GNUC__)
-// GNUC 2.95.2 dies at compile with <int,int> templates
-#if __GNUC__ >= 3
- #define TMPLOPT // only workable with gcc >= 3.0
-#endif
-#elif defined(__MWERKS__)
-// CodeWarrior <= 8 can't take address of a template member function
- #ifndef FLEXT_DEBUG
- #define TMPLOPT
- #endif
-// #define SIGSTATIC // define that for CW6
-#elif defined(__MRC__)
-// Apple MPW - MrCpp
-// #define TMPLOPT // template optimation for more speed
-#else
-// another compiler
-// #define TMPLOPT // template optimation for more speed (about 10%)
- //#define SIGSTATIC // another redirection to avoid addresses of class member functions
-#endif
-
-
-#if defined(__MWERKS__) && !defined(__MACH__)
- #define STD std
-#else
- #define STD
-#endif
-
-
-#ifdef __ALTIVEC__
-#if FLEXT_CPU == FLEXT_CPU_PPC && defined(__MWERKS__)
- #pragma altivec_model on
- #include <vBasicOps.h>
- #include <vectorOps.h>
-#elif FLEXT_CPU == FLEXT_CPU_PPC && defined(__GNUG__)
- #include <vecLib/vBasicOps.h>
- #include <vecLib/vectorOps.h>
-#endif
- // this is for the UInt32 prototype (thanks to Jamie)
- // \TODO we'd rather not use Carbon but some other framework
- #ifdef __MACH__
- #include <Carbon/Carbon.h>
- #endif
-
- // Initialize a prefetch constant for use with vec_dst(), vec_dstt(), vec_dstst or vec_dststt
- // Taken from the "AltiVec tutorial" by Ian Ollmann, Ph.D.
- inline UInt32 GetPrefetchConstant( int blockSizeInVectors,int blockCount,int blockStride )
- {
-// FLEXT_ASSERT( blockSizeInVectors > 0 && blockSizeInVectors <= 32 );
-// FLEXT_ASSERT( blockCount > 0 && blockCount <= 256 );
-// FLEXT_ASSERT( blockStride > MIN_SHRT && blockStride <= MAX_SHRT );
- return ((blockSizeInVectors << 24) & 0x1F000000) |
- ((blockCount << 16) && 0x00FF0000) |
- (blockStride & 0xFFFF);
- }
-#endif
-
-#if 0 // FLEXT_CPU == FLEXT_CPU_PPC && defined(__GNUC__)
-#include <ppc_intrinsics.h>
-template<typename I,typename F>
-inline I CASTINT( F f )
-{
- int i;
- __stfiwx(__fctiwz(f),0,&i);
- return i;
-}
-#elif FLEXT_CPU == FLEXT_CPU_INTEL && defined(_MSC_VER)
-template<typename I,typename F>
-inline I CASTINT(F x) {
-// by Laurent de Soras (http://ldesoras.free.fr)
-// assert (x > static_cast <double> (INT_MIN / 2) + 1.0);
-// assert (x < static_cast <double> (INT_MAX / 2) + 1.0);
- const float round_towards_m_i = -0.5f;
- I i;
- __asm
- {
- fld x
- fadd st,st
- fabs
- fadd round_towards_m_i
- fistp i
- sar i, 1
- }
- if(x < 0) i = -i;
- return i;
-}
-#else
-template<typename I,typename F> inline I CASTINT(F o) { return static_cast<I>(o); }
-#endif
-
-
-class xsample:
- public flext_dsp
-{
- FLEXT_HEADER_S(xsample,flext_dsp,setup)
-
-public:
- xsample();
- ~xsample();
-
- enum xs_change {
- xsc__ = 0,
- xsc_units = 0x0001,
- xsc_play = 0x0002,
- xsc_pos = 0x0008,
- xsc_range = 0x0010,
- xsc_transport = 0x0020,
- xsc_fade = 0x0040,
-
- xsc_intp = xsc_play,
- xsc_srate = xsc_play|xsc_units,
- xsc_chns = xsc_play,
- xsc_loop = xsc_play,
- xsc_startstop = xsc_play|xsc_transport,
- xsc_buffer = xsc_units|xsc_pos|xsc_range|xsc_play,
- xsc_reset = xsc_buffer,
- xsc_all = 0xffff
- };
-
- enum xs_unit {
- xsu_sample = 0,xsu_buffer,xsu_ms,xsu_s
- };
-
- enum xs_intp {
- xsi_none = 0,xsi_4p,xsi_lin
- };
-
- enum xs_sclmd {
- xss_unitsinbuf = 0,xss_unitsinloop,xss_buffer,xss_loop
- };
-
-protected:
- virtual bool Finalize();
-
- buffer buf;
-
- void m_reset()
- {
- ChkBuffer(true);
- DoReset();
- Refresh();
- }
-
- void m_set(int argc,const t_atom *argv);
-
- void m_refresh()
- {
- Update(xsc_buffer,true);
- }
-
- void m_units(xs_unit mode)
- {
- unitmode = mode;
- Update(xsc_units,true);
- }
-
- void m_sclmode(xs_sclmd mode)
- {
- sclmode = mode;
- Update(xsc_units,true);
- }
-
- void m_all()
- {
- ChkBuffer(true);
- ResetRange();
- Refresh();
- }
-
- void m_wrap(bool w)
- {
- wrap = w;
- Update(xsc_pos|xsc_range,true);
- }
-
- void m_min(float mn);
- void m_max(float mx);
-
- xs_unit unitmode;
- xs_sclmd sclmode;
-
- long curmin,curmax; //,curlen; // in samples
- long sclmin; // in samples
- float sclmul;
- float s2u; // sample to unit conversion factor
- bool wrap;
-
- inline float scale(float smp) const { return (smp-sclmin)*sclmul; }
-
- static void arrscale(int n,const t_sample *in,t_sample *out,t_sample add,t_sample mul) { flext::ScaleSamples(out,in,mul,add,n); }
- inline void arrscale(int n,const t_sample *in,t_sample *out) const { arrscale(n,in,out,-sclmin*sclmul,sclmul); }
-
- static void arrmul(int n,const t_sample *in,t_sample *out,t_sample mul) { flext::MulSamples(out,in,mul,n); }
- inline void arrmul(int n,const t_sample *in,t_sample *out) const { arrmul(n,in,out,(t_sample)(1.f/s2u)); }
-
- void mg_buffer(AtomList &l) { if(buf.Symbol()) { l(1); SetSymbol(l[0],buf.Symbol()); } }
- inline void ms_buffer(const AtomList &l) { m_set(l.Count(),l.Atoms()); }
-
- inline void mg_min(float &v) const { v = curmin*s2u; }
- inline void mg_max(float &v) const { v = curmax*s2u; }
-
- void Refresh() { if(update && !Initing()) { DoUpdate(update); update = xsc__; } }
- void Update(unsigned int f,bool refr = false) { update |= f; if(refr) Refresh(); }
-
- //! return 0...invalid, 1...changed, -1...unchanged
- int ChkBuffer(bool refr = false);
-
- typedef flext::buffer::lock_t lock_t;
-
- //! Lock buffer (buffer must be checked ok)
- lock_t Lock() { return buf.Lock(); }
- //! Unlock buffer (buffer must be checked ok)
- void Unlock(lock_t l) { buf.Unlock(l); }
-
- void ResetRange()
- {
- curmin = 0;
- curmax = buf.Frames();
- Update(xsc_range);
- }
-
- virtual void DoReset();
- virtual void DoUpdate(unsigned int flags);
-
- virtual void CbLoadbang();
- virtual bool CbDsp();
-
- virtual void m_help() = 0;
- virtual void m_print() = 0;
-
-private:
-
- unsigned int update;
-
- static void setup(t_classid c);
-
- FLEXT_CALLBACK(m_help)
- FLEXT_CALLBACK_V(m_set)
- FLEXT_CALLBACK(m_print)
- FLEXT_CALLBACK(m_refresh)
- FLEXT_CALLBACK(m_reset)
-
- FLEXT_CALLVAR_V(mg_buffer,ms_buffer)
-
- FLEXT_CALLSET_E(m_units,xs_unit)
- FLEXT_ATTRGET_E(unitmode,xs_unit)
- FLEXT_CALLSET_E(m_sclmode,xs_sclmd)
- FLEXT_ATTRGET_E(sclmode,xs_sclmd)
-
- FLEXT_ATTRGET_F(s2u)
-
- FLEXT_CALLSET_B(m_wrap)
- FLEXT_ATTRGET_B(wrap)
-
-protected:
- FLEXT_CALLGET_F(mg_min)
- FLEXT_CALLGET_F(mg_max)
-};
-
-
-// defines which are used in the derived classes
-#ifdef SIGSTATIC
- #ifdef TMPLOPT
- #define TMPLFUN(FUN,BCHNS,IOCHNS) &thisType::st_##FUN<BCHNS,IOCHNS>
- #define TMPLSTF(FUN,BCHNS,IOCHNS) &thisType::FUN<BCHNS,IOCHNS>
- #define SIGFUN(FUN) &thisType::st_##FUN
- #define TMPLDEF template <int _BCHNS_,int _IOCHNS_>
- #define TMPLCALL <_BCHNS_,_IOCHNS_>
- #else
- #define TMPLFUN(FUN,BCHNS,IOCHNS) &thisType::st_##FUN
- #define TMPLSTF(FUN,BCHNS,IOCHNS) &thisType::FUN
- #define SIGFUN(FUN) &thisType::st_##FUN
- #define TMPLDEF
- #define TMPLCALL
- #endif
-
- #define DEFSIGFUN(NAME) \
- static void st_##NAME(thisType *obj,int n,t_sample *const *in,t_sample *const *out) { obj->NAME (n,in,out); } \
- void NAME(int n,t_sample *const *in,t_sample *const *out)
-
- #define TMPLSIGFUN(NAME) \
- TMPLDEF static void st_##NAME(thisType *obj,int n,t_sample *const *in,t_sample *const *out) { obj->NAME TMPLCALL (n,in,out); } \
- TMPLDEF void NAME(int n,t_sample *const *in,t_sample *const *out)
-
- #define TMPLSTFUN(NAME) TMPLDEF static void NAME(const t_sample *bdt,const int smin,const int smax,const int n,const int inchns,const int outchns,t_sample *const *invecs,t_sample *const *outvecs)
-
- #define SETSIGFUN(VAR,FUN) v_##VAR = FUN
-
- #define SETSTFUN(VAR,FUN) VAR = FUN
-
- #define DEFSIGCALL(NAME) \
- inline void NAME(int n,t_sample *const *in,t_sample *const *out) { (*v_##NAME)(this,n,in,out); } \
- void (*v_##NAME)(thisType *obj,int n,t_sample *const *in,t_sample *const *out)
-
- #define DEFSTCALL(NAME) \
- void (*NAME)(const t_sample *bdt,const int smin,const int smax,const int n,const int inchns,const int outchns,t_sample *const *invecs,t_sample *const *outvecs)
-
-#else
- #ifdef TMPLOPT
- #define TMPLFUN(FUN,BCHNS,IOCHNS) &thisType::FUN<BCHNS,IOCHNS>
- #define SIGFUN(FUN) &thisType::FUN
- #define TMPLDEF template <int _BCHNS_,int _IOCHNS_>
- #define TMPLCALL <_BCHNS_,_IOCHNS_>
- #else
- #define TMPLFUN(FUN,BCHNS,IOCHNS) &thisType::FUN
- #define SIGFUN(FUN) &thisType::FUN
- #define TMPLDEF
- #define TMPLCALL
- #endif
-
- #define TMPLSTF(FUN,BCHNS,IOCHNS) TMPLFUN(FUN,BCHNS,IOCHNS)
-
- #define DEFSIGFUN(NAME) void NAME(int n,t_sample *const *in,t_sample *const *out)
- #define TMPLSIGFUN(NAME) TMPLDEF void NAME(int n,t_sample *const *in,t_sample *const *out)
- #define TMPLSTFUN(NAME) TMPLDEF static void NAME(const t_sample *bdt,const int smin,const int smax,const int n,const int inchns,const int outchns,t_sample *const *invecs,t_sample *const *outvecs,bool looped)
-
- #define SETSIGFUN(VAR,FUN) v_##VAR = FUN
-
- #define DEFSIGCALL(NAME) \
- inline void NAME(int n,t_sample *const *in,t_sample *const *out) { (this->*v_##NAME)(n,in,out); } \
- void (thisType::*v_##NAME)(int n,t_sample *const *invecs,t_sample *const *outvecs)
-
- #define SETSTFUN(VAR,FUN) VAR = FUN
-
- #define DEFSTCALL(NAME) \
- void (*NAME)(const t_sample *bdt,const int smin,const int smax,const int n,const int inchns,const int outchns,t_sample *const *invecs,t_sample *const *outvecs,bool looped)
-#endif
-
-
-
-
-
-#ifndef MIN
-#define MIN(x,y) ((x) < (y)?(x):(y))
-#endif
-
-// in the signal functions
-#ifdef TMPLOPT
- // optimization by using constants for channel numbers
- #define SIGCHNS(BCHNS,bchns,IOCHNS,iochns) \
- const int BCHNS = _BCHNS_ < 0?(bchns):_BCHNS_; \
- const int IOCHNS = _IOCHNS_ < 0?MIN(iochns,BCHNS):MIN(_IOCHNS_,BCHNS)
-#else
- // no template optimization
- #if FLEXT_SYS == FLEXT_SYS_PD // only mono buffers
- #define SIGCHNS(BCHNS,bchns,IOCHNS,iochns) \
- const int BCHNS = 1; \
- const int IOCHNS = MIN(iochns,BCHNS)
- #else // MAXMSP
- #define SIGCHNS(BCHNS,bchns,IOCHNS,iochns) \
- const int BCHNS = bchns; \
- const int IOCHNS = MIN(iochns,BCHNS)
- #endif
-#endif
-
-
-class xinter:
- public xsample
-{
- FLEXT_HEADER_S(xinter,xsample,setup)
-
-public:
-
- enum xs_loop {
- xsl_once = 0,xsl_loop,xsl_bidir
- };
-
- xinter()
- : outchns(1),doplay(false)
- , interp(xsi_4p),loopmode(xsl_loop)
- {}
-
- void m_start()
- {
- ChkBuffer();
- doplay = true;
- Update(xsc_startstop,true);
- }
-
- void m_stop()
- {
- ChkBuffer();
- doplay = false;
- Update(xsc_startstop,true);
- }
-
- void m_interp(xs_intp mode)
- {
- interp = mode;
- Update(xsc_intp,true);
- }
-
-protected:
-
- int outchns;
- bool doplay;
- xs_intp interp;
- xs_loop loopmode;
-
- TMPLSIGFUN(s_play0);
- TMPLSIGFUN(s_play1);
- TMPLSIGFUN(s_play2);
- TMPLSIGFUN(s_play4);
-
- TMPLSTFUN(st_play0);
- TMPLSTFUN(st_play1);
- TMPLSTFUN(st_play2);
- TMPLSTFUN(st_play4);
-
- DEFSIGCALL(playfun);
- DEFSIGCALL(zerofun);
-
- virtual void DoUpdate(unsigned int flags);
-
- FLEXT_CALLBACK(m_start)
- FLEXT_CALLBACK(m_stop)
-
- FLEXT_CALLSET_E(m_interp,xs_intp)
- FLEXT_ATTRGET_E(interp,xs_intp)
-
- FLEXT_ATTRGET_E(loopmode,xs_loop)
-
-private:
- static void setup(t_classid c);
-};
-
-#ifdef TMPLOPT
-#include "inter.h"
-#endif
-
-}
-
-#endif
diff --git a/externals/grill/xsample/source/play.cpp b/externals/grill/xsample/source/play.cpp
deleted file mode 100644
index 0f6fec5e..00000000
--- a/externals/grill/xsample/source/play.cpp
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
-xsample - extended sample objects for Max/MSP and pd (pure data)
-
-Copyright (c) 2001-2007 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-*/
-
-#include "main.h"
-#include <stdio.h>
-
-#ifdef _MSC_VER
-#pragma warning (disable:4244)
-#endif
-
-
-class xplay:
- public xinter
-{
- FLEXT_HEADER_S(xplay,xinter,setup)
-
-public:
- xplay(int argc,const t_atom *argv);
-
- void m_loop(xs_loop lp)
- {
- loopmode = lp;
- Update(xsc_loop,true);
- }
-
-protected:
-
- virtual void CbSignal();
-
- virtual void m_help();
- virtual void m_print();
-
-private:
- static void setup(t_classid c);
-
- FLEXT_CALLSET_E(m_loop,xs_loop)
-};
-
-FLEXT_LIB_DSP_V("xplay~",xplay)
-
-void xplay::setup(t_classid c)
-{
- DefineHelp(c,"xplay~");
-
- FLEXT_CADDATTR_VAR_E(c,"loop",loopmode,m_loop);
-}
-
-xplay::xplay(int argc,const t_atom *argv)
-{
- // set the loopmode to non-wrapping (for sample interpolation)
- loopmode = xsl_once;
-
- int argi = 0;
-#if FLEXT_SYS == FLEXT_SYS_MAX
- if(argc > argi && CanbeInt(argv[argi])) {
- outchns = GetAInt(argv[argi]);
- argi++;
- }
-#endif
-
- if(argc > argi && IsSymbol(argv[argi])) {
- buf.Set(GetSymbol(argv[argi]),true);
- argi++;
-
-#if FLEXT_SYS == FLEXT_SYS_MAX
- // oldstyle command line?
- if(argi == 1 && argc == 2 && CanbeInt(argv[argi])) {
- outchns = GetAInt(argv[argi]);
- argi++;
- post("%s: old style command line detected - please change to '%s [channels] [buffer]'",thisName(),thisName());
- }
-#endif
- }
-
- AddInSignal("Messages and Signal of playing position"); // pos signal
- for(int ci = 0; ci < outchns; ++ci) {
- char tmp[30];
- STD::sprintf(tmp,"Audio signal channel %i",ci+1);
- AddOutSignal(tmp);
- }
-}
-
-void xplay::CbSignal()
-{
- int ret = ChkBuffer(true);
- int n = Blocksize();
- const t_sample *const *in = InSig();
- t_sample *const *out = OutSig();
-
- // check whether buffer is invalid or changed
- if(ret) {
- const lock_t l = Lock();
-
- // convert position units to frames
- arrmul(n,in[0],out[0]);
- // call resample routine
- playfun(n,out,out);
-
- Unlock(l);
-
- Refresh();
- }
- else
- zerofun(n,out,out);
-}
-
-
-
-void xplay::m_help()
-{
- post("%s - part of xsample objects, version " XSAMPLE_VERSION,thisName());
-#ifdef FLEXT_DEBUG
- post("compiled on " __DATE__ " " __TIME__);
-#endif
- post("(C) Thomas Grill, 2001-2007");
-#if FLEXT_SYS == FLEXT_SYS_MAX
- post("Arguments: %s [channels=1] [buffer]",thisName());
-#else
- post("Arguments: %s [buffer]",thisName());
-#endif
- post("Inlets: 1:Messages/Position signal");
- post("Outlets: 1:Audio signal");
- post("Methods:");
- post("\thelp: shows this help");
- post("\tset name: set buffer");
- post("\tenable 0/1: turn dsp calculation off/on");
- post("\tprint: print current settings");
- post("\tbang/start: begin playing");
- post("\tstop: stop playing");
- post("\treset: checks buffer");
- post("\trefresh: checks buffer and refreshes outlets");
- post("\t@units 0/1/2/3: set units to samples/buffer size/ms/s");
- post("\t@interp 0/1/2: set interpolation to off/4-point/linear");
- post("\t@loop 0/1/2: sets looping (interpolation) to off/forward/bidirectional");
- post("");
-}
-
-void xplay::m_print()
-{
- const char *interp_txt[] = {"off","4-point","linear"};
- // print all current settings
- post("%s - current settings:",thisName());
- post("bufname = '%s', length = %.3f, channels = %i",buf.Name(),(float)(buf.Frames()*s2u),buf.Channels());
- post("out channels = %i, samples/unit = %.3f, interpolation = %s",outchns,(float)(1./s2u),interp_txt[interp >= xsi_none && interp <= xsi_lin?interp:xsi_none]);
- post("");
-}
diff --git a/externals/grill/xsample/source/prefix.h b/externals/grill/xsample/source/prefix.h
deleted file mode 100644
index 415f07c3..00000000
--- a/externals/grill/xsample/source/prefix.h
+++ /dev/null
@@ -1,15 +0,0 @@
-/*
-
-xsample - extended sample objects for Max/MSP and pd (pure data)
-
-Copyright (c) 2001-2004 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.
-
-*/
-
-#define FLEXT_ATTRIBUTES 1
-
-#include <flext.h>
-
-#include <math.h>
diff --git a/externals/grill/xsample/source/record.cpp b/externals/grill/xsample/source/record.cpp
deleted file mode 100644
index 07c94b45..00000000
--- a/externals/grill/xsample/source/record.cpp
+++ /dev/null
@@ -1,497 +0,0 @@
-/*
-xsample - extended sample objects for Max/MSP and pd (pure data)
-
-Copyright (c) 2001-2007 Thomas Grill (gr@grrrr.org)
-For information on usage and redistribution, and for a DISCLAIMER OF ALL
-WARRANTIES, see the file, "license.txt," in this distribution.
-*/
-
-#include "main.h"
-#include <stdio.h>
-
-#ifdef _MSC_VER
-#pragma warning (disable:4244)
-#endif
-
-extern "C++" {
-
-class xrecord:
- public xsample
-{
- FLEXT_HEADER_S(xrecord,xsample,setup)
-
-public:
- xrecord(int argc,const t_atom *argv);
-
- void m_pos(float pos)
- {
- curpos = LIKELY(pos)?CASTINT<long>(pos/s2u+.5):0;
- Update(xsc_pos);
- Refresh();
- }
-
- inline void mg_pos(float &v) const { v = curpos*s2u; }
-
- void m_start();
- void m_stop();
-
- inline void m_append(bool app)
- {
- appmode = app;
- Update(xsc_play);
- if(!appmode) m_pos(0);
- }
-
- void m_draw(int argc,const t_atom *argv);
-
-protected:
- int inchns;
- bool sigmode,appmode;
- float drintv;
-
- bool dorec,doloop;
- int mixmode;
- long curpos; // in samples
-
- virtual void DoReset();
- virtual void DoUpdate(unsigned int flags);
-
- virtual void CbSignal();
-
- virtual void m_help();
- virtual void m_print();
-
-private:
- static void setup(t_classid c);
-
- TMPLSIGFUN(s_rec);
-
- DEFSIGCALL(recfun);
-
- FLEXT_CALLBACK(m_start)
- FLEXT_CALLBACK(m_stop)
-
- FLEXT_CALLVAR_F(mg_pos,m_pos)
- FLEXT_CALLBACK(m_all)
- FLEXT_CALLSET_F(m_min)
- FLEXT_CALLSET_F(m_max)
- FLEXT_CALLBACK_F(m_min)
- FLEXT_CALLBACK_F(m_max)
-
- FLEXT_ATTRVAR_B(doloop)
- FLEXT_ATTRVAR_I(mixmode)
- FLEXT_ATTRVAR_B(sigmode)
- FLEXT_CALLSET_B(m_append)
- FLEXT_ATTRGET_B(appmode)
-
- FLEXT_CALLBACK_V(m_draw)
-};
-
-}
-
-
-FLEXT_LIB_DSP_V("xrecord~",xrecord)
-
-
-void xrecord::setup(t_classid c)
-{
- DefineHelp(c,"xrecord~");
-
- FLEXT_CADDBANG(c,0,m_start);
- FLEXT_CADDMETHOD_(c,0,"start",m_start);
- FLEXT_CADDMETHOD_(c,0,"stop",m_stop);
-
- FLEXT_CADDATTR_VAR(c,"pos",mg_pos,m_pos);
- FLEXT_CADDATTR_VAR(c,"min",mg_min,m_min);
- FLEXT_CADDATTR_VAR(c,"max",mg_max,m_max);
- FLEXT_CADDMETHOD_(c,0,"all",m_all);
-
- FLEXT_CADDMETHOD_(c,0,"draw",m_draw);
-
- FLEXT_CADDATTR_VAR1(c,"loop",doloop);
- FLEXT_CADDATTR_VAR1(c,"mixmode",mixmode);
- FLEXT_CADDATTR_VAR1(c,"sigmode",sigmode);
- FLEXT_CADDATTR_VAR(c,"append",appmode,m_append);
-}
-
-xrecord::xrecord(int argc,const t_atom *argv):
- inchns(1),
- sigmode(false),appmode(true),
- drintv(0),
- dorec(false),doloop(false),
- mixmode(0)
-{
- int argi = 0;
-#if FLEXT_SYS == FLEXT_SYS_MAX
- if(argc > argi && CanbeInt(argv[argi])) {
- inchns = GetAInt(argv[argi]);
- argi++;
- }
-#endif
-
- if(argc > argi && IsSymbol(argv[argi])) {
- buf.Set(GetSymbol(argv[argi]),true);
- argi++;
-
-#if FLEXT_SYS == FLEXT_SYS_MAX
- // oldstyle command line?
- if(argi == 1 && argc == 2 && CanbeInt(argv[argi])) {
- inchns = GetAInt(argv[argi]);
- argi++;
- post("%s: old style command line detected - please change to '%s [channels] [buffer]'",thisName(),thisName());
- }
-#endif
- }
-
- for(int ci = 0; ci < inchns; ++ci) {
- char tmp[40];
- STD::sprintf(tmp,ci == 0?"Messages/audio channel %i":"Audio channel %i",ci+1);
- AddInSignal(tmp); // audio signals
- }
- AddInSignal("On/Off/Fade/Mix signal (0..1)"); // on/off signal
- AddInFloat("Starting point of recording"); // min
- AddInFloat("Ending point of recording"); // max
- AddOutSignal("Current position of recording"); // pos signal
- AddOutFloat("Starting point (rounded to frame)"); // min
- AddOutFloat("Ending point (rounded to frame)"); // max
- AddOutBang("Bang on loop end/rollover"); // loop bang
-
- FLEXT_ADDMETHOD(inchns+1,m_min);
- FLEXT_ADDMETHOD(inchns+2,m_max);
-}
-
-void xrecord::m_start()
-{
- ChkBuffer();
-
- if(!sigmode && !appmode) { curpos = 0; Update(xsc_pos); }
-
- dorec = true;
- Update(xsc_startstop);
- Refresh();
-}
-
-void xrecord::m_stop()
-{
- ChkBuffer();
- dorec = false;
- Update(xsc_startstop);
- Refresh();
-}
-
-void xrecord::DoReset()
-{
- xsample::DoReset();
- curpos = 0;
-}
-
-void xrecord::m_draw(int argc,const t_atom *argv)
-{
- if(argc >= 1) {
- drintv = GetAInt(argv[0]);
- if(dorec) buf.SetRefrIntv(drintv);
- }
- else
- buf.Dirty(true);
-}
-
-TMPLDEF void xrecord::s_rec(int n,t_sample *const *invecs,t_sample *const *outvecs)
-{
- SIGCHNS(BCHNS,buf.Channels(),ICHNS,inchns);
-
- const t_sample *const *sig = invecs;
- register int si = 0;
- const t_sample *on = invecs[inchns];
- t_sample *pos = outvecs[0];
-
- bool lpbang = false;
- register const float pf = sclmul;
- register long o = curpos;
-
- if(o < curmin) o = curmin;
-
- if(dorec && LIKELY(curmax > curmin)) {
- while(n) {
- long ncur = curmax-o; // at max to buffer or recording end
-
- if(UNLIKELY(ncur <= 0)) { // end of buffer
- if(doloop) {
- ncur = curmax-(o = curmin);
- }
- else {
- // loop expired;
- dorec = false;
- Update(xsc_startstop);
- }
-
- lpbang = true;
- }
-
- if(UNLIKELY(!dorec)) break;
-
- if(UNLIKELY(ncur > n)) ncur = n;
-
- register int i;
- register t_sample *bf = buf.Data()+o*BCHNS;
- register float p = scale(o);
-
- if(sigmode) {
- if(appmode) {
- // append to current position
-
- switch(mixmode) {
- case 0:
- for(i = 0; i < ncur; ++i,++si) {
- if(!(*(on++) < 0)) {
- for(int ci = 0; ci < ICHNS; ++ci)
- bf[ci] = sig[ci][si];
- bf += BCHNS;
- *(pos++) = p,p += pf,++o;
- }
- else
- *(pos++) = p;
- }
- break;
- case 1:
- for(i = 0; i < ncur; ++i,++si) {
- register const t_sample g = *(on++);
- if(!(g < 0)) {
- for(int ci = 0; ci < ICHNS; ++ci)
- bf[ci] = bf[ci]*(1.-g)+sig[ci][si]*g;
- bf += BCHNS;
- *(pos++) = p,p += pf,++o;
- }
- else
- *(pos++) = p;
- }
- break;
- case 2:
- for(i = 0; i < ncur; ++i,++si) {
- if(!(*(on++) < 0)) {
- for(int ci = 0; ci < ICHNS; ++ci)
- bf[ci] += sig[ci][si];
- bf += BCHNS;
- *(pos++) = p,p += pf,++o;
- }
- else
- *(pos++) = p;
- }
- break;
- }
- }
- else {
- // don't append
- switch(mixmode) {
- case 0: {
- for(i = 0; i < ncur; ++i,++si) {
- if(!(*(on++) < 0))
- {
- for(int ci = 0; ci < ICHNS; ++ci)
- bf[ci] = sig[ci][si];
- bf += BCHNS;
- *(pos++) = p,p += pf,++o;
- }
- else {
- *(pos++) = p = scale(o = 0);
- bf = buf.Data();
- }
- }
- break;
- }
- case 1: {
- for(i = 0; i < ncur; ++i,++si) {
- register const t_sample g = *(on++);
- if(!(g < 0)) {
- for(int ci = 0; ci < ICHNS; ++ci)
- bf[ci] = bf[ci]*(1.-g)+sig[ci][si]*g;
- bf += BCHNS;
- *(pos++) = p,p += pf,++o;
- }
- else {
- *(pos++) = p = scale(o = 0);
- bf = buf.Data();
- }
- }
- break;
- }
- case 2: {
- for(i = 0; i < ncur; ++i,++si) {
- if(!(*(on++) < 0))
- {
- for(int ci = 0; ci < ICHNS; ++ci)
- bf[ci] += sig[ci][si];
- bf += BCHNS;
- *(pos++) = p,p += pf,++o;
- }
- else {
- *(pos++) = p = scale(o = 0);
- bf = buf.Data();
- }
- }
- break;
- }
- }
- }
- }
- else {
- // message mode
-
- // Altivec optimization for that!
- switch(mixmode) {
- case 0: {
- for(int ci = 0; ci < ICHNS; ++ci) {
- register t_sample *b = bf+ci;
- register const float *s = sig[ci]+si;
- for(i = 0; i < ncur; ++i,b += BCHNS,++s)
- *b = *s;
- }
- si += ncur;
- break;
- }
- case 1: {
- for(i = 0; i < ncur; ++i,++si) {
- register const t_sample w = *(on++);
- for(int ci = 0; ci < ICHNS; ++ci)
- bf[ci] = bf[ci]*(1.-w)+sig[ci][si]*w;
- bf += BCHNS;
- }
- break;
- }
- case 2: {
- for(int ci = 0; ci < ICHNS; ++ci) {
- register t_sample *b = bf+ci;
- register const float *s = sig[ci]+si;
- for(i = 0; i < ncur; ++i,b += BCHNS,++s)
- *b += *s;
- }
- si += ncur;
- break;
- }
- }
-
- for(i = 0; i < ncur; ++i) {
- *(pos++) = p,p += pf,++o;
- }
- }
-
- n -= ncur;
- }
- curpos = o;
-
- buf.Dirty();
- }
-
- if(n) {
- register float p = scale(o);
- while(n--) *(pos++) = p;
- }
-
- if(lpbang) ToOutBang(3);
-}
-
-void xrecord::CbSignal()
-{
- int ret = ChkBuffer(true);
-
- if(ret) {
- // call the appropriate dsp function
-
- const lock_t l = Lock();
- recfun(Blocksize(),InSig(),OutSig());
- Unlock(l);
-
- Refresh();
- }
- else
- // set position signal to zero
- ZeroSamples(OutSig()[0],Blocksize());
-}
-
-void xrecord::DoUpdate(unsigned int flags)
-{
- xsample::DoUpdate(flags);
-
- if(flags&(xsc_pos|xsc_range)) {
- if(curpos < curmin) curpos = curmin;
- else if(curpos > curmax) curpos = curmax;
- }
-
- if(flags&xsc_range) {
- ToOutFloat(1,curmin*s2u);
- ToOutFloat(2,curmax*s2u);
- }
-
- if(flags&xsc_transport && buf.Ok()) {
- if(dorec)
- buf.SetRefrIntv(drintv);
- else {
- buf.Dirty(true);
- buf.SetRefrIntv(0);
- }
- }
-
- if(flags&xsc_play) {
- switch(buf.Channels()*1000+inchns) {
- case 1001: SETSIGFUN(recfun,TMPLFUN(s_rec,1,1)); break;
- case 1002: SETSIGFUN(recfun,TMPLFUN(s_rec,1,2)); break;
- case 2001: SETSIGFUN(recfun,TMPLFUN(s_rec,2,1)); break;
- case 2002: SETSIGFUN(recfun,TMPLFUN(s_rec,2,2)); break;
- case 4001:
- case 4002:
- case 4003: SETSIGFUN(recfun,TMPLFUN(s_rec,4,-1)); break;
- case 4004: SETSIGFUN(recfun,TMPLFUN(s_rec,4,4)); break;
- default: SETSIGFUN(recfun,TMPLFUN(s_rec,-1,-1)); break;
- }
- }
-}
-
-
-void xrecord::m_help()
-{
- post("%s - part of xsample objects, version " XSAMPLE_VERSION,thisName());
-#ifdef FLEXT_DEBUG
- post("compiled on " __DATE__ " " __TIME__);
-#endif
- post("(C) Thomas Grill, 2001-2007");
-#if FLEXT_SYS == FLEXT_SYS_MAX
- post("Arguments: %s [channels=1] [buffer]",thisName());
-#else
- post("Arguments: %s [buffer]",thisName());
-#endif
- post("Inlets: 1:Messages/Audio signal, 2:Trigger signal, 3:Min point, 4: Max point");
- post("Outlets: 1:Position signal, 2:Min point, 3:Max point");
- post("Methods:");
- post("\thelp: shows this help");
- post("\tset [name]: set buffer or reinit");
- post("\tenable 0/1: turn dsp calculation off/on");
- post("\treset: reset min/max recording points and recording offset");
- post("\tprint: print current settings");
- post("\t@sigmode 0/1: specify message or signal triggered recording");
- post("\t@append 0/1: reset recording position or append to current position");
- post("\t@loop 0/1: switches looping off/on");
- post("\t@mixmode 0/1/2: specify how audio signal should be mixed in (none,mixed,added)");
- post("\tmin {unit}: set minimum recording point");
- post("\tmax {unit}: set maximum recording point");
- post("\tall: select entire buffer length");
- post("\tpos {unit}: set recording position (obeying the current scale mode)");
- post("\tbang/start: start recording");
- post("\tstop: stop recording");
- post("\trefresh: checks buffer and refreshes outlets");
- post("\t@units 0/1/2/3: set units to frames/buffer size/ms/s");
- post("\t@sclmode 0/1/2/3: set range of position to units/units in loop/buffer/loop");
- post("\tdraw [{float}]: redraw buffer immediately (arg omitted) or periodic (in ms)");
- post("");
-}
-
-void xrecord::m_print()
-{
- static const char sclmode_txt[][20] = {"units","units in loop","buffer","loop"};
-
- // print all current settings
- post("%s - current settings:",thisName());
- post("bufname = '%s', length = %.3f, channels = %i",buf.Name(),(float)(buf.Frames()*s2u),buf.Channels());
- post("in channels = %i, frames/unit = %.3f, scale mode = %s",inchns,(float)(1./s2u),sclmode_txt[sclmode]);
- post("sigmode = %s, append = %s, loop = %s, mixmode = %i",sigmode?"yes":"no",appmode?"yes":"no",doloop?"yes":"no",mixmode);
- post("");
-}
-
diff --git a/externals/grill/xsample/source/xsample-Info.plist b/externals/grill/xsample/source/xsample-Info.plist
deleted file mode 100644
index 3d1bc4c8..00000000
--- a/externals/grill/xsample/source/xsample-Info.plist
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>CFBundleDevelopmentRegion</key>
- <string>English</string>
- <key>CFBundleExecutable</key>
- <string>xsample</string>
- <key>CFBundleIdentifier</key>
- <string>org.grrrr.xsample</string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundlePackageType</key>
- <string>iLaX</string>
- <key>CFBundleSignature</key>
- <string>????</string>
- <key>CFBundleVersion</key>
- <string>1.0</string>
- <key>CSResourcesFileMapped</key>
- <string>yes</string>
-</dict>
-</plist>
diff --git a/externals/grill/xsample/source/xsample.rsrc b/externals/grill/xsample/source/xsample.rsrc
deleted file mode 100755
index eb62e523..00000000
--- a/externals/grill/xsample/source/xsample.rsrc
+++ /dev/null
@@ -1,29 +0,0 @@
-(This file must be converted with BinHex 4.0)
-:!!"bFh*M8P0&4!#3#!8hIF-!N!3"!!!!"-!!!!2!!!!!Gb"MEfjdB@PZC@3JE@9
-cFf&RC5"TEL"LD@jKFRNJ+Lm0$@KcE'PNCA+j,R*cFQ-#!!)!FR0bBe*6483"!2q
-3"!)!FR0bBe*6483"!2q3"!#3%U((pmm!N!B%Z#TLAhC`D@il#3N[+L"`BA4MD'P
-ZE'9d)'PZ)(4SDA-JF'&dBfKPFLGc)(CTFfpLDL!U,`d*#94&5'&ZC'aP)'*IG'9
-S1`Q3"#mU)(4PH(3JC@4TG'pb)'KKEQ4XC5!U,`d*I5"LAh9Z1`ep1`d0,bSJBQp
-i)'CXB@Gc)#S[$3dMC!!!!1aJ#J!!E8&i6!a#!!"1qJ!`6R8LAb!I,S"R%L"!F!!
-3%'!%%1J!!9()rrT#%%l4@8m[,`!)6VVrh#"I)!K1G8j@r[T)j`!`*Qi!#&P2,ca
-Y3AK-2c`!!DJ1)&mN5#!+Cbi[#NKZr[T)E[lm5'lr!+QS5'lr!%kkrlK)E[m!3IS
-!,NK3)'X!N!"1N!"2l`!-B!j"qJ!f5&!JD`#3!%k3!&K260m-!%jH6R@%E@&TEJ!
-!3#9c1L"ZEh3JBACKD@aKBQaP)'C[FL!f1%X!G'KTFb"[BQTPBh3JDA-JEQpd)'&
-fB@PXB@*XC5"QEh)J0MK,!*!&l'!+!!"Y3AK-$%)!!%lk!$"1G5*I)"mZJ'F5)%"
-`!"!3B!33k!!"8FMrqN)36Y&C6bm[!!K1Z[rF)&mJ#%je6PEqqNMR!$!QEJ!)@8m
-[2'e"H%`r2!!"U!iJAb4))!TR,Lm+5'lqqNKZr[a)E[m!UDK)E[m!6VVrZ%KZr`"
-"qJ!Z5&!JD`#3!%k3!%r[!!aJ$N(k!$C)8#"V!*!!6T!!@%p-h``!6Pj1GB4YB@P
-Z!!"!*A-k)'j[G#"KGQ&TE'&LE'8JCQpb)$Bi5`"dD'Pc)'pLDQ9MG#"TFb"ZEh3
-JBACKD@aKBQaP)'C[FL!f1%X!N!AXB!S!!'e"H%`-3J!!6[S!-%je)PmJ(bk!Ca)
-J3(!!%""J""$S!!&4b2rk3K"1d9P2,bm!#%kkrp`JAb!)6R919[lk51F!-#CZ!!K
-C6bmmE8&i6$mm!!'S$L"I*%JJ#QFZ,`T)E[lk5'lqr%KZr`#TU%KZr`"1Z[qi5'l
-r!%(k!#j)8#"V!*!!6T!!6qm!$'!13IS!0NK3)'X!N!"1N!"B6dcI$!"1ANjeK'e
-KD@i!!%!PFcSJEQpd)'&fB@PXB@*XC5"QEh)J0MK,!(4SDA-JEf*UC@0d)'Pc)'j
-[G#"KGQ&TE'&LE'8JCQpb)$Bi5`#3"HaJ#J!!E8&i6!a#!!"1qJ!`6R8LAb!I,S"
-R%L"!F!!3%'!%%1J!!9()rrT#%%l4@8m[,`!)6VVrh#"I)!K1G8j@r[T)j`!`*Qi
-!#&P2,caY3AK-2c`!!DJ1)&mN5#!+Cbi[#NKZr[T)E[lm5'lr!+QS5'lr!%kkrlK
-)E[m!3IS!,NK3)'X!N!"1N!"2l`!-B!j"qJ!f5&!JD`#3!%k3!&K260m-!%jH6R@
-%E@&TEJ!!3#9c1L"ZEh3JBACKD@aKBQaP)'C[FL!f1%X!G'KTFb"[BQTPBh3JDA-
-JEQpd)'&fB@PXB@*XC5"QEh)J0MK,!*!%!3!!!!6!!!!$`!!!!(F9906%"6i!!!!
-F!&B!!'e"H%`!!`!+(d!!N!B9901`(d%!#!!!!2!9901X(d)!%3!!!H!9901S(d-
-!'!!!!Y!9901N"hKcB@e`E'8)H'GbEfpfCAi'H("XBAPq#(KbC@0[FQ4qq+N:
diff --git a/externals/grill/xsample/xsample.mcp b/externals/grill/xsample/xsample.mcp
deleted file mode 100755
index 5fbc3068..00000000
--- a/externals/grill/xsample/xsample.mcp
+++ /dev/null
Binary files differ
diff --git a/externals/grill/xsample/xsample.vcproj b/externals/grill/xsample/xsample.vcproj
deleted file mode 100644
index e978ee7e..00000000
--- a/externals/grill/xsample/xsample.vcproj
+++ /dev/null
@@ -1,683 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="xsample"
- ProjectGUID="{7A2856E0-6DC1-4CD7-8A05-E6BA1DF8CA22}"
- Keyword="Win32Proj">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="PD Release|Win32"
- OutputDirectory=".\pd-msvc\r"
- IntermediateDirectory=".\pd-msvc\r"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- GlobalOptimizations="TRUE"
- InlineFunctionExpansion="0"
- FavorSizeOrSpeed="1"
- OmitFramePointers="TRUE"
- OptimizeForProcessor="3"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src;..\flext\source"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;FLEXT_SYS=2"
- StringPooling="TRUE"
- RuntimeLibrary="4"
- EnableFunctionLevelLinking="TRUE"
- EnableEnhancedInstructionSet="1"
- UsePrecompiledHeader="2"
- PrecompiledHeaderThrough="prefix.h"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib "
- OutputFile="pd-msvc\xsample.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="c:\programme\audio\pd\bin"
- ImportLibrary=".\pd-msvc\r/xsample.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\pd-msvc\r/xsample.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="PD Debug|Win32"
- OutputDirectory=".\pd-msvc\d"
- IntermediateDirectory=".\pd-msvc\d"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- OptimizeForProcessor="2"
- AdditionalIncludeDirectories="c:\data\pd\pd-cvs\src;..\flext\source"
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;FLEXT_SYS=2"
- BasicRuntimeChecks="3"
- RuntimeLibrary="5"
- RuntimeTypeInfo="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderThrough="prefix.h"
- BrowseInformation="1"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="4"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib"
- OutputFile="$(outdir)/xsample.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="c:\data\pd\pd-cvs\bin\"
- GenerateDebugInformation="TRUE"
- ImportLibrary=".\pd-msvc\d/xsample.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="_DEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\pd-msvc\d/xsample.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="PD Shared Release|Win32"
- OutputDirectory=".\pd-msvc\sr"
- IntermediateDirectory=".\pd-msvc\sr"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- OptimizeForProcessor="2"
- AdditionalIncludeDirectories="&quot;c:\data\prog\pd\pd-cvs\src&quot;;c:\data\prog\packs\pthreads;..\flext\source"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;FLEXT_SYS=2;FLEXT_SHARED"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderThrough="prefix.h"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib"
- OutputFile="$(outdir)\xsample.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="&quot;c:\data\prog\pd\pd-cvs\bin&quot;;&quot;..\flext\pd-msvc&quot;"
- ImportLibrary=".\pd-msvc\s/xsample.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\pd-msvc\r/xsample.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Max Shared Release|Win32"
- OutputDirectory=".\max-msvc\s"
- IntermediateDirectory=".\max-msvc\s"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- OptimizeForProcessor="2"
- AdditionalIncludeDirectories="F:\prog\audio\MaxWinSDK\c74support\max-includes,F:\prog\audio\MaxWinSDK\c74support\msp-includes,f:\prog\packs\pthreads;..\flext\source"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;FLEXT_SYS=1;FLEXT_SHARED"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- UsePrecompiledHeader="2"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="maxapi.lib maxext.lib maxaudio.lib "
- OutputFile="max-msvc\s\xsample.mxe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="&quot;F:\prog\audio\MaxWinSDK\c74support\max-includes\win-includes\release&quot;;&quot;F:\prog\audio\MaxWinSDK\c74support\msp-includes\win-includes\release&quot;;..\flext\max-msvc"
- ImportLibrary=".\max-msvc\d/xsample.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\pd-msvc\r/xsample.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Max Debug|Win32"
- OutputDirectory=".\max-msvc\d"
- IntermediateDirectory=".\max-msvc\d"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- InlineFunctionExpansion="0"
- OptimizeForProcessor="0"
- AdditionalIncludeDirectories="&quot;C:\data\prog\audio\maxmspsdk_win\4.5 headers\c74support\max-includes&quot;;&quot;C:\data\prog\audio\maxmspsdk_win\4.5 headers\c74support\msp-includes&quot;;..\flext\source"
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;FLEXT_SYS=1"
- StringPooling="TRUE"
- RuntimeLibrary="0"
- StructMemberAlignment="2"
- UsePrecompiledHeader="2"
- PrecompiledHeaderThrough="prefix.h"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="maxapi.lib maxaudio.lib "
- OutputFile="max-msvc\d\xsample.mxe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="&quot;C:\data\prog\audio\maxmspsdk_win\4.5 headers\c74support\max-includes&quot;;&quot;C:\data\prog\audio\maxmspsdk_win\4.5 headers\c74support\msp-includes&quot;;&quot;..\flext\max-msvc&quot;"
- GenerateDebugInformation="TRUE"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\pd-msvc\r/xsample.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Max Release|Win32"
- OutputDirectory=".\max-msvc\r"
- IntermediateDirectory=".\max-msvc\r"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- GlobalOptimizations="TRUE"
- InlineFunctionExpansion="0"
- FavorSizeOrSpeed="1"
- OmitFramePointers="TRUE"
- OptimizeForProcessor="3"
- AdditionalIncludeDirectories="&quot;C:\data\prog\audio\maxmspsdk_win\4.5 headers\c74support\max-includes&quot;;&quot;C:\data\prog\audio\maxmspsdk_win\4.5 headers\c74support\msp-includes&quot;;..\flext\source"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;FLEXT_SYS=1"
- StringPooling="TRUE"
- RuntimeLibrary="0"
- StructMemberAlignment="2"
- BufferSecurityCheck="FALSE"
- EnableEnhancedInstructionSet="1"
- UsePrecompiledHeader="2"
- PrecompiledHeaderThrough="prefix.h"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="maxapi.lib maxaudio.lib "
- OutputFile="max-msvc\xsample.mxe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="&quot;C:\data\prog\audio\maxmspsdk_win\4.5 headers\c74support\max-includes&quot;;&quot;C:\data\prog\audio\maxmspsdk_win\4.5 headers\c74support\msp-includes&quot;;&quot;..\flext\max-msvc&quot;"
- ImportLibrary=".\max-msvc\r/xsample.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\pd-msvc\r/xsample.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="doc"
- Filter="">
- <File
- RelativePath="readme.txt">
- </File>
- </Filter>
- <File
- RelativePath="source\groove.cpp">
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;FLEXT_SHARED"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;FLEXT_SHARED"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;FLEXT_SYS=1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\inter.cpp">
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;FLEXT_SHARED"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;FLEXT_SHARED"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;FLEXT_SYS=1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\inter.h">
- </File>
- <File
- RelativePath="source\main.cpp">
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;FLEXT_SHARED"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;FLEXT_SHARED"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;FLEXT_SYS=1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\main.h">
- </File>
- <File
- RelativePath="source\play.cpp">
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;FLEXT_SHARED"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;FLEXT_SHARED"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;FLEXT_SYS=1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\record.cpp">
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;FLEXT_SHARED"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;FLEXT_SHARED"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;FLEXT_SYS=1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/externals/grill/xsample/xsample.xcode/project.pbxproj b/externals/grill/xsample/xsample.xcode/project.pbxproj
deleted file mode 100644
index bffba804..00000000
--- a/externals/grill/xsample/xsample.xcode/project.pbxproj
+++ /dev/null
@@ -1,625 +0,0 @@
-// !$*UTF8*$!
-{
- archiveVersion = 1;
- classes = {
- };
- objectVersion = 39;
- objects = {
- 034768DDFF38A45A11DB9C8B = {
- children = (
- D2AAC09D05546B4700DB518D,
- E9974E53077083C700206F68,
- );
- isa = PBXGroup;
- name = Products;
- refType = 4;
- sourceTree = "<group>";
- };
-//030
-//031
-//032
-//033
-//034
-//080
-//081
-//082
-//083
-//084
- 0867D690FE84028FC02AAC07 = {
- buildSettings = {
- };
- buildStyles = (
- 4F0BB7EC011F40E904CA0E50,
- 4F0BB7ED011F40E904CA0E50,
- );
- hasScannedForEncodings = 1;
- isa = PBXProject;
- mainGroup = 0867D691FE84028FC02AAC07;
- productRefGroup = 034768DDFF38A45A11DB9C8B;
- projectDirPath = "";
- targets = (
- D2AAC09C05546B4700DB518D,
- E9974E52077083C700206F68,
- );
- };
- 0867D691FE84028FC02AAC07 = {
- children = (
- E9974EC507708CFA00206F68,
- 08FB77ACFE841707C02AAC07,
- 0867D69AFE84028FC02AAC07,
- 034768DDFF38A45A11DB9C8B,
- );
- isa = PBXGroup;
- name = xsample;
- refType = 4;
- sourceTree = "<group>";
- };
- 0867D69AFE84028FC02AAC07 = {
- children = (
- E98C3076078D948800EC0264,
- E94AC9630789EEA300AE1770,
- E94AC9610789EE8700AE1770,
- E9974DFA0770750400206F68,
- E9974DFB0770750400206F68,
- );
- isa = PBXGroup;
- name = "External Frameworks and Libraries";
- refType = 4;
- sourceTree = "<group>";
- };
- 08FB77ACFE841707C02AAC07 = {
- children = (
- E9974EAF07708BF700206F68,
- E9974E58077084DA00206F68,
- E9974E2B07707D1400206F68,
- E9974DE50770749400206F68,
- E9974DE60770749400206F68,
- E9974DE70770749400206F68,
- E9974DE80770749400206F68,
- E9974DE90770749400206F68,
- E9974DEA0770749400206F68,
- E9974DEB0770749400206F68,
- );
- isa = PBXGroup;
- name = Source;
- refType = 4;
- sourceTree = "<group>";
- };
-//080
-//081
-//082
-//083
-//084
-//4F0
-//4F1
-//4F2
-//4F3
-//4F4
- 4F0BB7EC011F40E904CA0E50 = {
- buildSettings = {
- COPY_PHASE_STRIP = NO;
- DEBUGGING_SYMBOLS = YES;
- GCC_ALTIVEC_EXTENSIONS = YES;
- GCC_DYNAMIC_NO_PIC = NO;
- GCC_ENABLE_FIX_AND_CONTINUE = YES;
- GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
- GCC_OPTIMIZATION_LEVEL = 0;
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_PREFIX_HEADER = source/prefix.h;
- GCC_PREPROCESSOR_DEFINITIONS = "$(GCC_PREPROCESSOR_DEFINITIONS) _DEBUG FLEXT_USESIMD";
- OPTIMIZATION_CFLAGS = "-O0";
- ZERO_LINK = YES;
- };
- isa = PBXBuildStyle;
- name = Development;
- };
- 4F0BB7ED011F40E904CA0E50 = {
- buildSettings = {
- COPY_PHASE_STRIP = YES;
- GCC_ALTIVEC_EXTENSIONS = YES;
- GCC_ENABLE_FIX_AND_CONTINUE = NO;
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_PREFIX_HEADER = source/prefix.h;
- GCC_PREPROCESSOR_DEFINITIONS = "$(GCC_PREPROCESSOR_DEFINITIONS) NDEBUG FLEXT_USESIMD";
- ZERO_LINK = NO;
- };
- isa = PBXBuildStyle;
- name = Deployment;
- };
-//4F0
-//4F1
-//4F2
-//4F3
-//4F4
-//D20
-//D21
-//D22
-//D23
-//D24
- D2AAC09905546B4700DB518D = {
- buildActionMask = 2147483647;
- files = (
- E9974DF50770749400206F68,
- E9974DF70770749400206F68,
- E9974E2D07707D1400206F68,
- );
- isa = PBXHeadersBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- D2AAC09A05546B4700DB518D = {
- buildActionMask = 2147483647;
- files = (
- E9974DF30770749400206F68,
- E9974DF40770749400206F68,
- E9974DF60770749400206F68,
- E9974DF80770749400206F68,
- E9974DF90770749400206F68,
- );
- isa = PBXSourcesBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- D2AAC09B05546B4700DB518D = {
- buildActionMask = 2147483647;
- files = (
- E94AC9640789EEA300AE1770,
- E98C3077078D948800EC0264,
- );
- isa = PBXFrameworksBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- D2AAC09C05546B4700DB518D = {
- buildPhases = (
- D2AAC09905546B4700DB518D,
- D2AAC09B05546B4700DB518D,
- D2AAC09A05546B4700DB518D,
- );
- buildRules = (
- );
- buildSettings = {
- DYLIB_COMPATIBILITY_VERSION = 1;
- DYLIB_CURRENT_VERSION = 1;
- EXECUTABLE_EXTENSION = pd_darwin;
- GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
- GCC_INPUT_FILETYPE = sourcecode.cpp.cpp;
- GCC_PREPROCESSOR_DEFINITIONS = "FLEXT_SYS=2";
- HEADER_SEARCH_PATHS = "$(PDApp)/src $(flext)/source";
- INSTALL_PATH = "$(PD)/extra";
- LIBRARY_SEARCH_PATHS = "$(flext)/build";
- LIBRARY_STYLE = BUNDLE;
- OTHER_LDFLAGS = "-bundle_loader $(PDApp)/bin/pd";
- PRODUCT_NAME = xsample;
- };
- dependencies = (
- );
- isa = PBXNativeTarget;
- name = "pd static";
- productName = xsample;
- productReference = D2AAC09D05546B4700DB518D;
- productType = "com.apple.product-type.library.dynamic";
- };
- D2AAC09D05546B4700DB518D = {
- explicitFileType = "compiled.mach-o.dylib";
- includeInIndex = 0;
- isa = PBXFileReference;
- path = xsample.pd_darwin;
- refType = 3;
- sourceTree = BUILT_PRODUCTS_DIR;
- };
-//D20
-//D21
-//D22
-//D23
-//D24
-//E90
-//E91
-//E92
-//E93
-//E94
- E94AC9610789EE8700AE1770 = {
- isa = PBXFileReference;
- lastKnownFileType = archive.ar;
- name = "libflext-max_sd.a";
- path = "/usr/local/lib/libflext-max_sd.a";
- refType = 0;
- sourceTree = "<absolute>";
- };
- E94AC9630789EEA300AE1770 = {
- isa = PBXFileReference;
- lastKnownFileType = archive.ar;
- name = "libflext-pd_sd.a";
- path = "/usr/local/lib/libflext-pd_sd.a";
- refType = 0;
- sourceTree = "<absolute>";
- };
- E94AC9640789EEA300AE1770 = {
- fileRef = E94AC9630789EEA300AE1770;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E98C3076078D948800EC0264 = {
- isa = PBXFileReference;
- lastKnownFileType = wrapper.framework;
- name = vecLib.framework;
- path = /System/Library/Frameworks/vecLib.framework;
- refType = 0;
- sourceTree = "<absolute>";
- };
- E98C3077078D948800EC0264 = {
- fileRef = E98C3076078D948800EC0264;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E98C3078078D948800EC0264 = {
- fileRef = E98C3076078D948800EC0264;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974DE50770749400206F68 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = groove.cpp;
- path = source/groove.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- E9974DE60770749400206F68 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = inter.cpp;
- path = source/inter.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- E9974DE70770749400206F68 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = inter.h;
- path = source/inter.h;
- refType = 4;
- sourceTree = "<group>";
- };
- E9974DE80770749400206F68 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = main.cpp;
- path = source/main.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- E9974DE90770749400206F68 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = main.h;
- path = source/main.h;
- refType = 4;
- sourceTree = "<group>";
- };
- E9974DEA0770749400206F68 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = play.cpp;
- path = source/play.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- E9974DEB0770749400206F68 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = record.cpp;
- path = source/record.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- E9974DF30770749400206F68 = {
- fileRef = E9974DE50770749400206F68;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974DF40770749400206F68 = {
- fileRef = E9974DE60770749400206F68;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974DF50770749400206F68 = {
- fileRef = E9974DE70770749400206F68;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974DF60770749400206F68 = {
- fileRef = E9974DE80770749400206F68;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974DF70770749400206F68 = {
- fileRef = E9974DE90770749400206F68;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974DF80770749400206F68 = {
- fileRef = E9974DEA0770749400206F68;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974DF90770749400206F68 = {
- fileRef = E9974DEB0770749400206F68;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974DFA0770750400206F68 = {
- isa = PBXFileReference;
- lastKnownFileType = wrapper.framework;
- name = MaxAPI.framework;
- path = /Library/Frameworks/MaxAPI.framework;
- refType = 0;
- sourceTree = "<absolute>";
- };
- E9974DFB0770750400206F68 = {
- isa = PBXFileReference;
- lastKnownFileType = wrapper.framework;
- name = MaxAudioAPI.framework;
- path = /Library/Frameworks/MaxAudioAPI.framework;
- refType = 0;
- sourceTree = "<absolute>";
- };
- E9974E2B07707D1400206F68 = {
- fileEncoding = 4;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = prefix.h;
- path = source/prefix.h;
- refType = 4;
- sourceTree = "<group>";
- };
- E9974E2D07707D1400206F68 = {
- fileRef = E9974E2B07707D1400206F68;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974E4F077083C700206F68 = {
- buildActionMask = 2147483647;
- files = (
- E9974E59077084DA00206F68,
- E9974EB007708BF700206F68,
- );
- isa = PBXResourcesBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- E9974E50077083C700206F68 = {
- buildActionMask = 2147483647;
- files = (
- E9974E5E0770852000206F68,
- E9974E5F0770852000206F68,
- E9974E600770852000206F68,
- E9974E610770852000206F68,
- E9974E620770852000206F68,
- E9974E630770852000206F68,
- E9974E640770852000206F68,
- E9974E650770852000206F68,
- );
- isa = PBXSourcesBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- E9974E51077083C700206F68 = {
- buildActionMask = 2147483647;
- files = (
- E9B5873A08E6F228002DA49F,
- E9974E5C0770851700206F68,
- E9974E5B0770851500206F68,
- E98C3078078D948800EC0264,
- );
- isa = PBXFrameworksBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- E9974E52077083C700206F68 = {
- buildPhases = (
- E9974E4F077083C700206F68,
- E9974E50077083C700206F68,
- E9974E51077083C700206F68,
- E9974EC207708C9300206F68,
- );
- buildRules = (
- );
- buildSettings = {
- GCC_PREPROCESSOR_DEFINITIONS = "FLEXT_SYS=1";
- GENERATE_PKGINFO_FILE = YES;
- HEADER_SEARCH_PATHS = "$(MaxSDK)/max-includes $(MaxSDK)/msp-includes $(flext)/source";
- INFOPLIST_FILE = "source/xsample-Info.plist";
- INSTALL_PATH = "/Library/Application Support/Cycling 74/externals/flext";
- LIBRARY_SEARCH_PATHS = "$(flext)/build";
- LIBRARY_STYLE = DYNAMIC;
- OTHER_CFLAGS = "";
- OTHER_REZFLAGS = "";
- PRODUCT_NAME = xsample;
- SECTORDER_FLAGS = "";
- WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas";
- WRAPPER_EXTENSION = mxo;
- };
- dependencies = (
- );
- isa = PBXNativeTarget;
- name = "max static";
- productName = "Max xsample static";
- productReference = E9974E53077083C700206F68;
- productSettingsXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
-<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
-<plist version=\"1.0\">
-<dict>
- <key>CFBundleDevelopmentRegion</key>
- <string>English</string>
- <key>CFBundleExecutable</key>
- <string>Max xsample static</string>
- <key>CFBundleIdentifier</key>
- <string>com.yourcompany.Max_xsample_static</string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundlePackageType</key>
- <string>APPL</string>
- <key>CFBundleSignature</key>
- <string>????</string>
- <key>CFBundleVersion</key>
- <string>1.0</string>
- <key>CSResourcesFileMapped</key>
- <string>yes</string>
-</dict>
-</plist>
-";
- productType = "com.apple.product-type.bundle";
- };
- E9974E53077083C700206F68 = {
- explicitFileType = wrapper.cfbundle;
- includeInIndex = 0;
- isa = PBXFileReference;
- path = xsample.mxo;
- refType = 3;
- sourceTree = BUILT_PRODUCTS_DIR;
- };
- E9974E58077084DA00206F68 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = text.xml;
- name = "xsample-Info.plist";
- path = "source/xsample-Info.plist";
- refType = 4;
- sourceTree = "<group>";
- };
- E9974E59077084DA00206F68 = {
- fileRef = E9974E58077084DA00206F68;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974E5B0770851500206F68 = {
- fileRef = E9974DFA0770750400206F68;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974E5C0770851700206F68 = {
- fileRef = E9974DFB0770750400206F68;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974E5E0770852000206F68 = {
- fileRef = E9974E2B07707D1400206F68;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974E5F0770852000206F68 = {
- fileRef = E9974DE50770749400206F68;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974E600770852000206F68 = {
- fileRef = E9974DE60770749400206F68;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974E610770852000206F68 = {
- fileRef = E9974DE70770749400206F68;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974E620770852000206F68 = {
- fileRef = E9974DE80770749400206F68;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974E630770852000206F68 = {
- fileRef = E9974DE90770749400206F68;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974E640770852000206F68 = {
- fileRef = E9974DEA0770749400206F68;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974E650770852000206F68 = {
- fileRef = E9974DEB0770749400206F68;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974EAF07708BF700206F68 = {
- isa = PBXFileReference;
- lastKnownFileType = archive.rsrc;
- name = xsample.rsrc;
- path = source/xsample.rsrc;
- refType = 4;
- sourceTree = "<group>";
- };
- E9974EB007708BF700206F68 = {
- fileRef = E9974EAF07708BF700206F68;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9974EC207708C9300206F68 = {
- buildActionMask = 8;
- dstPath = "/Library/Application Support/Cycling '74/init";
- dstSubfolderSpec = 0;
- files = (
- E9974EC607708D0C00206F68,
- );
- isa = PBXCopyFilesBuildPhase;
- runOnlyForDeploymentPostprocessing = 1;
- };
- E9974EC307708CED00206F68 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = text;
- name = "xsample-objectmappings.txt";
- path = "maxmsp/xsample-objectmappings.txt";
- refType = 4;
- sourceTree = "<group>";
- };
- E9974EC507708CFA00206F68 = {
- children = (
- E9974EC307708CED00206F68,
- );
- isa = PBXGroup;
- name = Max;
- refType = 4;
- sourceTree = "<group>";
- };
- E9974EC607708D0C00206F68 = {
- fileRef = E9974EC307708CED00206F68;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E9B5873A08E6F228002DA49F = {
- fileRef = E94AC9610789EE8700AE1770;
- isa = PBXBuildFile;
- settings = {
- };
- };
- };
- rootObject = 0867D690FE84028FC02AAC07;
-}
diff --git a/externals/grill/xsample/xsample.xcodeproj/project.pbxproj b/externals/grill/xsample/xsample.xcodeproj/project.pbxproj
deleted file mode 100644
index 90e0aa55..00000000
--- a/externals/grill/xsample/xsample.xcodeproj/project.pbxproj
+++ /dev/null
@@ -1,529 +0,0 @@
-// !$*UTF8*$!
-{
- archiveVersion = 1;
- classes = {
- };
- objectVersion = 42;
- objects = {
-
-/* Begin PBXBuildFile section */
- E94AC9640789EEA300AE1770 /* libflext-pd_sd.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E94AC9630789EEA300AE1770 /* libflext-pd_sd.a */; };
- E98C3077078D948800EC0264 /* vecLib.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E98C3076078D948800EC0264 /* vecLib.framework */; };
- E98C3078078D948800EC0264 /* vecLib.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E98C3076078D948800EC0264 /* vecLib.framework */; };
- E9974DF30770749400206F68 /* groove.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9974DE50770749400206F68 /* groove.cpp */; };
- E9974DF40770749400206F68 /* inter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9974DE60770749400206F68 /* inter.cpp */; };
- E9974DF50770749400206F68 /* inter.h in Headers */ = {isa = PBXBuildFile; fileRef = E9974DE70770749400206F68 /* inter.h */; };
- E9974DF60770749400206F68 /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9974DE80770749400206F68 /* main.cpp */; };
- E9974DF70770749400206F68 /* main.h in Headers */ = {isa = PBXBuildFile; fileRef = E9974DE90770749400206F68 /* main.h */; };
- E9974DF80770749400206F68 /* play.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9974DEA0770749400206F68 /* play.cpp */; };
- E9974DF90770749400206F68 /* record.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9974DEB0770749400206F68 /* record.cpp */; };
- E9974E2D07707D1400206F68 /* prefix.h in Headers */ = {isa = PBXBuildFile; fileRef = E9974E2B07707D1400206F68 /* prefix.h */; };
- E9974E59077084DA00206F68 /* xsample-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = E9974E58077084DA00206F68 /* xsample-Info.plist */; };
- E9974E5B0770851500206F68 /* MaxAPI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E9974DFA0770750400206F68 /* MaxAPI.framework */; };
- E9974E5C0770851700206F68 /* MaxAudioAPI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E9974DFB0770750400206F68 /* MaxAudioAPI.framework */; };
- E9974E5E0770852000206F68 /* prefix.h in Sources */ = {isa = PBXBuildFile; fileRef = E9974E2B07707D1400206F68 /* prefix.h */; };
- E9974E5F0770852000206F68 /* groove.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9974DE50770749400206F68 /* groove.cpp */; };
- E9974E600770852000206F68 /* inter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9974DE60770749400206F68 /* inter.cpp */; };
- E9974E610770852000206F68 /* inter.h in Sources */ = {isa = PBXBuildFile; fileRef = E9974DE70770749400206F68 /* inter.h */; };
- E9974E620770852000206F68 /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9974DE80770749400206F68 /* main.cpp */; };
- E9974E630770852000206F68 /* main.h in Sources */ = {isa = PBXBuildFile; fileRef = E9974DE90770749400206F68 /* main.h */; };
- E9974E640770852000206F68 /* play.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9974DEA0770749400206F68 /* play.cpp */; };
- E9974E650770852000206F68 /* record.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9974DEB0770749400206F68 /* record.cpp */; };
- E9974EB007708BF700206F68 /* xsample.rsrc in Resources */ = {isa = PBXBuildFile; fileRef = E9974EAF07708BF700206F68 /* xsample.rsrc */; };
- E9974EC607708D0C00206F68 /* xsample-objectmappings.txt in CopyFiles */ = {isa = PBXBuildFile; fileRef = E9974EC307708CED00206F68 /* xsample-objectmappings.txt */; };
- E9B5873A08E6F228002DA49F /* libflext-max_sd.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E94AC9610789EE8700AE1770 /* libflext-max_sd.a */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXCopyFilesBuildPhase section */
- E9974EC207708C9300206F68 /* CopyFiles */ = {
- isa = PBXCopyFilesBuildPhase;
- buildActionMask = 8;
- dstPath = "/Library/Application Support/Cycling '74/init";
- dstSubfolderSpec = 0;
- files = (
- E9974EC607708D0C00206F68 /* xsample-objectmappings.txt in CopyFiles */,
- );
- runOnlyForDeploymentPostprocessing = 1;
- };
-/* End PBXCopyFilesBuildPhase section */
-
-/* Begin PBXFileReference section */
- D2AAC09D05546B4700DB518D /* xsample.pd_darwin */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = xsample.pd_darwin; sourceTree = BUILT_PRODUCTS_DIR; };
- E94AC9610789EE8700AE1770 /* libflext-max_sd.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = "libflext-max_sd.a"; path = "/usr/local/lib/libflext-max_sd.a"; sourceTree = "<absolute>"; };
- E94AC9630789EEA300AE1770 /* libflext-pd_sd.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = "libflext-pd_sd.a"; path = "/usr/local/lib/libflext-pd_sd.a"; sourceTree = "<absolute>"; };
- E98C3076078D948800EC0264 /* vecLib.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = vecLib.framework; path = /System/Library/Frameworks/vecLib.framework; sourceTree = "<absolute>"; };
- E9974DE50770749400206F68 /* groove.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = groove.cpp; path = source/groove.cpp; sourceTree = "<group>"; };
- E9974DE60770749400206F68 /* inter.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = inter.cpp; path = source/inter.cpp; sourceTree = "<group>"; };
- E9974DE70770749400206F68 /* inter.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = inter.h; path = source/inter.h; sourceTree = "<group>"; };
- E9974DE80770749400206F68 /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = main.cpp; path = source/main.cpp; sourceTree = "<group>"; };
- E9974DE90770749400206F68 /* main.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = main.h; path = source/main.h; sourceTree = "<group>"; };
- E9974DEA0770749400206F68 /* play.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = play.cpp; path = source/play.cpp; sourceTree = "<group>"; };
- E9974DEB0770749400206F68 /* record.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = record.cpp; path = source/record.cpp; sourceTree = "<group>"; };
- E9974DFA0770750400206F68 /* MaxAPI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MaxAPI.framework; path = /Library/Frameworks/MaxAPI.framework; sourceTree = "<absolute>"; };
- E9974DFB0770750400206F68 /* MaxAudioAPI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MaxAudioAPI.framework; path = /Library/Frameworks/MaxAudioAPI.framework; sourceTree = "<absolute>"; };
- E9974E2B07707D1400206F68 /* prefix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = prefix.h; path = source/prefix.h; sourceTree = "<group>"; };
- E9974E53077083C700206F68 /* xsample.mxo */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = xsample.mxo; sourceTree = BUILT_PRODUCTS_DIR; };
- E9974E58077084DA00206F68 /* xsample-Info.plist */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.xml; name = "xsample-Info.plist"; path = "source/xsample-Info.plist"; sourceTree = "<group>"; };
- E9974EAF07708BF700206F68 /* xsample.rsrc */ = {isa = PBXFileReference; lastKnownFileType = archive.rsrc; name = xsample.rsrc; path = source/xsample.rsrc; sourceTree = "<group>"; };
- E9974EC307708CED00206F68 /* xsample-objectmappings.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = "xsample-objectmappings.txt"; path = "maxmsp/xsample-objectmappings.txt"; sourceTree = "<group>"; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
- D2AAC09B05546B4700DB518D /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- E94AC9640789EEA300AE1770 /* libflext-pd_sd.a in Frameworks */,
- E98C3077078D948800EC0264 /* vecLib.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- E9974E51077083C700206F68 /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- E9B5873A08E6F228002DA49F /* libflext-max_sd.a in Frameworks */,
- E9974E5C0770851700206F68 /* MaxAudioAPI.framework in Frameworks */,
- E9974E5B0770851500206F68 /* MaxAPI.framework in Frameworks */,
- E98C3078078D948800EC0264 /* vecLib.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
- 034768DDFF38A45A11DB9C8B /* Products */ = {
- isa = PBXGroup;
- children = (
- D2AAC09D05546B4700DB518D /* xsample.pd_darwin */,
- E9974E53077083C700206F68 /* xsample.mxo */,
- );
- name = Products;
- sourceTree = "<group>";
- };
- 0867D691FE84028FC02AAC07 /* xsample */ = {
- isa = PBXGroup;
- children = (
- E9974EC507708CFA00206F68 /* Max */,
- 08FB77ACFE841707C02AAC07 /* Source */,
- 0867D69AFE84028FC02AAC07 /* External Frameworks and Libraries */,
- 034768DDFF38A45A11DB9C8B /* Products */,
- );
- name = xsample;
- sourceTree = "<group>";
- };
- 0867D69AFE84028FC02AAC07 /* External Frameworks and Libraries */ = {
- isa = PBXGroup;
- children = (
- E98C3076078D948800EC0264 /* vecLib.framework */,
- E94AC9630789EEA300AE1770 /* libflext-pd_sd.a */,
- E94AC9610789EE8700AE1770 /* libflext-max_sd.a */,
- E9974DFA0770750400206F68 /* MaxAPI.framework */,
- E9974DFB0770750400206F68 /* MaxAudioAPI.framework */,
- );
- name = "External Frameworks and Libraries";
- sourceTree = "<group>";
- };
- 08FB77ACFE841707C02AAC07 /* Source */ = {
- isa = PBXGroup;
- children = (
- E9974EAF07708BF700206F68 /* xsample.rsrc */,
- E9974E58077084DA00206F68 /* xsample-Info.plist */,
- E9974E2B07707D1400206F68 /* prefix.h */,
- E9974DE50770749400206F68 /* groove.cpp */,
- E9974DE60770749400206F68 /* inter.cpp */,
- E9974DE70770749400206F68 /* inter.h */,
- E9974DE80770749400206F68 /* main.cpp */,
- E9974DE90770749400206F68 /* main.h */,
- E9974DEA0770749400206F68 /* play.cpp */,
- E9974DEB0770749400206F68 /* record.cpp */,
- );
- name = Source;
- sourceTree = "<group>";
- };
- E9974EC507708CFA00206F68 /* Max */ = {
- isa = PBXGroup;
- children = (
- E9974EC307708CED00206F68 /* xsample-objectmappings.txt */,
- );
- name = Max;
- sourceTree = "<group>";
- };
-/* End PBXGroup section */
-
-/* Begin PBXHeadersBuildPhase section */
- D2AAC09905546B4700DB518D /* Headers */ = {
- isa = PBXHeadersBuildPhase;
- buildActionMask = 2147483647;
- files = (
- E9974DF50770749400206F68 /* inter.h in Headers */,
- E9974DF70770749400206F68 /* main.h in Headers */,
- E9974E2D07707D1400206F68 /* prefix.h in Headers */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXHeadersBuildPhase section */
-
-/* Begin PBXNativeTarget section */
- D2AAC09C05546B4700DB518D /* pd static */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = E9A5BC8A0A33819900AD9F03 /* Build configuration list for PBXNativeTarget "pd static" */;
- buildPhases = (
- D2AAC09905546B4700DB518D /* Headers */,
- D2AAC09B05546B4700DB518D /* Frameworks */,
- D2AAC09A05546B4700DB518D /* Sources */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = "pd static";
- productName = xsample;
- productReference = D2AAC09D05546B4700DB518D /* xsample.pd_darwin */;
- productType = "com.apple.product-type.library.dynamic";
- };
- E9974E52077083C700206F68 /* max static */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = E9A5BC8E0A33819900AD9F03 /* Build configuration list for PBXNativeTarget "max static" */;
- buildPhases = (
- E9974E4F077083C700206F68 /* Resources */,
- E9974E50077083C700206F68 /* Sources */,
- E9974E51077083C700206F68 /* Frameworks */,
- E9974EC207708C9300206F68 /* CopyFiles */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = "max static";
- productName = "Max xsample static";
- productReference = E9974E53077083C700206F68 /* xsample.mxo */;
- productType = "com.apple.product-type.bundle";
- };
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
- 0867D690FE84028FC02AAC07 /* Project object */ = {
- isa = PBXProject;
- buildConfigurationList = E9A5BC920A33819900AD9F03 /* Build configuration list for PBXProject "xsample" */;
- hasScannedForEncodings = 1;
- mainGroup = 0867D691FE84028FC02AAC07 /* xsample */;
- productRefGroup = 034768DDFF38A45A11DB9C8B /* Products */;
- projectDirPath = "";
- targets = (
- D2AAC09C05546B4700DB518D /* pd static */,
- E9974E52077083C700206F68 /* max static */,
- );
- };
-/* End PBXProject section */
-
-/* Begin PBXResourcesBuildPhase section */
- E9974E4F077083C700206F68 /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- E9974E59077084DA00206F68 /* xsample-Info.plist in Resources */,
- E9974EB007708BF700206F68 /* xsample.rsrc in Resources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXResourcesBuildPhase section */
-
-/* Begin PBXSourcesBuildPhase section */
- D2AAC09A05546B4700DB518D /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- E9974DF30770749400206F68 /* groove.cpp in Sources */,
- E9974DF40770749400206F68 /* inter.cpp in Sources */,
- E9974DF60770749400206F68 /* main.cpp in Sources */,
- E9974DF80770749400206F68 /* play.cpp in Sources */,
- E9974DF90770749400206F68 /* record.cpp in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- E9974E50077083C700206F68 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- E9974E5E0770852000206F68 /* prefix.h in Sources */,
- E9974E5F0770852000206F68 /* groove.cpp in Sources */,
- E9974E600770852000206F68 /* inter.cpp in Sources */,
- E9974E610770852000206F68 /* inter.h in Sources */,
- E9974E620770852000206F68 /* main.cpp in Sources */,
- E9974E630770852000206F68 /* main.h in Sources */,
- E9974E640770852000206F68 /* play.cpp in Sources */,
- E9974E650770852000206F68 /* record.cpp in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXSourcesBuildPhase section */
-
-/* Begin XCBuildConfiguration section */
- E9A5BC8B0A33819900AD9F03 /* Development */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- COPY_PHASE_STRIP = NO;
- DEBUGGING_SYMBOLS = YES;
- DYLIB_COMPATIBILITY_VERSION = 1;
- DYLIB_CURRENT_VERSION = 1;
- EXECUTABLE_EXTENSION = pd_darwin;
- GCC_ALTIVEC_EXTENSIONS = YES;
- GCC_DYNAMIC_NO_PIC = NO;
- GCC_ENABLE_FIX_AND_CONTINUE = YES;
- GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
- GCC_INPUT_FILETYPE = sourcecode.cpp.cpp;
- GCC_OPTIMIZATION_LEVEL = 0;
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_PREFIX_HEADER = source/prefix.h;
- GCC_PREPROCESSOR_DEFINITIONS = (
- "FLEXT_SYS=2",
- _DEBUG,
- FLEXT_USESIMD,
- );
- HEADER_SEARCH_PATHS = (
- "$(PD-devel)/src",
- /usr/local/include/flext,
- );
- INSTALL_PATH = "$(PD)/extra";
- LIBRARY_SEARCH_PATHS = "";
- LIBRARY_STYLE = BUNDLE;
- MACH_O_TYPE = mh_dylib;
- MACOSX_DEPLOYMENT_TARGET = 10.3;
- OPTIMIZATION_CFLAGS = "-O0";
- OTHER_LDFLAGS = (
- "-undefined",
- dynamic_lookup,
- );
- PRODUCT_NAME = xsample;
- ZERO_LINK = YES;
- };
- name = Development;
- };
- E9A5BC8C0A33819900AD9F03 /* Deployment */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- COPY_PHASE_STRIP = YES;
- DYLIB_COMPATIBILITY_VERSION = 1;
- DYLIB_CURRENT_VERSION = 1;
- EXECUTABLE_EXTENSION = pd_darwin;
- GCC_ALTIVEC_EXTENSIONS = YES;
- GCC_AUTO_VECTORIZATION = YES;
- GCC_ENABLE_FIX_AND_CONTINUE = NO;
- GCC_ENABLE_SSE3_EXTENSIONS = YES;
- GCC_FAST_MATH = YES;
- GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
- GCC_OPTIMIZATION_LEVEL = s;
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_PREFIX_HEADER = source/prefix.h;
- GCC_PREPROCESSOR_DEFINITIONS = (
- "FLEXT_SYS=2",
- NDEBUG,
- FLEXT_USESIMD,
- );
- HEADER_SEARCH_PATHS = (
- "$(PD)/src",
- "$(flext)/source",
- );
- INSTALL_PATH = "$(PD)/extra";
- LIBRARY_SEARCH_PATHS = "$(flext)/build";
- LIBRARY_STYLE = BUNDLE;
- MACH_O_TYPE = mh_dylib;
- MACOSX_DEPLOYMENT_TARGET = 10.3;
- OTHER_LDFLAGS = (
- "-lflext-pd_s",
- "-undefined",
- dynamic_lookup,
- );
- PRODUCT_NAME = xsample;
- ZERO_LINK = NO;
- };
- name = Deployment;
- };
- E9A5BC8D0A33819900AD9F03 /* Default */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- DYLIB_COMPATIBILITY_VERSION = 1;
- DYLIB_CURRENT_VERSION = 1;
- EXECUTABLE_EXTENSION = pd_darwin;
- GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
- GCC_INPUT_FILETYPE = sourcecode.cpp.cpp;
- GCC_PREPROCESSOR_DEFINITIONS = "FLEXT_SYS=2";
- HEADER_SEARCH_PATHS = (
- "$(PDApp)/src",
- "$(flext)/source",
- );
- INSTALL_PATH = "$(PD)/extra";
- LIBRARY_SEARCH_PATHS = "$(flext)/build";
- LIBRARY_STYLE = BUNDLE;
- MACH_O_TYPE = mh_bundle;
- OTHER_LDFLAGS = (
- "-bundle_loader",
- "$(PDApp)/bin/pd",
- );
- PRODUCT_NAME = xsample;
- };
- name = Default;
- };
- E9A5BC8F0A33819900AD9F03 /* Development */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- COPY_PHASE_STRIP = NO;
- DEBUGGING_SYMBOLS = YES;
- GCC_ALTIVEC_EXTENSIONS = YES;
- GCC_DYNAMIC_NO_PIC = NO;
- GCC_ENABLE_FIX_AND_CONTINUE = YES;
- GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
- GCC_OPTIMIZATION_LEVEL = 0;
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_PREFIX_HEADER = source/prefix.h;
- GCC_PREPROCESSOR_DEFINITIONS = (
- "FLEXT_SYS=1",
- _DEBUG,
- FLEXT_USESIMD,
- );
- GENERATE_PKGINFO_FILE = YES;
- HEADER_SEARCH_PATHS = (
- "$(maxsdk)/max-includes",
- "$(maxsdk)/msp-includes",
- "$(flext)/source",
- );
- INFOPLIST_FILE = "source/xsample-Info.plist";
- INSTALL_PATH = "/Library/Application Support/Cycling 74/externals/flext";
- LIBRARY_SEARCH_PATHS = "$(flext)/build";
- LIBRARY_STYLE = DYNAMIC;
- OPTIMIZATION_CFLAGS = "-O0";
- OTHER_CFLAGS = "";
- OTHER_REZFLAGS = "";
- PRODUCT_NAME = xsample;
- SECTORDER_FLAGS = "";
- WARNING_CFLAGS = (
- "-Wmost",
- "-Wno-four-char-constants",
- "-Wno-unknown-pragmas",
- );
- WRAPPER_EXTENSION = mxo;
- ZERO_LINK = YES;
- };
- name = Development;
- };
- E9A5BC900A33819900AD9F03 /* Deployment */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- COPY_PHASE_STRIP = YES;
- GCC_ALTIVEC_EXTENSIONS = YES;
- GCC_ENABLE_FIX_AND_CONTINUE = NO;
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_PREFIX_HEADER = source/prefix.h;
- GCC_PREPROCESSOR_DEFINITIONS = (
- "FLEXT_SYS=1",
- NDEBUG,
- FLEXT_USESIMD,
- );
- GENERATE_PKGINFO_FILE = YES;
- HEADER_SEARCH_PATHS = (
- "$(maxsdk)/max-includes",
- "$(maxsdk)/msp-includes",
- "$(flext)/source",
- );
- INFOPLIST_FILE = "source/xsample-Info.plist";
- INSTALL_PATH = "/Library/Application Support/Cycling 74/externals/flext";
- LIBRARY_SEARCH_PATHS = "$(flext)/build";
- LIBRARY_STYLE = DYNAMIC;
- OTHER_CFLAGS = "";
- OTHER_LDFLAGS = "-lflext-max_s";
- OTHER_REZFLAGS = "";
- PRODUCT_NAME = xsample;
- SECTORDER_FLAGS = "";
- WARNING_CFLAGS = (
- "-Wmost",
- "-Wno-four-char-constants",
- "-Wno-unknown-pragmas",
- );
- WRAPPER_EXTENSION = mxo;
- ZERO_LINK = NO;
- };
- name = Deployment;
- };
- E9A5BC910A33819900AD9F03 /* Default */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- GCC_PREPROCESSOR_DEFINITIONS = "FLEXT_SYS=1";
- GENERATE_PKGINFO_FILE = YES;
- HEADER_SEARCH_PATHS = (
- "$(maxsdk)/max-includes",
- "$(maxsdk)/msp-includes",
- "$(flext)/source",
- );
- INFOPLIST_FILE = "source/xsample-Info.plist";
- INSTALL_PATH = "/Library/Application Support/Cycling 74/externals/flext";
- LIBRARY_SEARCH_PATHS = "$(flext)/build";
- LIBRARY_STYLE = DYNAMIC;
- OTHER_CFLAGS = "";
- OTHER_REZFLAGS = "";
- PRODUCT_NAME = xsample;
- SECTORDER_FLAGS = "";
- WARNING_CFLAGS = (
- "-Wmost",
- "-Wno-four-char-constants",
- "-Wno-unknown-pragmas",
- );
- WRAPPER_EXTENSION = mxo;
- };
- name = Default;
- };
- E9A5BC930A33819900AD9F03 /* Development */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- };
- name = Development;
- };
- E9A5BC940A33819900AD9F03 /* Deployment */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- };
- name = Deployment;
- };
- E9A5BC950A33819900AD9F03 /* Default */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- };
- name = Default;
- };
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
- E9A5BC8A0A33819900AD9F03 /* Build configuration list for PBXNativeTarget "pd static" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- E9A5BC8B0A33819900AD9F03 /* Development */,
- E9A5BC8C0A33819900AD9F03 /* Deployment */,
- E9A5BC8D0A33819900AD9F03 /* Default */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Default;
- };
- E9A5BC8E0A33819900AD9F03 /* Build configuration list for PBXNativeTarget "max static" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- E9A5BC8F0A33819900AD9F03 /* Development */,
- E9A5BC900A33819900AD9F03 /* Deployment */,
- E9A5BC910A33819900AD9F03 /* Default */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Default;
- };
- E9A5BC920A33819900AD9F03 /* Build configuration list for PBXProject "xsample" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- E9A5BC930A33819900AD9F03 /* Development */,
- E9A5BC940A33819900AD9F03 /* Deployment */,
- E9A5BC950A33819900AD9F03 /* Default */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Default;
- };
-/* End XCConfigurationList section */
- };
- rootObject = 0867D690FE84028FC02AAC07 /* Project object */;
-}