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