DistanceSimulator.h

Go to the documentation of this file.
00001 /*
00002  *  DistanceSimulator.h
00003  *  CSL
00004  *
00005  *  Created by Bebelutz on 6/21/06.
00006  *  Copyright 2006 JorgeCastellanos. All rights reserved.
00007  *
00008  */
00009 
00010 #ifndef DISTANCE_SIMULATOR_H
00011 #define DISTANCE_SIMULATOR_H
00012 #include "SpatialSource.h"
00013 
00014 #include "CSL_Core.h"
00015 #include "CPoint.h"
00016 
00017 namespace csl {
00018 
00019 class IntensityAttenuationCue;
00020 class AirAbsorptionCue;
00021 
00026 class DistanceSimulator : public SpatSource {
00027 public:
00028     DistanceSimulator(UnitGenerator &source); // A UGen without position information. In this case, the distance simulator is the spatial source.
00029     DistanceSimulator(SpatSource &source);
00030     ~DistanceSimulator();
00031 
00032     virtual void nextBuffer(Buffer & outputBuffer, unsigned outBufNum) throw (CException);
00033 
00034 protected:
00035     // SoundSource ... it refers to its input UGen, but with the knowledge of its position within a space.
00036 //  SpatSource *mSource;        // list of spatial inputs
00037     IntensityAttenuationCue *mIntensityCue;
00038     AirAbsorptionCue *mAirAbsorptionCue;
00039 
00040 }; 
00041 
00046 class DistanceCue {
00047 public:
00048     DistanceCue() {};
00049     virtual ~DistanceCue() {};
00050     
00051     virtual void compute(float distance) = 0;
00052     virtual void process(Buffer &inputBuffer) = 0;
00053 
00054 }; 
00055 
00058 class IntensityAttenuationCue : public DistanceCue {
00059 public:
00060     IntensityAttenuationCue() {};
00061     virtual ~IntensityAttenuationCue() {};
00062 
00063     virtual void compute(float distance);   
00064     virtual void process(Buffer &aBuffer);
00065     
00066 protected:  
00067     float mGain;
00068 
00069 };
00070 
00072 class AirAbsorptionCue : public DistanceCue {
00073 public:
00074     AirAbsorptionCue();
00075     virtual ~AirAbsorptionCue();
00076 
00077     virtual void compute(float distance); 
00078     virtual void process(Buffer &aBuffer); 
00079     
00080 protected:  
00081     float mBCoeff;
00082     float mACoeff[2];
00083     float mPrevOutput;
00084     float mPrevInput;
00085 
00086 };
00087 
00088 //class AirAbsorptionCue : public DistanceCue {
00089 //public:
00090 //  AirAbsorptionCue();
00091 //  virtual ~AirAbsorptionCue();
00092 //
00093 //  virtual void compute(float distance);   
00094 //  virtual void process(Buffer &aBuffer);
00095 //  
00096 //protected:    
00097 //  float mBCoeff[3];
00098 //  float mACoeff[3];
00099 //  float mPrevOutputs[3];
00100 //  float mPrevInputs[3];
00101 //
00102 //};
00103 
00104 
00105 }
00106 
00107 #endif

Generated on Fri Apr 6 20:18:13 2007 for CSL by  doxygen 1.4.5-20051010