00001 // 00002 // AmbisonicPanner.h -- Ambisonic effects and panners. 00003 // See the copyright notice and acknowledgment of authors in the file COPYRIGHT 00004 // Higher Order Ambisonic classes written by Jorge Castellanos, Graham Wakefield, Florian Hollerweger, 2005 00005 // 00006 00007 #ifndef CSL_AMBISONIC_PANNER_H 00008 #define CSL_AMBISONIC_PANNER_H 00009 00010 #include "CSL_Core.h" 00011 #include "SpatialPanner.h" 00012 #include "Ambisonic.h" 00013 #include "AmbisonicUtilities.h" 00014 #include "SpeakerLayout.h" 00015 00016 namespace csl { 00017 00021 00022 class AmbisonicPanner : public SpatialPanner { 00023 public: 00024 AmbisonicPanner(unsigned order = 1, SpeakerLayout *layout = SpeakerLayout::defaultSpeakerLayout()); // Default constructor 00025 AmbisonicPanner(unsigned hOrder, unsigned vOrder, SpeakerLayout *layout = SpeakerLayout::defaultSpeakerLayout()); // Default constructor 00026 ~AmbisonicPanner(); 00027 00028 virtual void addSource(SpatialSource &s); 00029 virtual void removeSource(SpatialSource &s); 00030 00031 void rotate(float amount); // AN ANGLE 00032 00033 virtual void nextBuffer(Buffer &outputBuffer, unsigned outBufNum) throw (CException); 00034 00035 void dump() { }; 00036 00037 protected: 00038 AmbisonicMixer *mMixer; 00039 AmbisonicDecoder *mDecoder; 00040 AmbisonicRotator *mRotator; 00041 // void initialize(); 00042 00043 virtual void *cache(); 00044 00045 // virtual void speakerLayoutChanged(); ///< called when the speaker layout changes, so panners update precalculated data 00046 00047 }; 00048 00049 } // end namespace 00050 00051 #endif
1.5.8