1 #ifndef DWGS_H 2 #define DWGS_H 3 #include "filter.h" 4 #include "SC_PlugIn.h" 5 extern InterfaceTable *ft; 6 extern World * gWorld; 7 //#include "DWG.hpp" 8 #include "../DWGUGens/dwglib/DWG.hpp" 9 10 class dwg_node { 11 public: 12 dwg_node(float z); 13 float z; 14 float load; 15 float a[2]; new(size_t sz)16 void* operator new(size_t sz){ 17 return RTAlloc(gWorld, sizeof(dwg_node)); 18 } delete(void * pObject)19 void operator delete(void* pObject) { 20 RTFree(gWorld, (dwg_node*)pObject); 21 } 22 }; 23 24 class dwgs; 25 26 class dwg { 27 public: 28 dwg(float z, int del1, int del2, int commute, dwgs *parent); 29 ~dwg(); new(size_t sz)30 void* operator new(size_t sz){ 31 return RTAlloc(gWorld, sizeof(dwg)); 32 } delete(void * pObject)33 void operator delete(void* pObject) { 34 RTFree(gWorld, (dwg*)pObject); 35 } 36 void init(); 37 void update(); 38 void dodelay(); 39 void doload(); 40 41 void connectLeft(dwg_node *n); 42 void connectRight(dwg_node *n); 43 void connectLeft(dwg_node *n, int polarity); 44 void connectRight(dwg_node *n, int polarity); 45 46 int del1; 47 int del2; 48 int nl; 49 int nr; 50 int pl[2]; 51 int pr[2]; 52 dwg_node *cl[2]; 53 dwg_node *cr[2]; 54 dwg_node *l, *r; 55 float loadl, loadr; 56 float al[2]; 57 float ar[2]; 58 float alphalthis; 59 float alpharthis; 60 float alphal[2]; 61 float alphar[2]; 62 63 Delay d[2]; 64 dwgs *parent; 65 int commute; 66 }; 67 68 class dwgs { 69 public: 70 dwgs(float f, float Fs, float inpos, float c1, float c3, float B, float Z, float Zb, float Zh,Unit *unit); 71 ~dwgs(); new(size_t sz)72 void* operator new(size_t sz){ 73 return RTAlloc(gWorld, sizeof(dwgs)); 74 } delete(void * pObject)75 void operator delete(void* pObject) { 76 RTFree(gWorld, (dwgs*)pObject); 77 } 78 float input_velocity(); 79 float go_hammer(float load); 80 float go_soundboard(float load); 81 82 ThirianT<2> dispersion[4]; 83 FilterC1C3 lowpass; 84 //Filter fracdelay; 85 //Thirian *fracdelay2; 86 LagrangeT<1024> fracdelay3; 87 int M; 88 dwg *d[4]; 89 }; 90 91 #endif 92