From e78131ccbbcb81da94e5992f788c6ea291a2050d Mon Sep 17 00:00:00 2001 From: Florian Jung Date: Thu, 6 Jan 2011 20:16:19 +0100 Subject: The synthesizer can now load the compiled notes There are still issues: - filtertest.prog.so: output_note-message which is not true - huge size of the .so (48K are too much!) --- note_compiler/templates/head.1 | 16 +++++++++++++++- note_compiler/templates/interface.1 | 19 +++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 note_compiler/templates/interface.1 (limited to 'note_compiler/templates') diff --git a/note_compiler/templates/head.1 b/note_compiler/templates/head.1 index 3d9e903..af3c227 100644 --- a/note_compiler/templates/head.1 +++ b/note_compiler/templates/head.1 @@ -1,17 +1,29 @@ #include #include +#include -#include "globals.h" #include "defines.h" #include "programs.h" #include "envelope.h" #include "fixed.h" #include "filter.h" #include "note_skel.h" +#include "util.h" using namespace std; +int filter_update_frames=0; +int samp_rate=0; +fixed_t** wave=NULL; +fixed_t** curr_lfo=NULL; + +typedef void output_note_func_t(string s); +typedef string IntToStr_func_t(int i); + +output_note_func_t* output_note=NULL; +IntToStr_func_t* IntToStr=NULL; + class Note : public NoteSkel { public: @@ -25,6 +37,8 @@ class Note : public NoteSkel bool still_active(); void set_param(const parameter_t &p, fixed_t v); + void destroy(); + private: void do_ksl(); void do_ksr(); diff --git a/note_compiler/templates/interface.1 b/note_compiler/templates/interface.1 new file mode 100644 index 0000000..cacc175 --- /dev/null +++ b/note_compiler/templates/interface.1 @@ -0,0 +1,19 @@ +extern "C" NoteSkel* create_note(int n, float v,program_t &prg, jack_nframes_t pf, fixed_t pb, int prg_no) +{ + if (wave==NULL) + throw string("FATAL: trying to create a new note from a shared object without initalizing\n" + " the object first! this should /never/ happen, please contact the developer"); + + return new Note(n,v,prg,pf,pb,prg_no); +} + +extern "C" void init_vars(int sr, int fupfr, fixed_t **w, fixed_t **clfo, output_note_func_t* out_n, IntToStr_func_t* its) +{ + samp_rate=sr; + filter_update_frames=fupfr; + wave=w; + curr_lfo=clfo; + IntToStr=its; + output_note=out_n; +} + -- cgit v1.2.3