X-Git-Url: https://scm.cri.minesparis.psl.eu/git/Faustine.git/blobdiff_plain/1059e1cc0c2ecfa237406949aa26155b6a5b9154..66f23d4fabf89ad09adbd4dfc15ac6b5b2b7da83:/interpreter/preprocessor/faust-0.9.47mr3/tools/faust2ck-1.0/src/chuck_faust.template.h diff --git a/interpreter/preprocessor/faust-0.9.47mr3/tools/faust2ck-1.0/src/chuck_faust.template.h b/interpreter/preprocessor/faust-0.9.47mr3/tools/faust2ck-1.0/src/chuck_faust.template.h new file mode 100644 index 0000000..4239560 --- /dev/null +++ b/interpreter/preprocessor/faust-0.9.47mr3/tools/faust2ck-1.0/src/chuck_faust.template.h @@ -0,0 +1,126 @@ +"", +"#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", +" */", +"<>", +"", +"/*", +" * 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", +" */", +"<>", +"", +"#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;", +"}",