+++ /dev/null
-
-#include "ugen_clip.h"
-#include "chuck_type.h"
-#include "chuck_ugen.h"
-#include "chuck_vm.h"
-#include "chuck_globals.h"
-
-/* UI class - do-nothing (from FAUST/minimal.cpp) */
-
-class UI
-{
- bool fStopped;
-public:
-
- UI() : fStopped(false) {}
- virtual ~UI() {}
-
- virtual void addButton(const char* label, float* zone) {}
- virtual void addToggleButton(const char* label, float* zone) {}
- virtual void addCheckButton(const char* label, float* zone) {}
- virtual void addVerticalSlider(const char* label, float* zone, float init, float min, float max, float step) {}
- virtual void addHorizontalSlider(const char* label, float* zone, float init, float min, float max, float step) {}
- virtual void addNumEntry(const char* label, float* zone, float init, float min, float max, float step) {}
-
- virtual void openFrameBox(const char* label) {}
- virtual void openTabBox(const char* label) {}
- virtual void openHorizontalBox(const char* label) {}
- virtual void openVerticalBox(const char* label) {}
- virtual void closeBox() {}
-
- virtual void run() {}
-
- void stop() { fStopped = true; }
- bool stopped() { return fStopped; }
-};
-
-class dsp { public: float fSamplingFreq; };
-
-/*
- * FAUST intrinsic
- */
-<<includeIntrinsic>>
-
-/*
- * FAUST defines UI values as private, but provides no getters/setters.
- * In our particular case it's way more convenient to access them directly
- * than to set up a complicated UI structure. Also get rid of everything
- * being "virtual", since it may stop the compiler from inlining properly!
- */
-#define private public
-#define virtual
-
-/* Rename the class the name of our DSP. */
-#define mydsp %dsp_name%
-
-/*
- * FAUST class
- */
-<<includeclass>>
-
-#undef private
-#undef virtual
-#undef mydsp
-
-/*
- * ChucK glue code
- */
-static t_CKUINT %dsp_name%_offset_data = 0;
-static int g_sr = 44100;
-
-static void %dsp_name%_ctor( Chuck_Object * SELF, void * ARGS, Chuck_VM_Shred * SHRED )
-{
- // return data to be used later
- %dsp_name% *d = new %dsp_name%;
- OBJ_MEMBER_UINT(SELF, %dsp_name%_offset_data) = (t_CKUINT)d;
- d->init(g_sr);
-}
-
-static void %dsp_name%_dtor( Chuck_Object * SELF, Chuck_VM_Shred * SHRED )
-{
- delete (%dsp_name%*) OBJ_MEMBER_UINT(SELF, %dsp_name%_offset_data);
- OBJ_MEMBER_UINT(SELF, %dsp_name%_offset_data) = 0;
-}
-
-static t_CKBOOL %dsp_name%_tick( Chuck_Object * SELF, float in, float * out, Chuck_VM_Shred * SHRED )
-{
- %dsp_name% *d = (%dsp_name%*)OBJ_MEMBER_UINT(SELF, %dsp_name%_offset_data);
- float * input, * output;
- input = ∈
- output = out;
- d->compute (1, &input, &output);
- return TRUE;
-}
-
-%ctrl_cget_functions%
-
-DLL_QUERY %dsp_name%_query( Chuck_DL_Query * QUERY )
-{
- Chuck_Env * env = Chuck_Env::instance();
- Chuck_DL_Func * func = NULL;
-
- g_sr = QUERY->srate;
-
- if( !type_engine_import_ugen_begin( env, "%dsp_name%", "UGen", env->global(),
- %dsp_name%_ctor, %dsp_name%_dtor, %dsp_name%_tick, NULL ) )
- return FALSE;
-
- // add member variable
- %dsp_name%_offset_data = type_engine_import_mvar( env, "int", "@%dsp_name%_data", FALSE );
- if( %dsp_name%_offset_data == CK_INVALID_OFFSET ) goto error;
-
- %ctrl_cget_query%
-
- // end import
- if( !type_engine_import_class_end( env ) )
- return FALSE;
-
- return TRUE;
-
-error:
- // end import
- if( !type_engine_import_class_end( env ) )
- return FALSE;
-
- return FALSE;
-}