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