aboutsummaryrefslogtreecommitdiff
path: root/externals/grill/flext/tutorial/stk1/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'externals/grill/flext/tutorial/stk1/main.cpp')
-rw-r--r--externals/grill/flext/tutorial/stk1/main.cpp95
1 files changed, 95 insertions, 0 deletions
diff --git a/externals/grill/flext/tutorial/stk1/main.cpp b/externals/grill/flext/tutorial/stk1/main.cpp
new file mode 100644
index 00000000..31e10e70
--- /dev/null
+++ b/externals/grill/flext/tutorial/stk1/main.cpp
@@ -0,0 +1,95 @@
+/*
+flext tutorial - stk 1
+
+Copyright (c) 2002 Thomas Grill (xovo@gmx.net)
+For information on usage and redistribution, and for a DISCLAIMER OF ALL
+WARRANTIES, see the file, "license.txt," in this distribution.
+
+-------------------------------------------------------------------------
+
+This is an example of an external using the STK ("synthesis toolkit") library.
+See http://ccrma-www.stanford.edu/software/stk
+
+*/
+
+#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
+
+
+class stk1:
+ public flext_stk
+{
+ FLEXT_HEADER(stk1,flext_stk)
+
+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;
+
+ FLEXT_ATTRVAR_F(sh1)
+ FLEXT_ATTRVAR_F(sh2)
+};
+
+FLEXT_NEW_DSP("stk1~",stk1)
+
+
+stk1::stk1():
+ sh1(1),sh2(1)
+{
+ AddInSignal(2); // audio ins
+ AddOutSignal(2); // audio outs
+
+// obj1 = obj2 = NULL;
+
+ FLEXT_ADDATTR_VAR1("shL",sh1);
+ FLEXT_ADDATTR_VAR1("shR",sh2);
+}
+
+// construct needed SndObjs
+void stk1::NewObjs()
+{
+ // set up objects
+// obj1 = new Pitch(.1f,&InObj(0),sh1,Blocksize(),Samplerate());
+// obj2 = new Pitch(.1f,&InObj(1),sh2,Blocksize(),Samplerate());
+}
+
+// destroy the SndObjs
+void stk1::FreeObjs()
+{
+// if(obj1) delete obj1;
+// if(obj2) delete obj2;
+}
+
+// this is called on every DSP block
+void stk1::ProcessObjs()
+{
+/*
+ // set current pitch shift
+ obj1->SetPitch(sh1);
+ obj2->SetPitch(sh2);
+
+ // do processing here!!
+ obj1->DoProcess();
+ obj2->DoProcess();
+
+ // output
+ *obj1 >> OutObj(0);
+ *obj2 >> OutObj(1);
+*/
+}
+