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 };