Mercurial > hg > ambi-plugin
comparison Source/Decoder.h @ 0:2fa9c10568d1
Initial setup.
author | martinm_home <martin.morrell@eecs.qmul.ac.uk> |
---|---|
date | Tue, 14 Aug 2012 09:34:15 +0100 |
parents | |
children | e85bd6381a58 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:2fa9c10568d1 |
---|---|
1 /* | |
2 * Decoder.h | |
3 * SoundField | |
4 * | |
5 * Created by Martin Morrell on 14/06/2012. | |
6 * Copyright 2012 Queen Mary University of London. All rights reserved. | |
7 * | |
8 */ | |
9 | |
10 | |
11 class Decoder | |
12 { | |
13 friend class MyEditor; | |
14 public: | |
15 double Rotate; //+/-180 degrees | |
16 double Tilt; //+/-180 degrees | |
17 double Tumble; //+/-180 degrees | |
18 double Zoom; //+/-100 | |
19 int ZoomMethod; //4 positions | |
20 double Width; //0-90 degrees | |
21 double Pattern; //0-1 Omni amount | |
22 int Mode; //0 or 1 for xy or ms | |
23 double RearVerb; //0-24dB | |
24 double HiVerb; //0-24dB | |
25 | |
26 double temp; //temp for rotations | |
27 double temp2[4]; //temp for zooming | |
28 | |
29 double outputL; //Left output | |
30 double outputR; //Right output | |
31 | |
32 double outputC; //Centre output | |
33 double outputS; //Subwoofer output | |
34 | |
35 double outputSL; //Surround Left output | |
36 double outputSR; //Surround Right output | |
37 | |
38 int surMode; //Rear mics mode | |
39 double surPattern; //Rear mics pattern | |
40 double surWidth; //Rear mics width | |
41 double surGain; //Rear mics gain | |
42 | |
43 double centreOrder; //Centre mic order | |
44 double centrePattern; //Centre mic pattern | |
45 double centreGain; //Centre mic gain | |
46 | |
47 double subGain; //Subwoofer gain | |
48 | |
49 int decoderMode; //Decoder mode, set to same as number of outputs | |
50 | |
51 //Filter Code | |
52 int Fs; | |
53 int Fc; | |
54 double bLF[3]; | |
55 double bHF[3]; | |
56 double a[3]; | |
57 double prevIn[2]; | |
58 double prevOut[2]; | |
59 double prevInw[2]; | |
60 double prevOutw[2]; | |
61 double prevInx[2]; | |
62 double prevOutx[2]; | |
63 double prevIny[2]; | |
64 double prevOuty[2]; | |
65 double prevInz[2]; | |
66 double prevOutz[2]; | |
67 | |
68 void clearFilter(); //Clears the previous filter values | |
69 | |
70 | |
71 //Overall Function | |
72 void monoDecoder(double &w, double &x, double &y, double &z); //Decode to mono | |
73 void stereoDecoder(double &w, double &x, double &y, double &z); //Decode to stereo | |
74 void twoOneDecoder(double &w, double &x, double &y, double &z); //Decode to stereo | |
75 void lrcsDecoder(double &w, double &x, double &y, double &z); //Decode to LRCS | |
76 void fiveDecoder(double &w, double &x, double &y, double &z); //Decode to 5.0 | |
77 void fiveOneDecoder(double &w, double &x, double &y, double &z); //Decode to 5.1 | |
78 | |
79 | |
80 //private: | |
81 double degRad(double angle); //Convert degreesto radians | |
82 double radDeg(double angle); //Convert radians to degrees | |
83 | |
84 //SoundField Rotations | |
85 void rotateField(double &x, double &y); | |
86 void tiltField(double &x, double &y); | |
87 void tumbleField(double &x, double &y); | |
88 | |
89 //Zoom Methods | |
90 void dominanceZoom(double &w, double &x, double &y, double &z); | |
91 void pressZoom(double &w, double &x, double &y, double &z); | |
92 void pushZoom(double &w, double &x, double &y, double &z); | |
93 void focusZoom(double &w, double &x, double &y, double &z); | |
94 | |
95 //Stereo Decoders | |
96 void xyDecode(double &w, double &x, double &y, double &z); | |
97 void msDecode(double &w, double &x, double &y, double &z); | |
98 | |
99 //Reverbs | |
100 void rearVerb(double &w, double &x, double &y, double &z); | |
101 void hiVerb(double &w, double &x, double &y, double &z); | |
102 | |
103 //Surround | |
104 void centreMic(double &w, double &x); | |
105 void xySurDecode(double &w, double &x, double &y, double &z); | |
106 void msSurDecode(double &w, double &x, double &y, double &z); | |
107 | |
108 //Subwoofer | |
109 void subSignal(double &w); | |
110 | |
111 //Filter Code | |
112 void filterCoefs(); | |
113 void filterLF(); | |
114 void filterHF(double &w, double &x, double &y, double &z); | |
115 }; |