Mercurial > hg > ambi-plugin
comparison Source/Decoder.h @ 12:87dc3d84c120
Addressed the load program defaults over user settings 'feature'.
Removed isChild on objects that are added before the frame creation since a)they're always there and b) doesn't write to all displays present.
author | martinm_home <martin.morrell@eecs.qmul.ac.uk> |
---|---|
date | Thu, 27 Sep 2012 23:29:16 +0100 |
parents | 76e2e62635b4 |
children |
comparison
equal
deleted
inserted
replaced
11:76e2e62635b4 | 12:87dc3d84c120 |
---|---|
1 /* | 1 /* |
2 * Decoder.h | 2 * Decoder.h |
3 * SoundField | 3 * ClassicAmbiDec |
4 * | 4 * |
5 * Created by Martin Morrell on 14/06/2012. | 5 * Created by Martin Morrell on 14/06/2012. |
6 * Copyright 2012 Queen Mary University of London. All rights reserved. | 6 * Copyright 2012 Queen Mary University of London. All rights reserved. |
7 * | 7 * |
8 */ | 8 */ |
10 | 10 |
11 class Decoder | 11 class Decoder |
12 { | 12 { |
13 friend class MyEditor; | 13 friend class MyEditor; |
14 public: | 14 public: |
15 Decoder(); | |
16 | |
15 //Transforms & Zoom | 17 //Transforms & Zoom |
16 double Rotate; //+/-180 degrees | 18 double Rotate; //+/-180 degrees |
17 double Tilt; //+/-180 degrees | 19 double Tilt; //+/-180 degrees |
18 double Tumble; //+/-180 degrees | 20 double Tumble; //+/-180 degrees |
19 double Zoom; //+/-100 | 21 double Zoom; //+/-100 |
28 double Width; //0-90 degrees | 30 double Width; //0-90 degrees |
29 double Pattern; //0-1 Omni amount | 31 double Pattern; //0-1 Omni amount |
30 int Mode; //0 or 1 for xy or ms | 32 int Mode; //0 or 1 for xy or ms |
31 double RearVerb; //0-24dB | 33 double RearVerb; //0-24dB |
32 double HiVerb; //0-24dB | 34 double HiVerb; //0-24dB |
33 double outputL; //Left output | |
34 double outputR; //Right output | |
35 | 35 |
36 //Centre Speaker Decoding | 36 //Centre Speaker Decoding |
37 double outputC; //Centre output | |
38 double centrePattern; //Centre mic pattern | 37 double centrePattern; //Centre mic pattern |
39 double centreGain; //Centre mic gain | 38 double centreGain; //Centre mic gain |
40 | 39 |
41 //Subwoofer Signal | 40 //Subwoofer Signal |
42 double outputS; //Subwoofer output | |
43 double subGain; //Subwoofer gain | 41 double subGain; //Subwoofer gain |
44 | 42 |
45 //Surround Speaker Decoding | 43 //Surround Speaker Decoding |
46 double outputSL; //Surround Left output | |
47 double outputSR; //Surround Right output | |
48 int surMode; //Rear mics mode | 44 int surMode; //Rear mics mode |
49 double surPattern; //Rear mics pattern | 45 double surPattern; //Rear mics pattern |
50 double surWidth; //Rear mics width | 46 double surWidth; //Rear mics width |
51 double surGain; //Rear mics gain | 47 double surGain; //Rear mics gain |
52 double output[6]; //Final Output | |
53 | 48 |
54 | 49 //Filter Code |
55 | |
56 | |
57 //Filter Code for subwoofer | |
58 int Fs; //Sample Rate | 50 int Fs; //Sample Rate |
59 int Fc; //Crossover Frequency | 51 int Fc; //Crossover Frequency |
60 double bLF[3]; //b Coefficients for Lower Frequency Band | |
61 double bHF[3]; //b Coefficients for Higher Frequency Band | |
62 double a[3]; //a Coefficients | |
63 double prevInS[2]; //Previous Input LF Samples | |
64 double prevOutS[2]; //Previous Output LF Samples | |
65 double prevInw[2]; //Previous Input w Samples | |
66 double prevOutw[2]; //Previous Output w Samples | |
67 double prevInx[2]; //Previous Input x Samples | |
68 double prevOutx[2]; //Previous Output x Samples | |
69 double prevIny[2]; //Previous Input y Samples | |
70 double prevOuty[2]; //Previous Output y Samples | |
71 double prevInz[2]; //Previous Input z Samples | |
72 double prevOutz[2]; //Previous Output z Samples | |
73 | |
74 void clearFilter(); //Clears the previous filter values | 52 void clearFilter(); //Clears the previous filter values |
75 | 53 void filterCoefs(); //Calculates the filter coefficients |
76 | 54 |
77 //Overall Decoding Functions | 55 //Overall Decoding Functions |
56 double output[6]; //Final Output | |
78 int processDecoder(double &w, double &x, double &y, double &z); //Called fucntion to do the decoding | 57 int processDecoder(double &w, double &x, double &y, double &z); //Called fucntion to do the decoding |
79 | 58 |
80 | 59 |
81 | 60 |
82 //private: | 61 private: |
62 //Conversion Functions | |
83 double degRad(double angle); //Convert degreesto radians | 63 double degRad(double angle); //Convert degreesto radians |
84 double radDeg(double angle); //Convert radians to degrees | 64 double radDeg(double angle); //Convert radians to degrees |
85 | 65 |
86 //SoundField Rotations | 66 //Sound Field Rotations |
87 void rotateField(double &x, double &y); | 67 void rotateField(double &x, double &y); |
88 void tiltField(double &x, double &y); | 68 void tiltField(double &x, double &y); |
89 void tumbleField(double &x, double &y); | 69 void tumbleField(double &x, double &y); |
90 | 70 |
91 //Zoom Methods | 71 //Zoom Methods |
106 void centreMic(double &w, double &x); | 86 void centreMic(double &w, double &x); |
107 void xySurDecode(double &w, double &x, double &y, double &z); | 87 void xySurDecode(double &w, double &x, double &y, double &z); |
108 void msSurDecode(double &w, double &x, double &y, double &z); | 88 void msSurDecode(double &w, double &x, double &y, double &z); |
109 | 89 |
110 //Filter Code | 90 //Filter Code |
111 void filterCoefs(); | |
112 void filterLF(double &w); | 91 void filterLF(double &w); |
113 void filterHF(double &w, double &x, double &y, double &z); | 92 void filterHF(double &w, double &x, double &y, double &z); |
93 double bLF[3]; //b Coefficients for Lower Frequency Band | |
94 double bHF[3]; //b Coefficients for Higher Frequency Band | |
95 double a[3]; //a Coefficients | |
96 double prevInS[2]; //Previous Input LF Samples | |
97 double prevOutS[2]; //Previous Output LF Samples | |
98 double prevInw[2]; //Previous Input w Samples | |
99 double prevOutw[2]; //Previous Output w Samples | |
100 double prevInx[2]; //Previous Input x Samples | |
101 double prevOutx[2]; //Previous Output x Samples | |
102 double prevIny[2]; //Previous Input y Samples | |
103 double prevOuty[2]; //Previous Output y Samples | |
104 double prevInz[2]; //Previous Input z Samples | |
105 double prevOutz[2]; //Previous Output z Samples | |
114 | 106 |
115 //Decoder Types | 107 //Decoder Types |
116 void monoDecoder(double &w, double &x, double &y, double &z); //Decode to mono | 108 void monoDecoder(double &w, double &x, double &y, double &z); //Decode to mono, implemented but not used |
117 void stereoDecoder(double &w, double &x, double &y, double &z); //Decode to stereo | 109 void stereoDecoder(double &w, double &x, double &y, double &z); //Decode to stereo |
118 void twoOneDecoder(double &w, double &x, double &y, double &z); //Decode to stereo | 110 void twoOneDecoder(double &w, double &x, double &y, double &z); //Decode to stereo |
119 void quadDecoder(double &w, double &x, double &y, double &z); //Decode to LRCS | 111 void quadDecoder(double &w, double &x, double &y, double &z); //Decode to LRCS |
120 void fiveDecoder(double &w, double &x, double &y, double &z); //Decode to 5.0 | 112 void fiveDecoder(double &w, double &x, double &y, double &z); //Decode to 5.0 |
121 void fiveOneDecoder(double &w, double &x, double &y, double &z); //Decode to 5.1 | 113 void fiveOneDecoder(double &w, double &x, double &y, double &z); //Decode to 5.1 |
122 void heller1(double &w, double &x, double &y, double &z); | 114 void heller1(double &w, double &x, double &y, double &z); |
123 void heller2(double &w, double &x, double &y, double &z); | 115 void heller2(double &w, double &x, double &y, double &z); |
124 void craven(double &w, double &x, double &y, double &z); | 116 double outputL; //Left output |
117 double outputR; //Right output | |
118 double outputC; //Centre output | |
119 double outputS; //Subwoofer output | |
120 double outputSL; //Surround Left output | |
121 double outputSR; //Surround Right output | |
125 }; | 122 }; |