VVSDK  1.0
The VVAmbisonic Library
AVVTetraInternal.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2013 David McGriffy, all rights reserved
3  */
4 
5 #ifndef __AVVTETRAINTERNAL_H_INCLUDED
6 #define __AVVTETRAINTERNAL_H_INCLUDED
7 
8 #include <string>
9 
10 #include "FilterMatrix.h"
11 #include "AmbiFormat.h"
12 
13 
14 #define MAXCAP (4)
15 #define MAXOUT (4)
16 #define NUMPROGRAMS (8)
17 #define MAXFILTER (8)
18 #define MAXVIEW (3)
19 #define MAXFREQ (20000.0)
20 #define LOWFREQ (250.0)
21 #define MINFREQ (20.0)
22 #define FREQRATIO (1.0 / log10(MAXFREQ / MINFREQ))
23 #define LOWRATIO (1.0 / log10(LOWFREQ / MINFREQ))
24 
25 #define MAXNAMESIZE (24)
26 
28 {
34 };
35 
36 short inline parm2AddressMode(float x)
37 {
38  return (short)(x * kAddressNumModes);
39 }
40 
41 float inline addressMode2parm(short n)
42 {
43  return ((float)n / kAddressNumModes);
44 }
45 
46 using namespace std;
47 
48 // parameters
49 enum
50 {
51  // master
58 };
59 
60 class AVVTetraInternal;
61 
62 class AVVTetraProgram
63 {
64 friend class AVVTetraInternal;
65 public:
68 
69 private:
70  float fAmbiFormat;
71  float fCurCoincidenceFilter;
72  float fLocked;
73  float fCalibration;
74 
75  float fAddressMode;
76  char name[MAXNAMESIZE];
77 };
78 
79 class AVVTetraInternal
80 {
81 public:
82  AVVTetraInternal(long sampleRate, const char *calibrationPath);
84 
85  void reloadCalibrations(const char *calibrationPath);
86  void getCalibrationPath(char* calibrationPath);
87  int setProgram(int program); // returns program, or -1 if out of bounds
88  int getCurProgram();
89  int setProgram(string programName); // returns program, or -1 if not found
90  string getCurProgramName();
91  int getNumPrograms();
92  string getProgramName(int program);
93  bool canProcess();
94  void setSampleRate(long sampleRate);
95  void processReplacing(float **inputs, float **outputs, int sampleFrames);
96  void generateImpulses(int blockSize, float** output);
97 
98  virtual void setParameter(int index, float value);
99  virtual float getParameter (int index);
100 
101  float getVu();
102  float getVuPre(int index);
103  float getVuPost(int index);
104 
105  void setAddressMode(short mode);
106  short getAddressMode();
107  void setOutputFormat(int fmt);
108  int getOutputFormat();
109 
110 
111 private:
112  void SetCoincidenceFilter(short newCoincidenceFilter);
113  short GetCoincidenceFilter();
114  bool CalibrationsDirectoryExists();
115  void ReadCalibrations();
116 
117  void initPath();
118  void initFilters();
119  void initDynamicFilters();
120  void clearBuffers();
121  void initPrograms();
122 
123  long sampleRate;
124  char calPath[1024];
125  char calName[24];
126 
127  AVVTetraProgram *programs;
128  int numPrograms;
129  int curProgram;
130  float *buffer;
131 
132  // in internal type
133  short m_nOutFormat;
134  short m_nCurCoincidenceFilter;
135  bool m_bLocked;
136  bool m_bCalibration;
137 
138  short m_nAddressMode;
139 
140  // in vst (float 0-1) type
141  float fAmbiFormat;
142  float fCurCoincidenceFilter;
143  float fLocked;
144  float fCalibration;
145 
146  float fABMatrixEnabled;
147  float fAddressMode;
148 
149  long delay;
150  long size;
151  long inPos;
152  long outPos;
153 
154  float vu, vuSave, vuPre[MAXCAP], vuPreSave[MAXCAP], vuPost[MAXOUT], vuPostSave[MAXOUT];
155  long vuCount, vuMicCountPre[MAXCAP], vuMicCountPost[MAXOUT];
156 
157  // format changer
158  AmbiFormat ambFormat;
159 
160  // filters
161  bool skipDynamicFilters;
162 
163  // coincidence compensation filters
164  short m_nNumCoincidenceFilter;
165  CFilter *m_filtCoincidence[MAXFILTER][MAXCAP];
166 };
167 
168 #endif
EXPORTED_FUNCTION void getProgramName(int program, char *programName)
Definition: VVTetraC.cpp:76
#define MAXOUT
Definition: AVVTetraInternal.h:15
EXPORTED_FUNCTION short getAddressMode()
Definition: VVTetraC.cpp:88
EXPORTED_FUNCTION int getCurProgram()
Definition: VVTetraC.cpp:69
Definition: AVVTetraInternal.h:34
EXPORTED_FUNCTION void reloadCalibrations(const char *calibrationPath)
Definition: VVTetraC.cpp:30
short parm2AddressMode(float x)
Definition: AVVTetraInternal.h:40
Definition: AVVTetraInternal.h:63
Definition: Filter.h:20
Definition: AVVTetraInternal.h:61
~AVVTetraProgram()
Definition: AVVTetraInternal.h:67
AddressModes
Definition: AVVTetraInternal.h:31
Definition: AVVTetraInternal.h:68
Definition: AVVTetraInternal.h:94
Definition: AVVTetraInternal.h:128
Definition: AVVTetraInternal.h:37
EXPORTED_FUNCTION void setSampleRate(long sampleRate)
Definition: VVTetraC.cpp:102
EXPORTED_FUNCTION void getCurProgramName(char *programName)
Definition: VVTetraC.cpp:56
#define MAXNAMESIZE
Definition: AVVTetraInternal.h:25
Definition: AVVTetraInternal.h:36
float addressMode2parm(short n)
Definition: AVVTetraInternal.h:45
Definition: AVVTetraInternal.h:35
Definition: AVVTetraInternal.h:89
#define MAXCAP
Definition: AVVTetraInternal.h:14
Definition: AmbiFormat.h:11
Definition: AVVTetraInternal.h:33
Definition: AVVTetraInternal.h:56
EXPORTED_FUNCTION int getNumPrograms()
Definition: VVTetraC.cpp:62
EXPORTED_FUNCTION int setProgram(int program)
Definition: VVTetraC.cpp:42
EXPORTED_FUNCTION bool canProcess()
Definition: VVTetraC.cpp:95
EXPORTED_FUNCTION void getCalibrationPath(char *calibrationPath)
Definition: VVTetraC.cpp:36
EXPORTED_FUNCTION void setAddressMode(short mode)
Definition: VVTetraC.cpp:82
#define MAXFILTER
Definition: AVVTetraInternal.h:17
Definition: AVVTetraInternal.h:60