Mercurial > hg > ambi-plugin
view 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 |
line wrap: on
line source
/* * Decoder.h * ClassicAmbiDec * * Created by Martin Morrell on 14/06/2012. * Copyright 2012 Queen Mary University of London. All rights reserved. * */ class Decoder { friend class MyEditor; public: Decoder(); //Transforms & Zoom double Rotate; //+/-180 degrees double Tilt; //+/-180 degrees double Tumble; //+/-180 degrees double Zoom; //+/-100 int ZoomMethod; //4 positions //Decoder Speaker Layout int decoderMode; //Decoder mode int channelOrder; //Natural or 5.1 ordering int mode5x; //Hidden mode for 5.x decoders accessed by programs //Front Stereo Speaker Decoding & Reverb double Width; //0-90 degrees double Pattern; //0-1 Omni amount int Mode; //0 or 1 for xy or ms double RearVerb; //0-24dB double HiVerb; //0-24dB //Centre Speaker Decoding double centrePattern; //Centre mic pattern double centreGain; //Centre mic gain //Subwoofer Signal double subGain; //Subwoofer gain //Surround Speaker Decoding int surMode; //Rear mics mode double surPattern; //Rear mics pattern double surWidth; //Rear mics width double surGain; //Rear mics gain //Filter Code int Fs; //Sample Rate int Fc; //Crossover Frequency void clearFilter(); //Clears the previous filter values void filterCoefs(); //Calculates the filter coefficients //Overall Decoding Functions double output[6]; //Final Output int processDecoder(double &w, double &x, double &y, double &z); //Called fucntion to do the decoding private: //Conversion Functions double degRad(double angle); //Convert degreesto radians double radDeg(double angle); //Convert radians to degrees //Sound Field Rotations void rotateField(double &x, double &y); void tiltField(double &x, double &y); void tumbleField(double &x, double &y); //Zoom Methods void dominanceZoom(double &w, double &x, double &y, double &z); void pressZoom(double &w, double &x, double &y, double &z); void pushZoom(double &w, double &x, double &y, double &z); void focusZoom(double &w, double &x, double &y, double &z); //Stereo Decoders void xyDecode(double &w, double &x, double &y, double &z); void msDecode(double &w, double &x, double &y, double &z); //Reverbs void rearVerb(double &w, double &x, double &y, double &z); void hiVerb(double &w, double &x, double &y, double &z); //Surround void centreMic(double &w, double &x); void xySurDecode(double &w, double &x, double &y, double &z); void msSurDecode(double &w, double &x, double &y, double &z); //Filter Code void filterLF(double &w); void filterHF(double &w, double &x, double &y, double &z); double bLF[3]; //b Coefficients for Lower Frequency Band double bHF[3]; //b Coefficients for Higher Frequency Band double a[3]; //a Coefficients double prevInS[2]; //Previous Input LF Samples double prevOutS[2]; //Previous Output LF Samples double prevInw[2]; //Previous Input w Samples double prevOutw[2]; //Previous Output w Samples double prevInx[2]; //Previous Input x Samples double prevOutx[2]; //Previous Output x Samples double prevIny[2]; //Previous Input y Samples double prevOuty[2]; //Previous Output y Samples double prevInz[2]; //Previous Input z Samples double prevOutz[2]; //Previous Output z Samples //Decoder Types void monoDecoder(double &w, double &x, double &y, double &z); //Decode to mono, implemented but not used void stereoDecoder(double &w, double &x, double &y, double &z); //Decode to stereo void twoOneDecoder(double &w, double &x, double &y, double &z); //Decode to stereo void quadDecoder(double &w, double &x, double &y, double &z); //Decode to LRCS void fiveDecoder(double &w, double &x, double &y, double &z); //Decode to 5.0 void fiveOneDecoder(double &w, double &x, double &y, double &z); //Decode to 5.1 void heller1(double &w, double &x, double &y, double &z); void heller2(double &w, double &x, double &y, double &z); double outputL; //Left output double outputR; //Right output double outputC; //Centre output double outputS; //Subwoofer output double outputSL; //Surround Left output double outputSR; //Surround Right output };