Mercurial > hg > ambi-plugin
view Source/Decoder.h @ 8:d967dd1eafe8
Code update for effect and editor.
author | martinm_home <martin.morrell@eecs.qmul.ac.uk> |
---|---|
date | Sun, 16 Sep 2012 23:25:54 +0100 |
parents | e85bd6381a58 |
children | 53f99cbc5dbd |
line wrap: on
line source
/* * Decoder.h * SoundField * * Created by Martin Morrell on 14/06/2012. * Copyright 2012 Queen Mary University of London. All rights reserved. * */ class Decoder { friend class MyEditor; public: //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, set to same as number of outputs int channelOrder; //Natural or 5.1 ordering //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 double outputL; //Left output double outputR; //Right output //Centre Speaker Decoding double outputC; //Centre output double centrePattern; //Centre mic pattern double centreGain; //Centre mic gain //Subwoofer Signal double outputS; //Subwoofer output double subGain; //Subwoofer gain //Surround Speaker Decoding double outputSL; //Surround Left output double outputSR; //Surround Right output int surMode; //Rear mics mode double surPattern; //Rear mics pattern double surWidth; //Rear mics width double surGain; //Rear mics gain double output[6]; //Final Output //Filter Code for subwoofer int Fs; //Sample Rate int Fc; //Crossover Frequency 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 void clearFilter(); //Clears the previous filter values //Overall Decoding Functions int processDecoder(double &w, double &x, double &y, double &z); //Called fucntion to do the decoding //private: double degRad(double angle); //Convert degreesto radians double radDeg(double angle); //Convert radians to degrees //SoundField 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); //Subwoofer void subSignal(double &w); //Filter Code void filterCoefs(); void filterLF(); void filterHF(double &w, double &x, double &y, double &z); //Decoder Types void monoDecoder(double &w, double &x, double &y, double &z); //Decode to mono 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 };