aboutsummaryrefslogtreecommitdiff
path: root/externals/grill/flext
diff options
context:
space:
mode:
authorThomas Grill <xovo@users.sourceforge.net>2003-01-02 04:37:31 +0000
committerThomas Grill <xovo@users.sourceforge.net>2003-01-02 04:37:31 +0000
commit10e0265429983876e2fd69950df4d51c8faf5635 (patch)
tree3e1c45e40bedd1b92225696ce955b902c4daf8e0 /externals/grill/flext
parent59e66762250fe61d570c5baf6c9ce6896a09e027 (diff)
""
svn path=/trunk/; revision=316
Diffstat (limited to 'externals/grill/flext')
-rw-r--r--externals/grill/flext/config-pd-bcc.txt6
-rw-r--r--externals/grill/flext/config-pd-cygwin.txt6
-rw-r--r--externals/grill/flext/config-pd-darwin.txt6
-rw-r--r--externals/grill/flext/config-pd-linux.txt6
-rw-r--r--externals/grill/flext/config-pd-msvc.txt6
-rw-r--r--externals/grill/flext/flext.cwbin205457 -> 205457 bytes
-rw-r--r--externals/grill/flext/flext.dsp6
-rw-r--r--externals/grill/flext/make-inc.pd-msvc11
-rw-r--r--externals/grill/flext/makefile.pd-linux26
-rw-r--r--externals/grill/flext/readme.txt1
-rw-r--r--externals/grill/flext/source/flsndobj.cpp28
-rw-r--r--externals/grill/flext/source/flsndobj.h2
-rw-r--r--externals/grill/flext/source/flstk.cpp36
-rw-r--r--externals/grill/flext/source/flstk.h46
-rwxr-xr-xexternals/grill/flext/tutorial/adv1/main.cpp2
-rw-r--r--externals/grill/flext/tutorial/adv2/main.cpp10
-rw-r--r--externals/grill/flext/tutorial/adv3/main.cpp6
-rw-r--r--externals/grill/flext/tutorial/attr1/main.cpp2
-rw-r--r--externals/grill/flext/tutorial/attr2/main.cpp2
-rw-r--r--externals/grill/flext/tutorial/attr3/main.cpp68
-rw-r--r--externals/grill/flext/tutorial/build-pd-bcc.bat17
-rw-r--r--externals/grill/flext/tutorial/build-pd-msvc.bat17
-rw-r--r--externals/grill/flext/tutorial/config-pd-cygwin.txt10
-rw-r--r--externals/grill/flext/tutorial/config-pd-darwin.txt10
-rw-r--r--externals/grill/flext/tutorial/config-pd-linux.txt10
-rw-r--r--externals/grill/flext/tutorial/config-pd-msvc.txt10
-rw-r--r--externals/grill/flext/tutorial/lib1/main.cpp2
-rw-r--r--externals/grill/flext/tutorial/make-sub.pd-msvc55
-rw-r--r--externals/grill/flext/tutorial/makefile.pd-cygwin14
-rw-r--r--externals/grill/flext/tutorial/makefile.pd-darwin13
-rw-r--r--externals/grill/flext/tutorial/makefile.pd-linux16
-rw-r--r--externals/grill/flext/tutorial/makefile.pd-msvc58
-rw-r--r--externals/grill/flext/tutorial/pd/ex-adv1.pd8
-rw-r--r--externals/grill/flext/tutorial/pd/ex-adv2.pd46
-rw-r--r--externals/grill/flext/tutorial/pd/ex-adv3.pd80
-rw-r--r--externals/grill/flext/tutorial/pd/ex-attr1.pd24
-rw-r--r--externals/grill/flext/tutorial/pd/ex-attr2.pd47
-rw-r--r--externals/grill/flext/tutorial/pd/ex-attr3.pd120
-rw-r--r--externals/grill/flext/tutorial/pd/ex-lib1.pd66
-rw-r--r--externals/grill/flext/tutorial/pd/ex-signal1.pd18
-rw-r--r--externals/grill/flext/tutorial/pd/ex-signal2.pd28
-rw-r--r--externals/grill/flext/tutorial/pd/ex-simple1.pd16
-rw-r--r--externals/grill/flext/tutorial/pd/ex-simple2.pd20
-rw-r--r--externals/grill/flext/tutorial/pd/ex-simple3.pd4
-rw-r--r--externals/grill/flext/tutorial/pd/ex-sndobj1.pd68
-rw-r--r--externals/grill/flext/tutorial/pd/ex-stk1.pd15
-rw-r--r--externals/grill/flext/tutorial/pd/ex-stk2.pd31
-rw-r--r--externals/grill/flext/tutorial/pd/ex-thread1.pd86
-rw-r--r--externals/grill/flext/tutorial/pd/ex-thread2.pd24
-rw-r--r--externals/grill/flext/tutorial/readme.txt16
-rw-r--r--externals/grill/flext/tutorial/signal2/main.cpp2
-rwxr-xr-xexternals/grill/flext/tutorial/simple1/main.cpp2
-rwxr-xr-xexternals/grill/flext/tutorial/simple2/main.cpp2
-rw-r--r--externals/grill/flext/tutorial/simple3/main.cpp2
-rw-r--r--externals/grill/flext/tutorial/sndobj1/main.cpp30
-rw-r--r--externals/grill/flext/tutorial/stk1/main.cpp87
-rw-r--r--externals/grill/flext/tutorial/stk1/stk1.dsp8
-rw-r--r--externals/grill/flext/tutorial/stk2/main.cpp109
-rw-r--r--externals/grill/flext/tutorial/stk2/stk2.dsp95
-rw-r--r--externals/grill/flext/tutorial/thread1/main.cpp2
-rw-r--r--externals/grill/flext/tutorial/thread2/main.cpp2
-rw-r--r--externals/grill/flext/tutorial/tutorial.dsw16
62 files changed, 1012 insertions, 570 deletions
diff --git a/externals/grill/flext/config-pd-bcc.txt b/externals/grill/flext/config-pd-bcc.txt
index 3d989e3e..15b8a37e 100644
--- a/externals/grill/flext/config-pd-bcc.txt
+++ b/externals/grill/flext/config-pd-bcc.txt
@@ -9,9 +9,13 @@ PDPATH=c:\programme\audio\pd
BCCPATH=c:\programme\prog\bcc55
# where is the SndObj include directory?
-# (leave blank to disable SndObj support)
+# (leave blank or comment out to disable SndObj support)
SNDOBJ=f:\prog\packs\sndobj\include
+# where is the STK include directory?
+# (leave blank or comment out to disable STK support)
+STK=f:\prog\packs\stk\include
+
# build directory for flext libraries?
OUTPATH=.\pd-bcc
diff --git a/externals/grill/flext/config-pd-cygwin.txt b/externals/grill/flext/config-pd-cygwin.txt
index 667af1ef..ede2a3d9 100644
--- a/externals/grill/flext/config-pd-cygwin.txt
+++ b/externals/grill/flext/config-pd-cygwin.txt
@@ -6,9 +6,13 @@
PDPATH=/cygdrive/c/programme/audio/pd
# where is the SndObj include directory?
-# (leave blank to disable SndObj support)
+# (leave blank or comment out to disable SndObj support)
SNDOBJ=/cygdrive/f/prog/packs/sndobj/include
+# where is the STK include directory?
+# (leave blank or comment out to disable STK support)
+STK=/cygdrive/f/prog/packs/stk/include
+
# where should flext libraries be built?
TARGDIR=./pd-cygwin
diff --git a/externals/grill/flext/config-pd-darwin.txt b/externals/grill/flext/config-pd-darwin.txt
index 7daaa036..71d746a1 100644
--- a/externals/grill/flext/config-pd-darwin.txt
+++ b/externals/grill/flext/config-pd-darwin.txt
@@ -6,9 +6,13 @@
PDPATH=/usr/local/pd/src
# where is the SndObj include directory?
-# (leave blank to disable SndObj support)
+# (leave blank or comment out to disable SndObj support)
# SNDOBJ=/usr/src/sndobj/include
+# where is the STK include directory?
+# (leave blank or comment out to disable STK support)
+# STK=/usr/src/stk/include
+
# where should flext libraries be built?
TARGDIR=./pd-darwin
diff --git a/externals/grill/flext/config-pd-linux.txt b/externals/grill/flext/config-pd-linux.txt
index 3995e500..d445c035 100644
--- a/externals/grill/flext/config-pd-linux.txt
+++ b/externals/grill/flext/config-pd-linux.txt
@@ -11,9 +11,13 @@ CXX=g++
PDPATH=
# where is the SndObj include directory?
-# (leave blank to disable SndObj support)
+# (leave blank or comment out to disable SndObj support)
SNDOBJ=/usr/local/include/SndObj
+# where is the STK include directory?
+# (leave blank or comment out to disable STK support)
+STK=/usr/src/stk-4.1.1/include
+
# where should flext libraries be built?
TARGDIR=./pd-linux
diff --git a/externals/grill/flext/config-pd-msvc.txt b/externals/grill/flext/config-pd-msvc.txt
index 6b8102ce..83c908d8 100644
--- a/externals/grill/flext/config-pd-msvc.txt
+++ b/externals/grill/flext/config-pd-msvc.txt
@@ -9,9 +9,13 @@ PDPATH=c:\programme\audio\pd
MSVCPATH="c:\programme\prog\microsoft visual studio\VC98"
# where is the SndObj include directory?
-# (leave blank to disable SndObj support)
+# (leave blank or comment out to disable SndObj support)
SNDOBJ=f:\prog\packs\sndobj\include
+# where is the STK include directory?
+# (leave blank or comment out to disable STK support)
+STK=f:\prog\packs\stk\include
+
# where should flext libraries be built?
# object files will be placed in subfolders
OUTPATH=".\pd-msvc"
diff --git a/externals/grill/flext/flext.cw b/externals/grill/flext/flext.cw
index 6ff16f56..6e5f4625 100644
--- a/externals/grill/flext/flext.cw
+++ b/externals/grill/flext/flext.cw
Binary files differ
diff --git a/externals/grill/flext/flext.dsp b/externals/grill/flext/flext.dsp
index 2c1656e5..a0f6b623 100644
--- a/externals/grill/flext/flext.dsp
+++ b/externals/grill/flext/flext.dsp
@@ -66,7 +66,7 @@ LIB32=link.exe -lib
# PROP Intermediate_Dir "pd-msvc\sd"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /ZI /Od /I "c:\programme\audio\pd\src" /I "f:\prog\packs\sndobj\include" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D FLEXT_SYS=2 /FR /YX"flext.h" /FD /GZ /c
+# ADD CPP /nologo /W3 /Gm /ZI /Od /I "c:\programme\audio\pd\src" /I "f:\prog\packs\sndobj\include" /I "f:\prog\packs\stk\include" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D FLEXT_SYS=2 /FR /YX"flext.h" /FD /GZ /c
# ADD BASE RSC /l 0xc07 /d "_DEBUG"
# ADD RSC /l 0xc07 /d "_DEBUG"
BSC32=bscmake.exe
@@ -89,7 +89,7 @@ LIB32=link.exe -lib
# PROP Intermediate_Dir "pd-msvc\td"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MTd /W3 /Gm /GR /ZI /Od /I "c:\programme\audio\pd\src" /I "." /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D "PD" /D "NT" /D "FLEXT_THREADS" /FR /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /ZI /Od /I "c:\programme\audio\pd\src" /I "f:\prog\packs\sndobj\include" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D "FLEXT_SYS_PD" /D "FLEXT_THREADS" /FR /YX"flext.h" /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /ZI /Od /I "c:\programme\audio\pd\src" /I "f:\prog\packs\sndobj\include" /I "f:\prog\packs\stk\include" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D "FLEXT_SYS_PD" /D "FLEXT_THREADS" /FR /YX"flext.h" /FD /GZ /c
# ADD BASE RSC /l 0xc07 /d "_DEBUG"
# ADD RSC /l 0xc07 /d "_DEBUG"
BSC32=bscmake.exe
@@ -112,7 +112,7 @@ LIB32=link.exe -lib
# PROP Intermediate_Dir "pd-msvc\t"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MT /W3 /GR /O2 /I "c:\programme\audio\pd\src" /I "." /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "PD" /D "NT" /D "FLEXT_THREADS" /YX /FD /c
-# ADD CPP /nologo /G6 /MT /W3 /O2 /I "c:\programme\audio\pd\src" /I "f:\prog\packs\sndobj\include" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D FLEXT_SYS=2 /D "FLEXT_THREADS" /YX"flext.h" /FD /c
+# ADD CPP /nologo /G6 /MT /W3 /O2 /I "c:\programme\audio\pd\src" /I "f:\prog\packs\sndobj\include" /I "f:\prog\packs\stk\include" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D FLEXT_SYS=2 /D "FLEXT_THREADS" /YX"flext.h" /FD /c
# ADD BASE RSC /l 0xc07 /d "NDEBUG"
# ADD RSC /l 0xc07 /d "NDEBUG"
BSC32=bscmake.exe
diff --git a/externals/grill/flext/make-inc.pd-msvc b/externals/grill/flext/make-inc.pd-msvc
index 7de273bc..c159cb1f 100644
--- a/externals/grill/flext/make-inc.pd-msvc
+++ b/externals/grill/flext/make-inc.pd-msvc
@@ -13,7 +13,11 @@ SOURCE=source
INCPATH=/I$(MSVCPATH)\include /I$(PDPATH)\src /I$(SOURCE)
!ifdef SNDOBJ
-INCPATH=$(INCPATH) /I$(SNDOBJ)
+INCPATH=$(INCPATH) /I$(SNDOBJ)
+!endif
+
+!ifdef STK
+INCPATH=$(INCPATH) /I$(STK)
!endif
# compiler definitions and flags
@@ -62,6 +66,11 @@ SRCS=$(SRCS) $(SRCS_SNDOBJ)
HDRS=$(HDRS) $(HDRS_SNDOBJ)
!endif
+!ifdef STK
+SRCS=$(SRCS) $(SRCS_STK)
+HDRS=$(HDRS) $(HDRS_STK)
+!endif
+
#default target
all: $(OUTPATH)\$(NAME)-$(TARGET).lib
diff --git a/externals/grill/flext/makefile.pd-linux b/externals/grill/flext/makefile.pd-linux
index 4ec7cb96..1230c332 100644
--- a/externals/grill/flext/makefile.pd-linux
+++ b/externals/grill/flext/makefile.pd-linux
@@ -13,7 +13,7 @@ CONFIG=config-pd-linux.txt
include $(CONFIG)
# compiler+linker stuff
-INCLUDES=$(PDPATH) $(SNDOBJ)
+INCLUDES=$(PDPATH) $(SNDOBJ) $(STK)
FLAGS=-DFLEXT_SYS=2
CFLAGS=-O6 -mcpu=pentiumpro
CFLAGS_D=-mcpu=pentiumpro -g
@@ -30,11 +30,13 @@ NAME=flext
include make-files.txt
ifdef SNDOBJ
-_SRCS=$(SRCS) $(SRCS_SNDOBJ)
-_HDRS=$(HDRS) $(HDRS_SNDOBJ)
-else
-_SRCS=$(SRCS)
-_HDRS=$(HDRS)
+SRCS+=$(SRCS_SNDOBJ)
+HDRS+=$(HDRS_SNDOBJ)
+endif
+
+ifdef STK
+SRCS+=$(SRCS_STK)
+HDRS+=$(HDRS_STK)
endif
MAKEFILE=makefile.pd-linux
@@ -48,7 +50,7 @@ all: $(TARGDIR) $(TARGET) $(TARGET_D) $(TARGET_T) $(TARGET_TD)
$(TARGDIR):
mkdir $(TARGDIR)
-$(patsubst %,source/%,$(_SRCS)): $(patsubst %,source/%,$(_HDRS)) $(patsubst %,source/%,$(IHDRS)) $(MAKEFILE) $(CONFIG)
+$(patsubst %,source/%,$(SRCS)): $(patsubst %,source/%,$(HDRS)) $(patsubst %,source/%,$(IHDRS)) $(MAKEFILE) $(CONFIG)
touch $@
$(TARGDIR)/%.o : source/%.cpp
@@ -63,19 +65,19 @@ $(TARGDIR)/%.to : source/%.cpp
$(TARGDIR)/%.tdo : source/%.cpp
$(CXX) -c $(CFLAGS_D) $(CFLAGS_T) $(FLAGS) $(patsubst %,-I%,$(INCLUDES) source) $< -o $@
-$(TARGET) : $(patsubst %.cpp,$(TARGDIR)/%.o,$(_SRCS))
+$(TARGET) : $(patsubst %.cpp,$(TARGDIR)/%.o,$(SRCS))
ar rc $@ $^
chmod 755 $@
-$(TARGET_D) : $(patsubst %.cpp,$(TARGDIR)/%.do,$(_SRCS))
+$(TARGET_D) : $(patsubst %.cpp,$(TARGDIR)/%.do,$(SRCS))
ar rc $@ $^
chmod 755 $@
-$(TARGET_T) : $(patsubst %.cpp,$(TARGDIR)/%.to,$(_SRCS))
+$(TARGET_T) : $(patsubst %.cpp,$(TARGDIR)/%.to,$(SRCS))
ar rc $@ $^
chmod 755 $@
-$(TARGET_TD) : $(patsubst %.cpp,$(TARGDIR)/%.tdo,$(_SRCS))
+$(TARGET_TD) : $(patsubst %.cpp,$(TARGDIR)/%.tdo,$(SRCS))
ar rc $@ $^
chmod 755 $@
@@ -91,7 +93,7 @@ $(INSTDIR):
install:: $(INSTDIR)
endif
-install:: $(TARGET) $(TARGET_D) $(TARGET_T) $(TARGET_TD) $(patsubst %,source/%,$(_HDRS))
+install:: $(TARGET) $(TARGET_D) $(TARGET_T) $(TARGET_TD) $(patsubst %,source/%,$(HDRS))
cp $^ $(INSTDIR)
chmod 755 $(patsubst %,$(INSTDIR)/%,$(notdir $^))
chown root.users $(patsubst %,$(INSTDIR)/%,$(notdir $^))
diff --git a/externals/grill/flext/readme.txt b/externals/grill/flext/readme.txt
index 9c7b2d60..64e3cc31 100644
--- a/externals/grill/flext/readme.txt
+++ b/externals/grill/flext/readme.txt
@@ -130,6 +130,7 @@ Version history:
- 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 *")
diff --git a/externals/grill/flext/source/flsndobj.cpp b/externals/grill/flext/source/flsndobj.cpp
index a18da9d3..e5203556 100644
--- a/externals/grill/flext/source/flsndobj.cpp
+++ b/externals/grill/flext/source/flsndobj.cpp
@@ -37,14 +37,16 @@ void flext_sndobj::ClearObjs()
FreeObjs();
if(inobj) {
- for(int i = 0; i < inobjs; ++i) { delete inobj[i]; delete tmpobj[i]; }
+ 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;
- inobjs = 0;
}
if(outobj) {
for(int i = 0; i < outobjs; ++i) delete outobj[i];
- delete[] outobj; outobj = NULL; outobjs = 0;
+ delete[] outobj; outobj = NULL;
}
}
@@ -62,16 +64,20 @@ void flext_sndobj::m_dsp(int n,t_sample *const *in,t_sample *const *out)
smprt = Samplerate();
// set up sndobjs for inlets and outlets
- inobj = new Inlet *[inobjs];
- tmpobj = new SndObj *[inobjs];
- for(i = 0; i < inobjs; ++i) {
- inobj[i] = new Inlet(in[i],blsz,smprt);
- tmpobj[i] = new SndObj(NULL,blsz,smprt);
+ if(inobjs) {
+ inobj = new Inlet *[inobjs];
+ tmpobj = new SndObj *[inobjs];
+ for(i = 0; i < inobjs; ++i) {
+ inobj[i] = new Inlet(in[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(out[i],blsz,smprt);
}
- outobj = new Outlet *[outobjs];
- for(i = 0; i < outobjs; ++i) outobj[i] = new Outlet(out[i],blsz,smprt);
- NewObjs();
+ if(!NewObjs()) ClearObjs();
}
else {
// assign changed input/output vectors
diff --git a/externals/grill/flext/source/flsndobj.h b/externals/grill/flext/source/flsndobj.h
index 66f98a94..960267be 100644
--- a/externals/grill/flext/source/flsndobj.h
+++ b/externals/grill/flext/source/flsndobj.h
@@ -29,7 +29,7 @@ public:
flext_sndobj();
// these have to be overridden in child classes
- virtual void NewObjs() {}
+ virtual bool NewObjs() { return true; }
virtual void FreeObjs() {}
virtual void ProcessObjs() {}
diff --git a/externals/grill/flext/source/flstk.cpp b/externals/grill/flext/source/flstk.cpp
index 6a56aacb..58fd192e 100644
--- a/externals/grill/flext/source/flstk.cpp
+++ b/externals/grill/flext/source/flstk.cpp
@@ -37,11 +37,11 @@ void flext_stk::ClearObjs()
if(inobj) {
for(int i = 0; i < inobjs; ++i) delete inobj[i];
- delete[] inobj; inobj = NULL; inobjs = 0;
+ delete[] inobj; inobj = NULL;
}
if(outobj) {
for(int i = 0; i < outobjs; ++i) delete outobj[i];
- delete[] outobj; outobj = NULL; outobjs = 0;
+ delete[] outobj; outobj = NULL;
}
}
@@ -61,14 +61,18 @@ void flext_stk::m_dsp(int n,t_sample *const *in,t_sample *const *out)
Stk::setSampleRate(smprt);
// set up sndobjs for inlets and outlets
- inobj = new Inlet *[inobjs];
- for(i = 0; i < inobjs; ++i) {
- inobj[i] = new Inlet(in[i],blsz);
+ if(inobjs) {
+ inobj = new Input *[inobjs];
+ for(i = 0; i < inobjs; ++i)
+ inobj[i] = new Input(in[i],blsz);
+ }
+ if(outobjs) {
+ outobj = new Output *[outobjs];
+ for(i = 0; i < outobjs; ++i)
+ outobj[i] = new Output(out[i],blsz);
}
- outobj = new Outlet *[outobjs];
- for(i = 0; i < outobjs; ++i) outobj[i] = new Outlet(out[i],blsz);
- NewObjs();
+ if(!NewObjs()) ClearObjs();
}
else {
// assign changed input/output vectors
@@ -80,24 +84,24 @@ void flext_stk::m_dsp(int n,t_sample *const *in,t_sample *const *out)
void flext_stk::m_signal(int n,t_sample *const *in,t_sample *const *out)
{
- ProcessObjs();
+ if(inobjs || outobjs) ProcessObjs(blsz);
}
// inlet class
-flext_stk::Inlet::Inlet(const t_sample *b,int v):
+flext_stk::Input::Input(const t_sample *b,int v):
buf(b),vecsz(v),
index(0)
{}
-t_sample flext_stk::Inlet::tick()
+MY_FLOAT flext_stk::Input::tick()
{
if(++index >= vecsz) index = 0;
return lastOut();
}
-t_sample *flext_stk::Inlet::tick(t_sample *vector,unsigned int vectorSize)
+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;
@@ -106,18 +110,18 @@ t_sample *flext_stk::Inlet::tick(t_sample *vector,unsigned int vectorSize)
// outlet class
-flext_stk::Outlet::Outlet(t_sample *b,int v):
+flext_stk::Output::Output(t_sample *b,int v):
buf(b),vecsz(v),
index(0)
{}
-void flext_stk::Outlet::tick(t_sample s)
+void flext_stk::Output::tick(MY_FLOAT s)
{
- buf[index] = s;
+ buf[index] = (t_sample)s;
if(++index >= vecsz) index = 0;
}
-void flext_stk::Outlet::tick(const t_sample *vector,unsigned int vectorSize)
+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
index d340bcb1..7311e032 100644
--- a/externals/grill/flext/source/flstk.h
+++ b/externals/grill/flext/source/flstk.h
@@ -11,43 +11,36 @@ WARRANTIES, see the file, "license.txt," in this distribution.
#ifndef __FLSTK_H
#define __FLSTK_H
-#include "flext.h"
-
-#include <stk.h>
+#include <flext.h>
+#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 void NewObjs() {}
+ virtual bool NewObjs() { return true; }
virtual void FreeObjs() {}
- virtual void ProcessObjs() {}
+ virtual void ProcessObjs(int blocksize) {}
protected:
virtual bool Init();
virtual void Exit();
- virtual void m_dsp(int n,t_sample *const *in,t_sample *const *out);
- virtual void m_signal(int n,t_sample *const *in,t_sample *const *out);
-
-private:
//! STK object for reading from inlet buffer
- class Inlet:
+ class Input:
public Stk
{
public:
- Inlet(const t_sample *b,int vecsz);
-
- const t_sample *lastFrame() const { return buf+index; }
- t_sample lastOut() const { return buf[index]; }
+ Input(const t_sample *b,int vecsz);
- t_sample tick();
- t_sample *tick(t_sample *vector,unsigned int vectorSize);
+ MY_FLOAT lastOut() const { return (MY_FLOAT)buf[index]; }
+ MY_FLOAT tick();
+ MY_FLOAT *tick(MY_FLOAT *vector,unsigned int vectorSize);
void SetBuf(const t_sample *b) { buf = b; }
@@ -57,14 +50,14 @@ private:
};
//! STK object for writing to outlet buffer
- class Outlet:
+ class Output:
public Stk
{
public:
- Outlet(t_sample *b,int vecsz);
+ Output(t_sample *b,int vecsz);
- void tick(t_sample sample);
- void tick(const t_sample *vector,unsigned int vectorSize);
+ void tick(MY_FLOAT sample);
+ void tick(const MY_FLOAT *vector,unsigned int vectorSize);
void SetBuf(t_sample *b) { buf = b; }
@@ -73,11 +66,18 @@ private:
int vecsz,index;
};
+ Input &Inlet(int ix) { return *inobj[ix]; }
+ Output &Outlet(int ix) { return *outobj[ix]; }
+
+private:
+ virtual void m_dsp(int n,t_sample *const *in,t_sample *const *out);
+ virtual void m_signal(int n,t_sample *const *in,t_sample *const *out);
+
void ClearObjs();
int inobjs,outobjs;
- Inlet **inobj;
- Outlet **outobj;
+ Input **inobj;
+ Output **outobj;
float smprt;
int blsz;
diff --git a/externals/grill/flext/tutorial/adv1/main.cpp b/externals/grill/flext/tutorial/adv1/main.cpp
index 7e1047ce..4150800f 100755
--- a/externals/grill/flext/tutorial/adv1/main.cpp
+++ b/externals/grill/flext/tutorial/adv1/main.cpp
@@ -1,7 +1,7 @@
/*
flext tutorial - advanced 1
-Copyright (c) 2002 Thomas Grill (xovo@gmx.net)
+Copyright (c) 2002,2003 Thomas Grill (xovo@gmx.net)
For information on usage and redistribution, and for a DISCLAIMER OF ALL
WARRANTIES, see the file, "license.txt," in this distribution.
diff --git a/externals/grill/flext/tutorial/adv2/main.cpp b/externals/grill/flext/tutorial/adv2/main.cpp
index 32adaf85..10322010 100644
--- a/externals/grill/flext/tutorial/adv2/main.cpp
+++ b/externals/grill/flext/tutorial/adv2/main.cpp
@@ -1,7 +1,7 @@
/*
flext tutorial - advanced 2
-Copyright (c) 2002 Thomas Grill (xovo@gmx.net)
+Copyright (c) 2002,2003 Thomas Grill (xovo@gmx.net)
For information on usage and redistribution, and for a DISCLAIMER OF ALL
WARRANTIES, see the file, "license.txt," in this distribution.
@@ -46,12 +46,12 @@ private:
// define the _static_ class setup function
static void setup(t_class *c);
- FLEXT_CALLBACK(m_tag);
- FLEXT_CALLBACK_I(m_tag_and_int);
- FLEXT_CALLBACK_S(m_sym);
+ FLEXT_CALLBACK(m_tag)
+ FLEXT_CALLBACK_I(m_tag_and_int)
+ FLEXT_CALLBACK_S(m_sym)
};
-// instantiate the class (constructor has a variable argument list)
+// instantiate the class (constructor takes no arguments)
FLEXT_NEW("adv2",adv2)
diff --git a/externals/grill/flext/tutorial/adv3/main.cpp b/externals/grill/flext/tutorial/adv3/main.cpp
index 0306e68f..78615172 100644
--- a/externals/grill/flext/tutorial/adv3/main.cpp
+++ b/externals/grill/flext/tutorial/adv3/main.cpp
@@ -1,7 +1,7 @@
/*
flext tutorial - advanced 3
-Copyright (c) 2002 Thomas Grill (xovo@gmx.net)
+Copyright (c) 2002,2003 Thomas Grill (xovo@gmx.net)
For information on usage and redistribution, and for a DISCLAIMER OF ALL
WARRANTIES, see the file, "license.txt," in this distribution.
@@ -74,6 +74,7 @@ public:
}
protected:
+
void m_reset()
{
i_count = i_down;
@@ -115,6 +116,7 @@ protected:
int i_count,i_down,i_up,i_step;
private:
+
static void setup(t_class *c)
{
// --- set up methods (class scope) ---
@@ -127,7 +129,7 @@ private:
// 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
+ // ..., 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
diff --git a/externals/grill/flext/tutorial/attr1/main.cpp b/externals/grill/flext/tutorial/attr1/main.cpp
index 2659a9ac..e4abc47b 100644
--- a/externals/grill/flext/tutorial/attr1/main.cpp
+++ b/externals/grill/flext/tutorial/attr1/main.cpp
@@ -1,7 +1,7 @@
/*
flext tutorial - attributes 1
-Copyright (c) 2002 Thomas Grill (xovo@gmx.net)
+Copyright (c) 2002,2003 Thomas Grill (xovo@gmx.net)
For information on usage and redistribution, and for a DISCLAIMER OF ALL
WARRANTIES, see the file, "license.txt," in this distribution.
diff --git a/externals/grill/flext/tutorial/attr2/main.cpp b/externals/grill/flext/tutorial/attr2/main.cpp
index d6df4e78..f75ce412 100644
--- a/externals/grill/flext/tutorial/attr2/main.cpp
+++ b/externals/grill/flext/tutorial/attr2/main.cpp
@@ -1,7 +1,7 @@
/*
flext tutorial - attributes 2
-Copyright (c) 2002 Thomas Grill (xovo@gmx.net)
+Copyright (c) 2002,2003 Thomas Grill (xovo@gmx.net)
For information on usage and redistribution, and for a DISCLAIMER OF ALL
WARRANTIES, see the file, "license.txt," in this distribution.
diff --git a/externals/grill/flext/tutorial/attr3/main.cpp b/externals/grill/flext/tutorial/attr3/main.cpp
index 835c2881..4c2736c5 100644
--- a/externals/grill/flext/tutorial/attr3/main.cpp
+++ b/externals/grill/flext/tutorial/attr3/main.cpp
@@ -1,7 +1,7 @@
/*
flext tutorial - attributes 3
-Copyright (c) 2002 Thomas Grill (xovo@gmx.net)
+Copyright (c) 2002,2003 Thomas Grill (xovo@gmx.net)
For information on usage and redistribution, and for a DISCLAIMER OF ALL
WARRANTIES, see the file, "license.txt," in this distribution.
@@ -11,19 +11,23 @@ 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
{
@@ -31,28 +35,11 @@ class attr3:
public:
// constructor with no arguments
- attr3(int argc,t_atom *argv):
- i_step(1)
+ // 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)
{
- // --- 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(); // default inlet
AddInList(); // inlet for bounds
@@ -88,7 +75,7 @@ protected:
ToOutInt(0,f);
}
- void m_bound(int f1,int f2)
+ void m_bounds(int f1,int f2)
{
i_down = f1 < f2?f1:f2;
i_up = f1 > f2?f1:f2;
@@ -96,27 +83,29 @@ protected:
void m_step(int s) { i_step = s; }
- int i_count,i_down,i_up,i_step;
// setter method of bounds variables
- void ms_bound(const AtomList &l)
+ 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_bound method
- m_bound(GetAInt(l[0]),GetAInt(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 - bound needs to integer parameters",thisName());
+ post("%s - 'bounds' needs two integer parameters",thisName());
}
// getter method of bounds variables
- void mg_bound(AtomList &l) const
+ 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_class *c)
@@ -132,15 +121,19 @@ private:
// 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,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);
- FLEXT_CADDATTR_VAR(c,"bound",mg_bound,ms_bound);
+ // 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
@@ -148,16 +141,17 @@ private:
FLEXT_CALLBACK(m_reset)
FLEXT_CALLBACK_V(m_set) // normal method wrapper for m_set
- FLEXT_ATTRVAR_I(i_count) // wrapper function for integer variable i_count
+ FLEXT_ATTRVAR_I(i_count) // wrapper functions (get and set) for integer variable i_count
- FLEXT_CALLBACK_II(m_bound) // normal method wrapper for m_bound
- FLEXT_CALLVAR_V(mg_bound,ms_bound) // getter and setter method of bounds
+ 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 function for integer variable i_step
+ FLEXT_ATTRVAR_I(i_step) // wrapper functions (get and set) for integer variable i_step
};
-// instantiate the class (constructor has a variable argument list)
-FLEXT_NEW_V("attr3",attr3)
+
+// instantiate the class (constructor takes no arguments)
+FLEXT_NEW("attr3",attr3)
diff --git a/externals/grill/flext/tutorial/build-pd-bcc.bat b/externals/grill/flext/tutorial/build-pd-bcc.bat
index 45961f13..5c180607 100644
--- a/externals/grill/flext/tutorial/build-pd-bcc.bat
+++ b/externals/grill/flext/tutorial/build-pd-bcc.bat
@@ -44,12 +44,21 @@
@make -f ..\makefile.pd-bcc NAME=signal2~ SETUPFUNCTION=signal2_tilde_setup
@cd ..
-@cd sndobj1
-@make -f ..\makefile.pd-bcc NAME=sndobj1~ SETUPFUNCTION=sndobj1_tilde_setup
-@cd ..
-
@cd lib1
@make -f ..\makefile.pd-bcc NAME=lib1 SETUPFUNCTION=lib1_setup
@cd ..
+rem @cd sndobj1
+rem @make -f ..\makefile.pd-bcc NAME=sndobj1~ SETUPFUNCTION=sndobj1_tilde_setup
+rem @cd ..
+
+rem @cd stk1
+rem @make -f ..\makefile.pd-bcc NAME=stk1~ SETUPFUNCTION=stk1_tilde_setup
+rem @cd ..
+
+rem @cd stk2
+rem @make -f ..\makefile.pd-bcc NAME=stk2~ SETUPFUNCTION=stk2_tilde_setup
+rem @cd ..
+
+
diff --git a/externals/grill/flext/tutorial/build-pd-msvc.bat b/externals/grill/flext/tutorial/build-pd-msvc.bat
index a01bee53..1a0923b1 100644
--- a/externals/grill/flext/tutorial/build-pd-msvc.bat
+++ b/externals/grill/flext/tutorial/build-pd-msvc.bat
@@ -1,18 +1,3 @@
@echo --- Building flext tutorial examples with MSVC++ ---
-nmake /f makefile.pd-msvc NAME=simple1 DIR=simple1
-nmake /f makefile.pd-msvc NAME=simple2 DIR=simple2
-nmake /f makefile.pd-msvc NAME=simple3 DIR=simple3
-nmake /f makefile.pd-msvc NAME=adv1 DIR=adv1
-nmake /f makefile.pd-msvc NAME=adv2 DIR=adv2
-nmake /f makefile.pd-msvc NAME=adv3 DIR=adv3
-nmake /f makefile.pd-msvc NAME=attr1 DIR=attr1
-nmake /f makefile.pd-msvc NAME=attr2 DIR=attr2
-nmake /f makefile.pd-msvc NAME=attr3 DIR=attr3
-nmake /f makefile.pd-msvc NAME=signal1~ DIR=signal1
-nmake /f makefile.pd-msvc NAME=signal2~ DIR=signal2
-nmake /f makefile.pd-msvc NAME=sndobj1~ DIR=sndobj1
-nmake /f makefile.pd-msvc NAME=thread1 DIR=thread1
-nmake /f makefile.pd-msvc NAME=thread2 DIR=thread2
-nmake /f makefile.pd-msvc NAME=lib1 DIR=lib1
-
+nmake /f makefile.pd-msvc
diff --git a/externals/grill/flext/tutorial/config-pd-cygwin.txt b/externals/grill/flext/tutorial/config-pd-cygwin.txt
index fb87c554..81d4136e 100644
--- a/externals/grill/flext/tutorial/config-pd-cygwin.txt
+++ b/externals/grill/flext/tutorial/config-pd-cygwin.txt
@@ -9,5 +9,15 @@ PDPATH=/cygdrive/c/programme/audio/pd
# where do the flext libraries reside?
FLEXTPATH=${PDPATH}/flext
+# where is the SndObj include directory?
+# (leave blank or comment out to disable SndObj support)
+# if defined, you must have a libsndobj.a library in the lib path
+SNDOBJ=/usr/local/include/SndObj
+
+# where is the STK include directory?
+# (leave blank or comment out to disable STK support)
+# if defined, you must have a libstk.a library in the lib path
+STK=/usr/src/stk-4.1.1/include
+
# where should the examples be built?
OUTPATH=./pd-cygwin
diff --git a/externals/grill/flext/tutorial/config-pd-darwin.txt b/externals/grill/flext/tutorial/config-pd-darwin.txt
index 27afd885..0c12880b 100644
--- a/externals/grill/flext/tutorial/config-pd-darwin.txt
+++ b/externals/grill/flext/tutorial/config-pd-darwin.txt
@@ -14,6 +14,16 @@ PD=/usr/local/pd/bin/pd
# where do the flext libraries reside?
FLEXTPATH=/usr/local/pd/flext
+# where is the SndObj include directory?
+# (leave blank or comment out to disable SndObj support)
+# if defined, you must have a libsndobj.a library in the lib path
+SNDOBJ=/usr/local/include/SndObj
+
+# where is the STK include directory?
+# (leave blank or comment out to disable STK support)
+# if defined, you must have a libstk.a library in the lib path
+STK=/usr/src/stk-4.1.1/include
+
# where should the examples be built? (relative path)
OUTPATH=./pd-darwin
diff --git a/externals/grill/flext/tutorial/config-pd-linux.txt b/externals/grill/flext/tutorial/config-pd-linux.txt
index 75c7ea73..3569347c 100644
--- a/externals/grill/flext/tutorial/config-pd-linux.txt
+++ b/externals/grill/flext/tutorial/config-pd-linux.txt
@@ -14,6 +14,16 @@ PDPATH=
# where do the flext libraries reside?
FLEXTPATH=/usr/local/lib/pd/flext
+# where is the SndObj include directory?
+# (leave blank or comment out to disable SndObj support)
+# if defined, you must have a libsndobj.a library in the lib path
+SNDOBJ=/usr/local/include/SndObj
+
+# where is the STK include directory?
+# (leave blank or comment out to disable STK support)
+# if defined, you must have a libstk.a library in the lib path
+# STK=/usr/src/stk-4.1.1/include
+
# where should the examples be built? (relative path)
OUTPATH=./pd-linux
diff --git a/externals/grill/flext/tutorial/config-pd-msvc.txt b/externals/grill/flext/tutorial/config-pd-msvc.txt
index e864d423..8dda9ad9 100644
--- a/externals/grill/flext/tutorial/config-pd-msvc.txt
+++ b/externals/grill/flext/tutorial/config-pd-msvc.txt
@@ -12,5 +12,15 @@ MSVCPATH=c:\programme\prog\microsoft visual studio\VC98
# where do the flext libraries reside?
FLEXTPATH=$(PDPATH)\flext
+# where is the SndObj include directory?
+# (leave blank or comment out to disable SndObj support)
+SNDOBJ=f:\prog\packs\sndobj\include
+SNDOBJLIB=f:\prog\packs\sndobj\lib\sndobj.lib
+
+# where is the STK include directory?
+# (leave blank or comment out to disable STK support)
+STK=f:\prog\packs\stk\include
+STKLIB=f:\prog\packs\stk\lib\stk.lib
+
# where should the examples be built?
OUTPATH=.\pd-msvc
diff --git a/externals/grill/flext/tutorial/lib1/main.cpp b/externals/grill/flext/tutorial/lib1/main.cpp
index 1f0a3120..e90c154d 100644
--- a/externals/grill/flext/tutorial/lib1/main.cpp
+++ b/externals/grill/flext/tutorial/lib1/main.cpp
@@ -1,7 +1,7 @@
/*
flext tutorial - library 1
-Copyright (c) 2002 Thomas Grill (xovo@gmx.net)
+Copyright (c) 2002,2003 Thomas Grill (xovo@gmx.net)
For information on usage and redistribution, and for a DISCLAIMER OF ALL
WARRANTIES, see the file, "license.txt," in this distribution.
diff --git a/externals/grill/flext/tutorial/make-sub.pd-msvc b/externals/grill/flext/tutorial/make-sub.pd-msvc
new file mode 100644
index 00000000..b1ffbdf3
--- /dev/null
+++ b/externals/grill/flext/tutorial/make-sub.pd-msvc
@@ -0,0 +1,55 @@
+# flext tutorial examples
+# Copyright (c) 2001-2003 Thomas Grill (xovo@gmx.net)
+#
+# Sub-Makefile for MSVC++
+#
+# ---------------------------------------------------------------
+
+!include config-pd-msvc.txt
+
+# includes
+INCPATH=/I"$(MSVCPATH)\include" /I"$(PDPATH)\src" /I"$(FLEXTPATH)"
+LIBPATH=/LIBPATH:"$(MSVCPATH)\lib" /LIBPATH:"$(PDPATH)\bin" /LIBPATH:"$(FLEXTPATH)"
+LIBS=pd.lib pthreadVC.lib flext_t-pdwin.lib
+
+CFLAGS=/GR /GD /G6 /Ox /MT
+
+!ifdef SNDOBJ
+INCPATH=$(INCPATH) /I"$(SNDOBJ)"
+LIBS=$(LIBS) "$(SNDOBJLIB)"
+!endif
+
+!ifdef STK
+INCPATH=$(INCPATH) /I"$(STK)"
+LIBS=$(LIBS) "$(STKLIB)"
+CFLAGS=$(CFLAGS) /GX
+!endif
+
+# compiler definitions and flags
+DEFS=/DFLEXT_SYS=2 /DFLEXT_THREADS
+
+
+
+# the rest can stay untouched
+# ----------------------------------------------
+
+# all the source files from the package
+SRCS=main.cpp
+HDRS=
+
+# -----------------------------------------------
+
+all: $(OUTPATH) $(OUTPATH)\$(NAME).dll
+
+$(OUTPATH):
+ -mkdir $(OUTPATH)
+
+$(OUTPATH)\$(NAME)~.dll : $(OUTPATH)\$(NAME).dll
+ -ren $** $<
+
+$(OUTPATH)\$(NAME).dll : $(DIR)\$(SRCS)
+ cl /c /LD $(CFLAGS) $(DEFS) $(INCPATH) $** /Fotemp.obj
+ link /DLL /out:$@ /INCREMENTAL:NO temp.obj $(LIBS) $(LIBPATH)
+ @-del $(OUTPATH)\*.exp
+ @-del $(OUTPATH)\*.lib
+ @-del temp.obj
diff --git a/externals/grill/flext/tutorial/makefile.pd-cygwin b/externals/grill/flext/tutorial/makefile.pd-cygwin
index c74855ad..60f5b08e 100644
--- a/externals/grill/flext/tutorial/makefile.pd-cygwin
+++ b/externals/grill/flext/tutorial/makefile.pd-cygwin
@@ -27,7 +27,19 @@ LIBS=m pd
# all the source files from the package
-EXAMPLES=simple1 simple2 simple3 adv1 adv2 adv3 attr1 attr2 attr3 signal1~ signal2~ sndobj1~ lib1 # thread1 thread2
+EXAMPLES=simple1 simple2 simple3 adv1 adv2 adv3 attr1 attr2 attr3 signal1~ signal2~ lib1 # thread1 thread2
+
+ifdef SNDOBJ
+INCLUDES+=$(SNDOBJ)
+EXAMPLES+=sndobj1~
+LIBS+=sndobj
+endif
+
+ifdef STK
+INCLUDES+=$(STK)
+EXAMPLES+=stk1~ stk2~
+LIBS+=stk
+endif
TARGETS=$(patsubst %,$(OUTPATH)/%.dll,$(EXAMPLES))
diff --git a/externals/grill/flext/tutorial/makefile.pd-darwin b/externals/grill/flext/tutorial/makefile.pd-darwin
index 3bd23066..ad8da699 100644
--- a/externals/grill/flext/tutorial/makefile.pd-darwin
+++ b/externals/grill/flext/tutorial/makefile.pd-darwin
@@ -25,8 +25,19 @@ LDFLAGS=-bundle -bundle_loader $(PD)
# all the source files from the package
-EXAMPLES=simple1 simple2 simple3 adv1 adv2 adv3 attr1 attr2 attr3 signal1~ signal2~ sndobj1~ lib1 thread1 thread2
+EXAMPLES=simple1 simple2 simple3 adv1 adv2 adv3 attr1 attr2 attr3 signal1~ signal2~ lib1 thread1 thread2
+ifdef SNDOBJ
+INCLUDES+=$(SNDOBJ)
+EXAMPLES+=sndobj1~
+LIBS+=sndobj
+endif
+
+ifdef STK
+INCLUDES+=$(STK)
+EXAMPLES+=stk1~ stk2~
+LIBS+=stk
+endif
TARGETS=$(patsubst %,$(OUTPATH)/%.pd_darwin,$(EXAMPLES))
diff --git a/externals/grill/flext/tutorial/makefile.pd-linux b/externals/grill/flext/tutorial/makefile.pd-linux
index dadb861c..0bad96fb 100644
--- a/externals/grill/flext/tutorial/makefile.pd-linux
+++ b/externals/grill/flext/tutorial/makefile.pd-linux
@@ -13,7 +13,7 @@ FLEXTLIB=$(FLEXTPATH)/flext_t.a # take threaded library for all
# compiler+linker stuff ### EDIT! ###
-INCLUDES=$(PDPATH)/src
+INCLUDES=$(PDPATH)/src
LIBPATH=
FLAGS=-DFLEXT_SYS=2 -DFLEXT_THREADS
CFLAGS=-O6 -mcpu=pentiumpro
@@ -25,7 +25,19 @@ LIBS=m
# all the source files from the package
-EXAMPLES=simple1 simple2 simple3 adv1 adv2 adv3 attr1 attr2 attr3 sndobj1~ signal1~ signal2~ lib1 thread1 thread2
+EXAMPLES=simple1 simple2 simple3 adv1 adv2 adv3 attr1 attr2 attr3 signal1~ signal2~ lib1 thread1 thread2
+
+ifdef SNDOBJ
+INCLUDES+=$(SNDOBJ)
+EXAMPLES+=sndobj1~
+LIBS+=sndobj
+endif
+
+ifdef STK
+INCLUDES+=$(STK)
+EXAMPLES+=stk1~ stk2~
+LIBS+=stk
+endif
TARGETS=$(patsubst %,$(OUTPATH)/%.pd_linux,$(EXAMPLES))
diff --git a/externals/grill/flext/tutorial/makefile.pd-msvc b/externals/grill/flext/tutorial/makefile.pd-msvc
index 385630e0..51c3a58b 100644
--- a/externals/grill/flext/tutorial/makefile.pd-msvc
+++ b/externals/grill/flext/tutorial/makefile.pd-msvc
@@ -3,46 +3,46 @@
#
# Makefile for MSVC++
#
-#
-# IMPORTANT: Adjust some of the paths also in makefile-inc.msvc
-#
-# usage: make -f makefile.pd-msvc
-#
# ---------------------------------------------------------------
!include config-pd-msvc.txt
-# includes
-INCPATH=/I"$(MSVCPATH)\include" /I"$(PDPATH)\src" /I"$(FLEXTPATH)"
-LIBPATH=/LIBPATH:"$(MSVCPATH)\lib" /LIBPATH:"$(PDPATH)\bin" /LIBPATH:"$(FLEXTPATH)"
-LIBS=pd.lib pthreadVC.lib flext_t-pdwin.lib
-# compiler definitions and flags
-DEFS=/DFLEXT_SYS=2 /DFLEXT_THREADS
+TARGETS=normal threads
-CFLAGS=/GR /GD /G6 /Ox /MT
+!ifdef SNDOBJ
+TARGETS=$(TARGETS) sndobj
+!endif
+!ifdef STK
+TARGETS=$(TARGETS) stk
+!endif
-# the rest can stay untouched
-# ----------------------------------------------
+all: $(TARGETS)
-# all the source files from the package
-SRCS=main.cpp
-HDRS=
+normal:
+ nmake /f make-sub.pd-msvc NAME=simple1 DIR=simple1
+ nmake /f make-sub.pd-msvc NAME=simple2 DIR=simple2
+ nmake /f make-sub.pd-msvc NAME=simple3 DIR=simple3
+ nmake /f make-sub.pd-msvc NAME=adv1 DIR=adv1
+ nmake /f make-sub.pd-msvc NAME=adv2 DIR=adv2
+ nmake /f make-sub.pd-msvc NAME=adv3 DIR=adv3
+ nmake /f make-sub.pd-msvc NAME=attr1 DIR=attr1
+ nmake /f make-sub.pd-msvc NAME=attr2 DIR=attr2
+ nmake /f make-sub.pd-msvc NAME=attr3 DIR=attr3
+ nmake /f make-sub.pd-msvc NAME=signal1~ DIR=signal1
+ nmake /f make-sub.pd-msvc NAME=signal2~ DIR=signal2
+ nmake /f make-sub.pd-msvc NAME=lib1 DIR=lib1
-# -----------------------------------------------
+threads:
+ nmake /f make-sub.pd-msvc NAME=thread1 DIR=thread1
+ nmake /f make-sub.pd-msvc NAME=thread2 DIR=thread2
-all: $(OUTPATH) $(OUTPATH)\$(NAME).dll
+sndobj:
+ nmake /f make-sub.pd-msvc NAME=sndobj1~ DIR=sndobj1
-$(OUTPATH):
- -mkdir $(OUTPATH)
+stk:
+ nmake /f make-sub.pd-msvc NAME=stk1~ DIR=stk1
+ nmake /f make-sub.pd-msvc NAME=stk2~ DIR=stk2
-$(OUTPATH)\$(NAME)~.dll : $(OUTPATH)\$(NAME).dll
- -ren $** $<
-$(OUTPATH)\$(NAME).dll : $(DIR)\$(SRCS)
- cl /c /LD $(CFLAGS) $(DEFS) $(INCPATH) $** /Fotemp.obj
- link /DLL /out:$@ /INCREMENTAL:NO temp.obj $(LIBS) $(LIBPATH)
- @-del $(OUTPATH)\*.exp
- @-del $(OUTPATH)\*.lib
- @-del temp.obj
diff --git a/externals/grill/flext/tutorial/pd/ex-adv1.pd b/externals/grill/flext/tutorial/pd/ex-adv1.pd
index 65735a45..93695c7e 100644
--- a/externals/grill/flext/tutorial/pd/ex-adv1.pd
+++ b/externals/grill/flext/tutorial/pd/ex-adv1.pd
@@ -1,22 +1,22 @@
#N canvas 46 58 586 341 12;
#X msg 34 92 or two words;
#X msg 169 93 2 3;
-#X msg 48 291 one 6;
+#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 32 24 -260818 -1 0
+#X obj 16 8 cnv 15 550 40 empty empty adv1 10 22 0 24 -260818 -1 0
;
-#X text 175 7 flext tutorial \, (C)2002 Thomas Grill;
#X text 175 27 http://www.parasitaere-kapazitaeten.net;
#X text 199 214 watch the console!;
#X msg 69 121 6;
#X text 210 110 send the object various messages;
#X text 160 274 (if adv1 has already been loaded);
+#X text 175 9 flext tutorial \, (C)2002 \, 2003 Thomas Grill;
#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 11 0 4 0;
+#X connect 10 0 4 0;
diff --git a/externals/grill/flext/tutorial/pd/ex-adv2.pd b/externals/grill/flext/tutorial/pd/ex-adv2.pd
index af534de2..851c1a88 100644
--- a/externals/grill/flext/tutorial/pd/ex-adv2.pd
+++ b/externals/grill/flext/tutorial/pd/ex-adv2.pd
@@ -1,23 +1,23 @@
-#N canvas 329 97 587 348 12;
-#X msg 26 97 help;
-#X msg 123 146 born;
-#X msg 172 147 to;
-#X msg 214 149 hula;
-#X msg 228 230 yeah;
-#X msg 228 192 hula 1;
-#X text 280 231 other symbol;
-#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 174 8 flext tutorial \, (C)2002 Thomas Grill;
-#X text 174 28 http://www.parasitaere-kapazitaeten.net;
-#X obj 148 293 adv2;
-#X text 21 49 this is identical to the simple3 example;
-#X connect 0 0 13 0;
-#X connect 1 0 13 0;
-#X connect 2 0 13 0;
-#X connect 3 0 13 0;
-#X connect 4 0 13 0;
-#X connect 5 0 13 0;
+#N canvas 329 97 587 348 12;
+#X msg 26 97 help;
+#X msg 123 146 born;
+#X msg 172 147 to;
+#X msg 214 149 hula;
+#X msg 228 230 yeah;
+#X msg 228 192 hula 1;
+#X text 280 231 other symbol;
+#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 174 28 http://www.parasitaere-kapazitaeten.net;
+#X obj 148 293 adv2;
+#X text 21 49 this is identical to the simple3 example;
+#X text 174 8 flext tutorial \, (C)2002 \, 2003 Thomas Grill;
+#X connect 0 0 12 0;
+#X connect 1 0 12 0;
+#X connect 2 0 12 0;
+#X connect 3 0 12 0;
+#X connect 4 0 12 0;
+#X connect 5 0 12 0;
diff --git a/externals/grill/flext/tutorial/pd/ex-adv3.pd b/externals/grill/flext/tutorial/pd/ex-adv3.pd
index d58567f3..09b0a0ff 100644
--- a/externals/grill/flext/tutorial/pd/ex-adv3.pd
+++ b/externals/grill/flext/tutorial/pd/ex-adv3.pd
@@ -1,40 +1,40 @@
-#N canvas 175 139 597 355 12;
-#X obj 16 7 cnv 15 550 40 empty empty adv3 10 22 0 24 -260818 -1 0
-;
-#X text 174 8 flext tutorial \, (C)2002 Thomas Grill;
-#X text 174 28 http://www.parasitaere-kapazitaeten.net;
-#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 0 256;
-#X msg 269 120 1 10;
-#X msg 389 118 1;
-#X msg 424 118 -1;
-#X msg 460 118 2;
-#X obj 88 119 bng 25 250 50 0 empty empty empty 0 -6 0 8 -258699 -1
--1;
-#X msg 313 119 7 2;
-#X text 325 300 end has been reached;
-#X obj 157 117 nbx 5 18 -1e+037 1e+037 0 0 empty empty empty 0 -6 0
-12 -228992 -1 -1 0 256;
-#X msg 158 140 set \$1;
-#X text 72 98 trigger;
-#X text 147 98 set counter;
-#X text 264 99 set bounds;
-#X text 390 96 set step size;
-#X msg 80 186 reset;
-#X text 83 166 reset;
-#X text 21 49 this is a port of IOhannes Zmoelnings "counter" example
-;
-#X connect 3 0 5 0;
-#X connect 3 1 4 0;
-#X connect 6 0 3 1;
-#X connect 7 0 3 2;
-#X connect 8 0 3 2;
-#X connect 9 0 3 2;
-#X connect 10 0 3 0;
-#X connect 11 0 3 1;
-#X connect 13 0 14 0;
-#X connect 14 0 3 0;
-#X connect 19 0 3 0;
+#N canvas 175 139 597 355 12;
+#X obj 16 7 cnv 15 550 40 empty empty adv3 10 22 0 24 -260818 -1 0
+;
+#X text 174 28 http://www.parasitaere-kapazitaeten.net;
+#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+37 1e+37 0 0 empty empty empty 0 -6 0 12
+-228992 -1 -1 0 256;
+#X msg 269 120 1 10;
+#X msg 389 118 1;
+#X msg 424 118 -1;
+#X msg 460 118 2;
+#X obj 88 119 bng 25 250 50 0 empty empty empty 0 -6 0 8 -258699 -1
+-1;
+#X msg 313 119 7 2;
+#X text 325 300 end has been reached;
+#X obj 157 117 nbx 5 18 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 12
+-228992 -1 -1 0 256;
+#X msg 158 140 set \$1;
+#X text 72 98 trigger;
+#X text 147 98 set counter;
+#X text 264 99 set bounds;
+#X text 390 96 set step size;
+#X msg 80 186 reset;
+#X text 83 166 reset;
+#X text 21 49 this is a port of IOhannes Zmoelnings "counter" example
+;
+#X text 174 8 flext tutorial \, (C)2002 \, 2003 Thomas Grill;
+#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
index 97bfad84..bc713e7a 100644
--- a/externals/grill/flext/tutorial/pd/ex-attr1.pd
+++ b/externals/grill/flext/tutorial/pd/ex-attr1.pd
@@ -12,23 +12,23 @@
#X text 230 216 set attribute "arg";
#X text 295 123 query object attributes (watch console);
#X text 228 167 query attribute "arg" (watch console);
-#X obj 16 8 cnv 15 550 40 empty empty attr1 10 22 32 24 -260818 -1
-0;
-#X text 175 8 flext tutorial \, (C)2002 Thomas Grill;
+#X obj 16 8 cnv 15 550 40 empty empty attr1 10 22 0 24 -260818 -1 0
+;
#X text 175 28 http://www.parasitaere-kapazitaeten.net;
#X text 206 85 get some "help";
#X text 26 413 result;
-#X obj 23 139 nbx 4 16 -999 999 0 0 empty empty empty 0 -6 32 12 -261681
--1 -1 49 256;
-#X obj 29 395 nbx 7 16 -1e+37 1e+37 0 0 empty empty empty 0 -6 32 12
--228992 -1 -1 52 256;
-#X obj 161 206 nbx 4 16 -999 999 0 0 empty empty empty 0 -6 32 12 -261681
--1 -1 0 256;
+#X obj 23 139 nbx 4 16 -999 999 0 0 empty empty empty 0 -6 0 12 -261681
+-1 -1 109 256;
+#X obj 29 395 nbx 7 16 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 12
+-228992 -1 -1 143 256;
+#X obj 161 206 nbx 4 16 -999 999 0 0 empty empty empty 0 -6 0 12 -261681
+-1 -1 34 256;
+#X text 175 10 flext tutorial \, (C)2002 \, 2003 Thomas Grill;
#X connect 0 0 1 0;
-#X connect 1 0 19 0;
+#X connect 1 0 18 0;
#X connect 1 1 6 0;
#X connect 3 0 1 0;
#X connect 7 0 1 0;
#X connect 9 0 1 0;
-#X connect 18 0 1 0;
-#X connect 20 0 9 0;
+#X connect 17 0 1 0;
+#X connect 19 0 9 0;
diff --git a/externals/grill/flext/tutorial/pd/ex-attr2.pd b/externals/grill/flext/tutorial/pd/ex-attr2.pd
index 4ac89a0e..de1b0c63 100644
--- a/externals/grill/flext/tutorial/pd/ex-attr2.pd
+++ b/externals/grill/flext/tutorial/pd/ex-attr2.pd
@@ -1,17 +1,17 @@
#N canvas 364 29 605 442 12;
#X msg 21 84 help;
#X msg 23 119 getattributes;
-#X text 265 350 there is one additional outlet;
-#X text 265 365 for all attribute-enabled objects;
-#X obj 247 389 print;
-#X msg 23 162 getarg;
+#X text 265 357 there is one additional outlet;
+#X text 265 372 for all attribute-enabled objects;
+#X obj 247 396 print;
+#X msg 23 155 getarg;
#X text 67 84 get some help;
-#X text 15 314 trigger output;
-#X msg 23 222 arg \$1;
+#X text 15 249 trigger output;
+#X msg 271 294 arg \$1;
#X text 160 118 query object attributes (watch console);
-#X msg 96 162 getop;
-#X obj 159 330 attr2 @op +;
-#X text 255 161 query attributes;
+#X msg 96 155 getop;
+#X obj 159 337 attr2 @op +;
+#X text 238 154 query attributes;
#X text 333 210 set attributes;
#X msg 169 200 op +;
#X msg 168 225 op -;
@@ -19,24 +19,25 @@
#X msg 269 224 op **;
#X msg 269 200 op =;
#X msg 219 224 op /;
-#X msg 158 162 getresult;
-#X obj 16 8 cnv 15 550 40 empty empty attr2 10 22 32 24 -260818 -1
-0;
-#X text 173 8 flext tutorial \, (C)2002 Thomas Grill;
+#X msg 158 155 getresult;
+#X obj 16 8 cnv 15 550 40 empty empty attr2 10 22 0 24 -260818 -1 0
+;
#X text 173 28 http://www.parasitaere-kapazitaeten.net;
-#X text 91 391 result;
-#X obj 23 336 nbx 4 16 -999 999 0 0 empty empty empty 0 -6 32 12 -261681
--1 -1 -55 256;
-#X obj 23 201 nbx 4 16 -999 999 0 0 empty empty empty 0 -6 96 12 -261681
--1 -1 1 256;
-#X obj 151 391 nbx 7 16 -1e+37 1e+37 0 0 empty empty empty 0 -6 32
-12 -228992 -1 -1 -54 256;
+#X text 91 398 result;
+#X obj 23 271 nbx 4 16 -999 999 0 0 empty empty empty 0 -6 0 12 -261681
+-1 -1 40 256;
+#X obj 271 273 nbx 4 16 -999 999 0 0 empty empty empty 0 -6 0 12 -261681
+-1 -1 10 256;
+#X obj 151 398 nbx 7 16 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 12
+-228992 -1 -1 400 256;
+#X text 171 10 flext tutorial \, (C)2002 \, 2003 Thomas Grill;
+#X text 328 274 set argument;
#X connect 0 0 11 0;
#X connect 1 0 11 0;
#X connect 5 0 11 0;
#X connect 8 0 11 0;
#X connect 10 0 11 0;
-#X connect 11 0 27 0;
+#X connect 11 0 26 0;
#X connect 11 1 4 0;
#X connect 14 0 11 0;
#X connect 15 0 11 0;
@@ -45,5 +46,5 @@
#X connect 18 0 11 0;
#X connect 19 0 11 0;
#X connect 20 0 11 0;
-#X connect 25 0 11 0;
-#X connect 26 0 8 0;
+#X connect 24 0 11 0;
+#X connect 25 0 8 0;
diff --git a/externals/grill/flext/tutorial/pd/ex-attr3.pd b/externals/grill/flext/tutorial/pd/ex-attr3.pd
index de7d6bf2..b55bf2fd 100644
--- a/externals/grill/flext/tutorial/pd/ex-attr3.pd
+++ b/externals/grill/flext/tutorial/pd/ex-attr3.pd
@@ -1,60 +1,60 @@
-#N canvas 175 139 603 453 12;
-#X obj 16 7 cnv 15 550 40 empty empty attr3 10 22 0 24 -260818 -1 0
-;
-#X text 174 8 flext tutorial \, (C)2002 Thomas Grill;
-#X text 174 28 http://www.parasitaere-kapazitaeten.net;
-#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+037 1e+037 0 0 empty empty empty 0 -6 0
-12 -228992 -1 -1 8 256;
-#X msg 264 129 1 10;
-#X msg 384 127 1;
-#X msg 419 127 -1;
-#X msg 455 127 2;
-#X obj 36 128 bng 25 250 50 0 empty empty empty 0 -6 0 8 -258699 -1
--1;
-#X msg 308 128 7 2;
-#X obj 159 123 nbx 5 18 -1e+037 1e+037 0 0 empty empty empty 0 -6 0
-12 -228992 -1 -1 0 256;
-#X msg 160 146 set \$1;
-#X text 20 107 trigger;
-#X text 149 104 set counter;
-#X text 259 108 set bounds;
-#X text 385 105 set step size;
-#X msg 87 135 reset;
-#X text 90 115 reset;
-#X text 23 63 with attributes;
-#X obj 197 327 attr3 @bounds 2 5 @step 1;
-#X msg 32 195 getattributes;
-#X obj 392 363 print;
-#X text 440 362 attributes;
-#X msg 32 237 getcount;
-#X msg 258 234 getbounds;
-#X msg 388 232 getstep;
-#X text 149 193 list all attributes;
-#X msg 32 266 count 3;
-#X text 109 238 get count;
-#X text 104 266 set count;
-#X msg 257 261 bounds 5 15;
-#X msg 387 259 step 3;
-#X text 21 49 this is a port of IOhannes Zmoelnings "counter" example
-;
-#X connect 5 0 20 1;
-#X connect 6 0 20 2;
-#X connect 7 0 20 2;
-#X connect 8 0 20 2;
-#X connect 9 0 20 0;
-#X connect 10 0 20 1;
-#X connect 11 0 12 0;
-#X connect 12 0 20 0;
-#X connect 17 0 20 0;
-#X connect 20 0 4 0;
-#X connect 20 1 3 0;
-#X connect 20 2 22 0;
-#X connect 21 0 20 0;
-#X connect 24 0 20 0;
-#X connect 25 0 20 0;
-#X connect 26 0 20 0;
-#X connect 28 0 20 0;
-#X connect 31 0 20 0;
-#X connect 32 0 20 0;
+#N canvas 175 139 603 453 12;
+#X obj 16 7 cnv 15 550 40 empty empty attr3 10 22 0 24 -260818 -1 0
+;
+#X text 174 28 http://www.parasitaere-kapazitaeten.net;
+#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 0 256;
+#X msg 264 129 1 10;
+#X msg 384 127 1;
+#X msg 419 127 -1;
+#X msg 455 127 2;
+#X obj 36 128 bng 25 250 50 0 empty empty empty 0 -6 0 8 -258699 -1
+-1;
+#X msg 308 128 7 2;
+#X obj 159 123 nbx 5 18 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 12
+-228992 -1 -1 0 256;
+#X msg 160 146 set \$1;
+#X text 20 107 trigger;
+#X text 149 104 set counter;
+#X text 259 108 set bounds;
+#X text 385 105 set step size;
+#X msg 87 135 reset;
+#X text 90 115 reset;
+#X text 23 63 with attributes;
+#X obj 197 327 attr3 @bounds 2 5 @step 1;
+#X msg 32 195 getattributes;
+#X obj 392 363 print;
+#X text 440 362 attributes;
+#X msg 32 237 getcount;
+#X msg 388 232 getstep;
+#X text 149 193 list all attributes;
+#X msg 32 266 count 3;
+#X text 109 238 get count;
+#X text 104 266 set count;
+#X msg 387 259 step 3;
+#X text 21 49 this is a port of IOhannes Zmoelnings "counter" example
+;
+#X msg 258 234 getbounds;
+#X msg 257 261 bounds 5 15;
+#X text 174 8 flext tutorial \, (C)2002 \, 2003 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-lib1.pd b/externals/grill/flext/tutorial/pd/ex-lib1.pd
index 83311593..885e1ba2 100644
--- a/externals/grill/flext/tutorial/pd/ex-lib1.pd
+++ b/externals/grill/flext/tutorial/pd/ex-lib1.pd
@@ -1,51 +1,51 @@
#N canvas 120 205 580 295 12;
-#X msg 106 125 arg \$1;
-#X obj 34 161 lib1.+ @arg 3;
-#X text 105 77 set arg;
-#X msg 289 124 arg \$1;
-#X text 288 78 set arg;
-#X msg 476 127 arg \$1;
-#X text 475 81 set arg;
-#X obj 396 165 lib1.* @arg 2;
-#X obj 214 163 lib1.- @arg 7;
-#X text 29 76 trigger;
-#X text 211 80 trigger;
-#X text 395 81 trigger;
+#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 8 flext tutorial \, (C)2002 Thomas Grill;
#X text 173 28 http://www.parasitaere-kapazitaeten.net;
-#X obj 34 100 nbx 4 16 -999 999 0 0 empty empty empty 0 -6 0 12 -261681
+#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 105 99 nbx 4 16 -999 999 0 0 empty empty empty 0 -6 0 12 -261681
+#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 216 100 nbx 4 16 -999 999 0 0 empty empty empty 0 -6 0 12 -261681
+#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 288 102 nbx 4 16 -999 999 0 0 empty empty empty 0 -6 0 12 -261681
+#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 398 102 nbx 4 16 -999 999 0 0 empty empty empty 0 -6 0 12 -261681
+#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 476 105 nbx 4 16 -999 999 0 0 empty empty empty 0 -6 0 12 -261681
+#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 34 194 nbx 7 16 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 12
+#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 214 194 nbx 7 16 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 12
+#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 396 194 nbx 7 16 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 12
+#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 26 245 In order to use the objects the library must have been
+#X text 25 56 In order to use the objects the library must have been
;
-#X text 27 263 loaded at PD startup (with the "-lib lib1" argument)
+#X text 26 74 loaded at PD startup (with the "-lib lib1" argument)
;
+#X text 173 8 flext tutorial \, (C)2002 \, 2003 Thomas Grill;
#X connect 0 0 1 0;
-#X connect 1 0 21 0;
+#X connect 1 0 20 0;
#X connect 3 0 8 0;
#X connect 5 0 7 0;
-#X connect 7 0 23 0;
-#X connect 8 0 22 0;
-#X connect 15 0 1 0;
-#X connect 16 0 0 0;
-#X connect 17 0 8 0;
-#X connect 18 0 3 0;
-#X connect 19 0 7 0;
-#X connect 20 0 5 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
index bfa445cd..9187d586 100644
--- a/externals/grill/flext/tutorial/pd/ex-signal1.pd
+++ b/externals/grill/flext/tutorial/pd/ex-signal1.pd
@@ -1,25 +1,25 @@
#N canvas 335 232 575 335 12;
-#X obj 137 137 hsl 128 15 0 1 0 0 empty empty empty 20 8 32 8 -261681
+#X obj 137 137 hsl 128 15 0 1 0 0 empty empty empty 20 8 0 8 -261681
-1 -1 0 1;
#X obj 31 92 osc~ 440;
#X obj 34 279 dac~;
#X obj 126 92 osc~ 880;
#X obj 44 206 signal1~;
-#X obj 16 8 cnv 15 550 40 empty empty signal1 10 22 32 24 -260818 -1
+#X obj 16 8 cnv 15 550 40 empty empty signal1 10 22 0 24 -260818 -1
0;
-#X text 175 8 flext tutorial \, (C)2002 Thomas Grill;
#X text 175 28 http://www.parasitaere-kapazitaeten.net;
#X text 276 151 control the mixing;
#X text 113 241 adjust the volume;
#X obj 44 240 *~ 0.5;
#X text 28 73 source 1;
#X text 128 72 source 2;
-#X obj 135 159 nbx 5 16 0 1 0 0 empty empty empty 0 -6 32 12 -261681
+#X obj 135 159 nbx 5 16 0 1 0 0 empty empty empty 0 -6 0 12 -261681
-1 -1 0 256;
-#X connect 0 0 13 0;
+#X text 175 8 flext tutorial \, (C)2002 \, 2003 Thomas Grill;
+#X connect 0 0 12 0;
#X connect 1 0 4 0;
#X connect 3 0 4 1;
-#X connect 4 0 10 0;
-#X connect 10 0 2 0;
-#X connect 10 0 2 1;
-#X connect 13 0 4 2;
+#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
index b26604c4..c081c3b5 100644
--- a/externals/grill/flext/tutorial/pd/ex-signal2.pd
+++ b/externals/grill/flext/tutorial/pd/ex-signal2.pd
@@ -1,25 +1,25 @@
#N canvas 41 125 583 263 12;
#X obj 81 133 signal2~;
-#X obj 76 88 bng 25 250 50 0 empty empty empty 0 -6 32 8 -261681 -1
+#X obj 76 88 bng 25 250 50 0 empty empty empty 0 -6 0 8 -261681 -1
-1;
#X text 108 94 bang to get audio system parameters;
#X text 233 212 channels in and out;
-#X obj 16 8 cnv 15 550 40 empty empty signal2 10 22 32 24 -260818 -1
+#X obj 16 8 cnv 15 550 40 empty empty signal2 10 22 0 24 -260818 -1
0;
-#X text 175 8 flext tutorial \, (C)2002 Thomas Grill;
#X text 175 28 http://www.parasitaere-kapazitaeten.net;
-#X obj 38 191 nbx 5 16 -1e+37 1e+37 0 0 empty empty empty 0 -6 32 12
+#X obj 38 191 nbx 5 16 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 12
+-228992 -1 -1 0 256;
+#X obj 130 191 nbx 5 16 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 12
+-228992 -1 -1 0 256;
+#X obj 233 191 nbx 5 16 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 12
+-228992 -1 -1 0 256;
+#X obj 325 191 nbx 5 16 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 12
-228992 -1 -1 0 256;
-#X obj 130 191 nbx 5 16 -1e+37 1e+37 0 0 empty empty empty 0 -6 32
-12 -228992 -1 -1 0 256;
-#X obj 233 191 nbx 5 16 -1e+37 1e+37 0 0 empty empty empty 0 -6 32
-12 -228992 -1 -1 0 256;
-#X obj 325 191 nbx 5 16 -1e+37 1e+37 0 0 empty empty empty 0 -6 32
-12 -228992 -1 -1 0 256;
#X text 12 211 samplerate;
#X text 128 211 blocksize;
-#X connect 0 0 7 0;
-#X connect 0 1 8 0;
-#X connect 0 2 9 0;
-#X connect 0 3 10 0;
+#X text 173 10 flext tutorial \, (C)2002 \, 2003 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
index e2872868..eb32567d 100644
--- a/externals/grill/flext/tutorial/pd/ex-simple1.pd
+++ b/externals/grill/flext/tutorial/pd/ex-simple1.pd
@@ -3,14 +3,14 @@
#X text 203 187 inverse;
#X text 169 96 input;
#X obj 113 141 simple1;
-#X obj 16 8 cnv 15 550 40 empty empty simple1 10 22 32 24 -260818 -1
+#X obj 16 8 cnv 15 550 40 empty empty simple1 10 22 0 24 -260818 -1
0;
-#X text 175 8 flext tutorial \, (C)2002 Thomas Grill;
#X text 175 28 http://www.parasitaere-kapazitaeten.net;
-#X obj 114 96 nbx 4 16 -999 999 0 0 empty empty empty 0 -6 32 12 -261681
--1 -1 104 256;
-#X obj 112 190 nbx 7 16 -1e+37 1e+37 0 0 empty empty empty 0 -6 32
-12 -228992 -1 -1 0.00961538 256;
+#X obj 114 96 nbx 4 16 -999 999 0 0 empty empty empty 0 -6 0 12 -261681
+-1 -1 88 256;
+#X obj 112 190 nbx 7 16 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 12
+-228992 -1 -1 0.0113636 256;
+#X text 175 8 flext tutorial \, (C)2002 \, 2003 Thomas Grill;
#X connect 0 0 3 0;
-#X connect 3 0 8 0;
-#X connect 7 0 3 0;
+#X connect 3 0 7 0;
+#X connect 6 0 3 0;
diff --git a/externals/grill/flext/tutorial/pd/ex-simple2.pd b/externals/grill/flext/tutorial/pd/ex-simple2.pd
index 02ad85a7..dfc0cb8a 100644
--- a/externals/grill/flext/tutorial/pd/ex-simple2.pd
+++ b/externals/grill/flext/tutorial/pd/ex-simple2.pd
@@ -4,18 +4,18 @@
#X text 103 119 triggering;
#X text 215 120 non-triggering;
#X text 206 197 default argument;
-#X obj 16 8 cnv 15 550 40 empty empty simple2 10 22 32 24 -260818 -1
+#X obj 16 8 cnv 15 550 40 empty empty simple2 10 22 0 24 -260818 -1
0;
-#X text 174 8 flext tutorial \, (C)2002 Thomas Grill;
#X text 174 28 http://www.parasitaere-kapazitaeten.net;
#X text 66 82 print a "help" message (to the console);
-#X obj 110 144 nbx 4 16 -999 999 0 0 empty empty empty 0 -6 32 12 -261681
+#X obj 110 144 nbx 4 16 -999 999 0 0 empty empty empty 0 -6 0 12 -261681
+-1 -1 22 256;
+#X obj 217 144 nbx 4 16 -999 999 0 0 empty empty empty 0 -6 0 12 -261681
-1 -1 0 256;
-#X obj 217 144 nbx 4 16 -999 999 0 0 empty empty empty 0 -6 32 12 -261681
--1 -1 0 256;
-#X obj 111 239 nbx 7 16 -1e+37 1e+37 0 0 empty empty empty 0 -6 32
-12 -228992 -1 -1 0 256;
-#X connect 0 0 11 0;
+#X obj 111 239 nbx 7 16 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 12
+-228992 -1 -1 25 256;
+#X text 174 10 flext tutorial \, (C)2002 \, 2003 Thomas Grill;
+#X connect 0 0 10 0;
#X connect 1 0 0 0;
-#X connect 9 0 0 0;
-#X connect 10 0 0 1;
+#X connect 8 0 0 0;
+#X connect 9 0 0 1;
diff --git a/externals/grill/flext/tutorial/pd/ex-simple3.pd b/externals/grill/flext/tutorial/pd/ex-simple3.pd
index bf58a003..c9bbc211 100644
--- a/externals/grill/flext/tutorial/pd/ex-simple3.pd
+++ b/externals/grill/flext/tutorial/pd/ex-simple3.pd
@@ -10,10 +10,10 @@
#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 32 24 -260818 -1
+#X obj 16 8 cnv 15 550 40 empty empty simple3 10 22 0 24 -260818 -1
0;
-#X text 174 8 flext tutorial \, (C)2002 Thomas Grill;
#X text 174 28 http://www.parasitaere-kapazitaeten.net;
+#X text 174 10 flext tutorial \, (C)2002 \, 2003 Thomas Grill;
#X connect 0 0 7 0;
#X connect 1 0 7 0;
#X connect 2 0 7 0;
diff --git a/externals/grill/flext/tutorial/pd/ex-sndobj1.pd b/externals/grill/flext/tutorial/pd/ex-sndobj1.pd
index c343558e..37bc8981 100644
--- a/externals/grill/flext/tutorial/pd/ex-sndobj1.pd
+++ b/externals/grill/flext/tutorial/pd/ex-sndobj1.pd
@@ -1,34 +1,34 @@
-#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 8 flext tutorial \, (C)2002 Thomas Grill;
-#X text 175 28 http://www.parasitaere-kapazitaeten.net;
-#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 7200 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 1800 1;
-#X obj 244 104 hsl 128 15 0.5 2 1 0 empty empty empty -2 -6 0 8 -261681
--1 -1 5100 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 connect 6 0 15 1;
-#X connect 6 0 16 1;
-#X connect 7 0 14 0;
-#X connect 8 0 14 0;
-#X connect 9 0 7 0;
-#X connect 10 0 8 0;
-#X connect 13 0 14 0;
-#X connect 13 0 14 1;
-#X connect 14 0 15 0;
-#X connect 14 1 16 0;
-#X connect 15 0 0 0;
-#X connect 16 0 0 1;
+#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://www.parasitaere-kapazitaeten.net;
+#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 \, 2003 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
new file mode 100644
index 00000000..24bcbb49
--- /dev/null
+++ b/externals/grill/flext/tutorial/pd/ex-stk1.pd
@@ -0,0 +1,15 @@
+#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://www.parasitaere-kapazitaeten.net;
+#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-2003 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
new file mode 100644
index 00000000..2a4e8ed3
--- /dev/null
+++ b/externals/grill/flext/tutorial/pd/ex-stk2.pd
@@ -0,0 +1,31 @@
+#N canvas 245 28 590 384 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://www.parasitaere-kapazitaeten.net;
+#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-2003 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 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
index 341bcc37..a4b7ba79 100644
--- a/externals/grill/flext/tutorial/pd/ex-thread1.pd
+++ b/externals/grill/flext/tutorial/pd/ex-thread1.pd
@@ -1,43 +1,43 @@
-#N canvas 105 266 702 345 12;
-#X obj 39 91 bng 25 250 50 0 empty empty start 0 -6 0 8 -261681 -1
--1;
-#X obj 130 246 thread1;
-#X obj 220 247 thread1;
-#X obj 312 247 thread1;
-#X obj 405 247 thread1;
-#X obj 131 185 delay 200;
-#X obj 220 184 delay 200;
-#X obj 313 186 delay 200;
-#X obj 404 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 175 8 flext tutorial \, (C)2002 Thomas Grill;
-#X text 175 28 http://www.parasitaere-kapazitaeten.net;
-#X obj 131 277 nbx 5 16 -1e+037 1e+037 0 0 empty empty empty 0 -6 0
-12 -228992 -1 -1 0 256;
-#X obj 221 277 nbx 5 16 -1e+037 1e+037 0 0 empty empty empty 0 -6 0
-12 -228992 -1 -1 0 256;
-#X obj 311 277 nbx 5 16 -1e+037 1e+037 0 0 empty empty empty 0 -6 0
-12 -228992 -1 -1 0 256;
-#X obj 406 276 nbx 5 16 -1e+037 1e+037 0 0 empty empty empty 0 -6 0
-12 -228992 -1 -1 0 256;
-#X obj 39 244 thread1;
-#X obj 39 277 nbx 5 16 -1e+037 1e+037 0 0 empty empty empty 0 -6 0
-12 -228992 -1 -1 0 256;
-#X connect 0 0 5 0;
-#X connect 0 0 18 0;
-#X connect 1 0 14 0;
-#X connect 2 0 15 0;
-#X connect 3 0 16 0;
-#X connect 4 0 17 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 18 0 19 0;
+#N canvas 105 266 702 345 12;
+#X obj 39 91 bng 25 250 50 0 empty empty start 0 -6 0 8 -261681 -1
+-1;
+#X obj 130 246 thread1;
+#X obj 220 247 thread1;
+#X obj 312 247 thread1;
+#X obj 405 247 thread1;
+#X obj 131 185 delay 200;
+#X obj 220 184 delay 200;
+#X obj 313 186 delay 200;
+#X obj 404 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 175 28 http://www.parasitaere-kapazitaeten.net;
+#X obj 131 277 nbx 5 16 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 12
+-228992 -1 -1 0 256;
+#X obj 221 277 nbx 5 16 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 12
+-228992 -1 -1 0 256;
+#X obj 311 277 nbx 5 16 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 12
+-228992 -1 -1 0 256;
+#X obj 406 276 nbx 5 16 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 12
+-228992 -1 -1 0 256;
+#X obj 39 244 thread1;
+#X obj 39 277 nbx 5 16 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 12
+-228992 -1 -1 0 256;
+#X text 175 10 flext tutorial \, (C)2002 \, 2003 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
index cb2e764a..dc71ac48 100644
--- a/externals/grill/flext/tutorial/pd/ex-thread2.pd
+++ b/externals/grill/flext/tutorial/pd/ex-thread2.pd
@@ -1,9 +1,9 @@
#N canvas 116 192 587 332 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 32 8 -261681 -1
+#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 32 8 -261681 -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;
@@ -17,16 +17,16 @@
#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 32 24 -260818 -1
+#X obj 16 8 cnv 15 550 40 empty empty thread2 10 22 0 24 -260818 -1
0;
-#X text 174 8 flext tutorial \, (C)2002 Thomas Grill;
#X text 174 28 http://www.parasitaere-kapazitaeten.net;
-#X obj 65 264 nbx 5 16 -1e+37 1e+37 0 0 empty empty empty 0 -6 32 12
+#X obj 65 264 nbx 5 16 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 12
-228992 -1 -1 0 256;
-#X obj 231 265 nbx 5 16 -1e+37 1e+37 0 0 empty empty empty 0 -6 32
-12 -228992 -1 -1 0 256;
-#X obj 403 267 nbx 5 16 -1e+37 1e+37 0 0 empty empty empty 0 -6 32
-12 -228992 -1 -1 0 256;
+#X obj 231 265 nbx 5 16 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 12
+-228992 -1 -1 0 256;
+#X obj 403 267 nbx 5 16 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 12
+-228992 -1 -1 0 256;
+#X text 174 10 flext tutorial \, (C)2002 \, 2003 Thomas Grill;
#X connect 0 0 12 0;
#X connect 1 0 11 0;
#X connect 2 0 6 0;
@@ -39,9 +39,9 @@
#X connect 7 0 11 0;
#X connect 8 0 10 0;
#X connect 9 0 10 0;
-#X connect 10 0 21 0;
-#X connect 11 0 20 0;
-#X connect 12 0 19 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/readme.txt b/externals/grill/flext/tutorial/readme.txt
index a059dc77..0e445a5a 100644
--- a/externals/grill/flext/tutorial/readme.txt
+++ b/externals/grill/flext/tutorial/readme.txt
@@ -12,6 +12,20 @@ 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) signal*
+5) lib*
+6) thread*
+
+and, if needed
+7) sndobj* and/or stk*
+
+----------------------------------------------------------------------------
+
The package should at least compile (and is tested) with the following compilers:
pd - Windows:
@@ -41,5 +55,3 @@ Max/MSP - MacOSX:
------------------
o Metrowerks CodeWarrior V6: edit & use the several ".cw" project files
-----------------------------------------------------------------------------
-
diff --git a/externals/grill/flext/tutorial/signal2/main.cpp b/externals/grill/flext/tutorial/signal2/main.cpp
index 76a2ca7b..69d86e5b 100644
--- a/externals/grill/flext/tutorial/signal2/main.cpp
+++ b/externals/grill/flext/tutorial/signal2/main.cpp
@@ -1,7 +1,7 @@
/*
flext tutorial - signal 2
-Copyright (c) 2002 Thomas Grill (xovo@gmx.net)
+Copyright (c) 2002,2003 Thomas Grill (xovo@gmx.net)
For information on usage and redistribution, and for a DISCLAIMER OF ALL
WARRANTIES, see the file, "license.txt," in this distribution.
diff --git a/externals/grill/flext/tutorial/simple1/main.cpp b/externals/grill/flext/tutorial/simple1/main.cpp
index 599e97f6..6099a792 100755
--- a/externals/grill/flext/tutorial/simple1/main.cpp
+++ b/externals/grill/flext/tutorial/simple1/main.cpp
@@ -1,7 +1,7 @@
/*
flext tutorial - simple 1
-Copyright (c) 2002 Thomas Grill (xovo@gmx.net)
+Copyright (c) 2002,2003 Thomas Grill (xovo@gmx.net)
For information on usage and redistribution, and for a DISCLAIMER OF ALL
WARRANTIES, see the file, "license.txt," in this distribution.
diff --git a/externals/grill/flext/tutorial/simple2/main.cpp b/externals/grill/flext/tutorial/simple2/main.cpp
index 49b05351..894ceb47 100755
--- a/externals/grill/flext/tutorial/simple2/main.cpp
+++ b/externals/grill/flext/tutorial/simple2/main.cpp
@@ -1,7 +1,7 @@
/*
flext tutorial - simple 2
-Copyright (c) 2002 Thomas Grill (xovo@gmx.net)
+Copyright (c) 2002,2003 Thomas Grill (xovo@gmx.net)
For information on usage and redistribution, and for a DISCLAIMER OF ALL
WARRANTIES, see the file, "license.txt," in this distribution.
diff --git a/externals/grill/flext/tutorial/simple3/main.cpp b/externals/grill/flext/tutorial/simple3/main.cpp
index d13ce42d..33b81032 100644
--- a/externals/grill/flext/tutorial/simple3/main.cpp
+++ b/externals/grill/flext/tutorial/simple3/main.cpp
@@ -1,7 +1,7 @@
/*
flext tutorial - simple 3
-Copyright (c) 2002 Thomas Grill (xovo@gmx.net)
+Copyright (c) 2002,2003 Thomas Grill (xovo@gmx.net)
For information on usage and redistribution, and for a DISCLAIMER OF ALL
WARRANTIES, see the file, "license.txt," in this distribution.
diff --git a/externals/grill/flext/tutorial/sndobj1/main.cpp b/externals/grill/flext/tutorial/sndobj1/main.cpp
index 7e6c7663..2a339ee6 100644
--- a/externals/grill/flext/tutorial/sndobj1/main.cpp
+++ b/externals/grill/flext/tutorial/sndobj1/main.cpp
@@ -1,7 +1,7 @@
/*
flext tutorial - sndobj 1
-Copyright (c) 2002 Thomas Grill (xovo@gmx.net)
+Copyright (c) 2002,2003 Thomas Grill (xovo@gmx.net)
For information on usage and redistribution, and for a DISCLAIMER OF ALL
WARRANTIES, see the file, "license.txt," in this distribution.
@@ -10,7 +10,9 @@ 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/
-This object shows simple stereo pitch shifting.
+The SndObj library should be compiled multithreaded.
+
+This external features simple stereo pitch shifting.
*/
@@ -26,15 +28,13 @@ This object shows simple stereo pitch shifting.
class sndobj1:
public flext_sndobj
{
- FLEXT_HEADER(sndobj1,flext_sndobj)
+ FLEXT_HEADER_S(sndobj1,flext_sndobj,Setup)
public:
sndobj1();
-protected:
-
// these are obligatory!
- virtual void NewObjs();
+ virtual bool NewObjs();
virtual void FreeObjs();
virtual void ProcessObjs();
@@ -43,6 +43,9 @@ protected:
float sh1,sh2;
+private:
+ static void Setup(t_class *c);
+
FLEXT_ATTRVAR_F(sh1)
FLEXT_ATTRVAR_F(sh2)
};
@@ -51,23 +54,26 @@ FLEXT_NEW_DSP("sndobj1~",sndobj1)
sndobj1::sndobj1():
- sh1(1),sh2(1)
+ sh1(1),sh2(1),
+ obj1(NULL),obj2(NULL)
{
AddInSignal(2); // audio ins
AddOutSignal(2); // audio outs
+}
- obj1 = obj2 = NULL;
-
- FLEXT_ADDATTR_VAR1("shL",sh1);
- FLEXT_ADDATTR_VAR1("shR",sh2);
+void sndobj1::Setup(t_class *c)
+{
+ FLEXT_CADDATTR_VAR1(c,"shL",sh1);
+ FLEXT_CADDATTR_VAR1(c,"shR",sh2);
}
// construct needed SndObjs
-void sndobj1::NewObjs()
+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
diff --git a/externals/grill/flext/tutorial/stk1/main.cpp b/externals/grill/flext/tutorial/stk1/main.cpp
index 31e10e70..4f7c7e6a 100644
--- a/externals/grill/flext/tutorial/stk1/main.cpp
+++ b/externals/grill/flext/tutorial/stk1/main.cpp
@@ -1,25 +1,32 @@
/*
flext tutorial - stk 1
-Copyright (c) 2002 Thomas Grill (xovo@gmx.net)
+Copyright (c) 2002,2003 Thomas Grill (xovo@gmx.net)
For information on usage and redistribution, and for a DISCLAIMER OF ALL
WARRANTIES, see the file, "license.txt," in this distribution.
-------------------------------------------------------------------------
This is an example of an external using the STK ("synthesis toolkit") library.
-See http://ccrma-www.stanford.edu/software/stk
+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)
-#define FLEXT_ATTRIBUTES 1
+*/
#include <flstk.h>
-
+
#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 401)
#error You need at least flext version 0.4.1
#endif
+#include "Noise.h"
+
class stk1:
public flext_stk
@@ -30,66 +37,54 @@ public:
stk1();
protected:
-
// these are obligatory!
- virtual void NewObjs();
- virtual void FreeObjs();
- virtual void ProcessObjs();
-
- // space for a few sndobjs
-// Pitch *obj1,*obj2;
-
- float sh1,sh2;
+ virtual bool NewObjs(); // create STK instruments
+ virtual void FreeObjs(); // destroy STK instruments
+ virtual void ProcessObjs(int n); // do DSP processing
- FLEXT_ATTRVAR_F(sh1)
- FLEXT_ATTRVAR_F(sh2)
+private:
+ Noise *inst;
+ static void Setup(t_class *c);
};
FLEXT_NEW_DSP("stk1~",stk1)
-
+
stk1::stk1():
- sh1(1),sh2(1)
+ inst(NULL)
{
- AddInSignal(2); // audio ins
- AddOutSignal(2); // audio outs
-
-// obj1 = obj2 = NULL;
-
- FLEXT_ADDATTR_VAR1("shL",sh1);
- FLEXT_ADDATTR_VAR1("shR",sh2);
+ AddInAnything();
+ AddOutSignal();
}
-// construct needed SndObjs
-void stk1::NewObjs()
+
+// create STK instruments
+bool stk1::NewObjs()
{
+ bool ok = true;
+
// set up objects
-// obj1 = new Pitch(.1f,&InObj(0),sh1,Blocksize(),Samplerate());
-// obj2 = new Pitch(.1f,&InObj(1),sh2,Blocksize(),Samplerate());
+ try {
+ inst = new Noise;
+ }
+ catch (StkError &) {
+ post("%s - Noise() setup failed!",thisName());
+ ok = false;
+ }
+ return ok;
}
-// destroy the SndObjs
+
+// destroy the STK instruments
void stk1::FreeObjs()
{
-// if(obj1) delete obj1;
-// if(obj2) delete obj2;
+ if(inst) delete inst;
}
// this is called on every DSP block
-void stk1::ProcessObjs()
+void stk1::ProcessObjs(int n)
{
-/*
- // set current pitch shift
- obj1->SetPitch(sh1);
- obj2->SetPitch(sh2);
-
- // do processing here!!
- obj1->DoProcess();
- obj2->DoProcess();
-
- // output
- *obj1 >> OutObj(0);
- *obj2 >> OutObj(1);
-*/
+ while(n--) Outlet(0).tick(inst->tick());
}
+
diff --git a/externals/grill/flext/tutorial/stk1/stk1.dsp b/externals/grill/flext/tutorial/stk1/stk1.dsp
index 7ee60fdb..2be3c776 100644
--- a/externals/grill/flext/tutorial/stk1/stk1.dsp
+++ b/externals/grill/flext/tutorial/stk1/stk1.dsp
@@ -43,7 +43,7 @@ RSC=rc.exe
# 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" /I "f:\prog\packs\sndobj\include" /I "f:\prog\packs\stk\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "PD" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\source" /I "f:\prog\packs\sndobj\include" /I "f:\prog\packs\stk\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "PD" /D "FLEXT_THREADS" /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"
@@ -53,7 +53,7 @@ BSC32=bscmake.exe
# 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 stk.lib /nologo /dll /machine:I386 /out:"../pd-msvc/stk1~.dll" /libpath:"..\..\pd-msvc" /libpath:"f:\prog\packs\stk\lib"
+# ADD LINK32 kernel32.lib user32.lib pd.lib pthreadVC.lib flext_t-pdwin.lib stk.lib /nologo /dll /machine:I386 /out:"../pd-msvc/stk1~.dll" /libpath:"..\..\pd-msvc" /libpath:"f:\prog\packs\stk\lib"
!ELSEIF "$(CFG)" == "stk1 - Win32 Debug"
@@ -69,7 +69,7 @@ LINK32=link.exe
# 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" /I "f:\prog\packs\sndobj\include" /I "f:\prog\packs\stk\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "PD" /Fr /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\..\source" /I "f:\prog\packs\sndobj\include" /I "f:\prog\packs\stk\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "PD" /D "FLEXT_THREADS" /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"
@@ -79,7 +79,7 @@ BSC32=bscmake.exe
# 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 stk.lib /nologo /dll /debug /machine:I386 /out:"msvc-debug/stk1~.dll" /pdbtype:sept /libpath:"..\..\pd-msvc" /libpath:"f:\prog\packs\stk\lib"
+# ADD LINK32 kernel32.lib user32.lib pd.lib pthreadVC.lib flext_td-pdwin.lib stk_d.lib /nologo /dll /debug /machine:I386 /out:"msvc-debug/stk1~.dll" /pdbtype:sept /libpath:"..\..\pd-msvc" /libpath:"f:\prog\packs\stk\lib"
!ENDIF
diff --git a/externals/grill/flext/tutorial/stk2/main.cpp b/externals/grill/flext/tutorial/stk2/main.cpp
new file mode 100644
index 00000000..5d6cb72c
--- /dev/null
+++ b/externals/grill/flext/tutorial/stk2/main.cpp
@@ -0,0 +1,109 @@
+/*
+flext tutorial - stk 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 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
+#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];
+
+private:
+ static void Setup(t_class *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_class *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;
+
+ // set up objects
+ try {
+ for(int i = 0; i < 2; ++i)
+ inst[i] = new PitShift;
+ }
+ catch (StkError &) {
+ post("%s - Noise() setup 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];
+}
+
+// this is called on every DSP block
+void stk2::ProcessObjs(int n)
+{
+ while(n--) {
+ MY_FLOAT f = Inlet(0).tick();
+ for(int i = 0; i < 2; ++i)
+ Outlet(i).tick(inst[i]->tick(f));
+ }
+}
+
+
diff --git a/externals/grill/flext/tutorial/stk2/stk2.dsp b/externals/grill/flext/tutorial/stk2/stk2.dsp
new file mode 100644
index 00000000..8ace2bf9
--- /dev/null
+++ b/externals/grill/flext/tutorial/stk2/stk2.dsp
@@ -0,0 +1,95 @@
+# Microsoft Developer Studio Project File - Name="stk2" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** NICHT BEARBEITEN **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=stk2 - 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 "stk2.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 "stk2.mak" CFG="stk2 - Win32 Debug"
+!MESSAGE
+!MESSAGE Für die Konfiguration stehen zur Auswahl:
+!MESSAGE
+!MESSAGE "stk2 - Win32 Release" (basierend auf "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "stk2 - Win32 Debug" (basierend auf "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName "stk2"
+# PROP Scc_LocalPath "."
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "stk2 - 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 /MT /W3 /GX /O2 /I "..\..\source" /I "f:\prog\packs\sndobj\include" /I "f:\prog\packs\stk\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "PD" /D "FLEXT_THREADS" /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 pthreadVC.lib flext_t-pdwin.lib stk.lib /nologo /dll /machine:I386 /out:"../pd-msvc/stk2~.dll" /libpath:"..\..\pd-msvc" /libpath:"f:\prog\packs\stk\lib"
+
+!ELSEIF "$(CFG)" == "stk2 - 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 /MTd /W3 /Gm /GX /ZI /Od /I "..\..\source" /I "f:\prog\packs\sndobj\include" /I "f:\prog\packs\stk\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "PD" /D "FLEXT_THREADS" /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 pthreadVC.lib flext_td-pdwin.lib stk_d.lib /nologo /dll /debug /machine:I386 /out:"msvc-debug/stk2~.dll" /pdbtype:sept /libpath:"..\..\pd-msvc" /libpath:"f:\prog\packs\stk\lib"
+
+!ENDIF
+
+# Begin Target
+
+# Name "stk2 - Win32 Release"
+# Name "stk2 - Win32 Debug"
+# Begin Source File
+
+SOURCE=.\main.cpp
+# End Source File
+# End Target
+# End Project
diff --git a/externals/grill/flext/tutorial/thread1/main.cpp b/externals/grill/flext/tutorial/thread1/main.cpp
index c0d172e6..e5e0c0e3 100644
--- a/externals/grill/flext/tutorial/thread1/main.cpp
+++ b/externals/grill/flext/tutorial/thread1/main.cpp
@@ -1,7 +1,7 @@
/*
flext tutorial - threads 1
-Copyright (c) 2002 Thomas Grill (xovo@gmx.net)
+Copyright (c) 2002,2003 Thomas Grill (xovo@gmx.net)
For information on usage and redistribution, and for a DISCLAIMER OF ALL
WARRANTIES, see the file, "license.txt," in this distribution.
diff --git a/externals/grill/flext/tutorial/thread2/main.cpp b/externals/grill/flext/tutorial/thread2/main.cpp
index 0abb5962..40e82b3c 100644
--- a/externals/grill/flext/tutorial/thread2/main.cpp
+++ b/externals/grill/flext/tutorial/thread2/main.cpp
@@ -1,7 +1,7 @@
/*
flext tutorial - threads 2
-Copyright (c) 2002 Thomas Grill (xovo@gmx.net)
+Copyright (c) 2002,2003 Thomas Grill (xovo@gmx.net)
For information on usage and redistribution, and for a DISCLAIMER OF ALL
WARRANTIES, see the file, "license.txt," in this distribution.
diff --git a/externals/grill/flext/tutorial/tutorial.dsw b/externals/grill/flext/tutorial/tutorial.dsw
index 9ef8d03f..9fdef2da 100644
--- a/externals/grill/flext/tutorial/tutorial.dsw
+++ b/externals/grill/flext/tutorial/tutorial.dsw
@@ -243,6 +243,22 @@ Package=<4>
###############################################################################
+Project: "stk2"=.\stk2\stk2.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+ begin source code control
+ stk2
+ .\stk2
+ end source code control
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
Project: "thread1"=.\thread1\thread1.dsp - Package Owner=<4>
Package=<5>