SpatialSource.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00007
00008 #ifndef SOUND_SOURCE_H
00009 #define SOUND_SOURCE_H
00010
00011 #include "CSL_Core.h"
00012 #include "CPoint.h"
00013
00014 namespace csl {
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00028
00029 class SpatialSource : public UnitGenerator, public virtual Scalable {
00030 public:
00031 SpatialSource();
00032 SpatialSource(UnitGenerator &input, float azi = 0.0, float ele = 0.0, float dist = 1.0);
00033 virtual ~SpatialSource();
00035 virtual void setPosition(CPoint pos);
00036 virtual void setPosition(float x = 0., float y = 0., float z = 0.);
00037 virtual void setPosition(double x = 0., double y = 0., double z = 0.);
00038
00040 virtual void setPosition(char s, float azi = 0, float ele = 0, float dist = 1.0) ;
00041 virtual void setPosition(char s, double azi = 0, double ele = 0, double dist = 1.0) ;
00042 CPoint & getPosition() { return ( * mPosition); };
00043
00044 #ifdef DIRECTIONAL_SOURCES
00046 void setOrientation(float horizontalAngle, float verticalAngle);
00048 void setDirectivity(float innerConeAngle, float outerConeAngle);
00050 #endif
00051
00052 void setAzimuth(float val) { mPosition->setAzimuth(val); };
00053 void setElevation(float val) { mPosition->setElevation(val); };
00054 void setDistance(float val) { mPosition->setMagnitude(val); };
00055
00056 float azimuth() { return mPosition->theta(); };
00057 float elevation() { return mPosition->ele(); };
00058 float distance() { return mPosition->r(); };
00059
00060 CPoint *position(unsigned channelNum = 0);
00061
00063 virtual bool positionChanged() { return mPositionChanged; };
00064
00065 virtual void nextBuffer(Buffer & outputBuffer, unsigned outBufNum) throw (CException);
00066 virtual void nextBuffer(Buffer & outputBuffer) throw (CException);
00067
00068 void dump();
00069
00070 protected:
00071 CPoint *mPosition;
00072 bool mPositionChanged;
00073
00074 #ifdef DIRECTIONAL_SOURCES
00075 float mInnerCone;
00076 float mOuterCone;
00077 float mHorizontalOrientation;
00078 float mVerticalOrientation;
00079 #endif
00080
00081 };
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104 }
00105
00106 #endif