diff options
author | Florian Jung <flo@thinkpad.(none)> | 2011-01-06 20:16:19 +0100 |
---|---|---|
committer | Florian Jung <flo@thinkpad.(none)> | 2011-01-06 20:16:19 +0100 |
commit | e78131ccbbcb81da94e5992f788c6ea291a2050d (patch) | |
tree | ae15e6f8d77be250f168f1871c5a4de34c990abb /note_compiler/templates | |
parent | e8382521c1a35ad59efea5e8cebb915a67c0008e (diff) |
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!)
Diffstat (limited to 'note_compiler/templates')
-rw-r--r-- | note_compiler/templates/head.1 | 16 | ||||
-rw-r--r-- | note_compiler/templates/interface.1 | 19 |
2 files changed, 34 insertions, 1 deletions
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 <jack/jack.h> #include <cmath> +#include <string> -#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; +} + |