CSL  5.2
AmbisonicPanner.h
Go to the documentation of this file.
1 //
2 // AmbisonicPanner.h -- Ambisonic effects and panners.
3 // See the copyright notice and acknowledgment of authors in the file COPYRIGHT
4 // Higher Order Ambisonic classes written by Jorge Castellanos, Graham Wakefield, Florian Hollerweger, 2005
5 //
6 
7 #ifndef CSL_AMBISONIC_PANNER_H
8 #define CSL_AMBISONIC_PANNER_H
9 
10 #include "CSL_Core.h"
11 #include "SpatialPanner.h"
12 #include "Ambisonic.h"
13 #include "AmbisonicUtilities.h"
14 #include "SpeakerLayout.h"
15 
16 namespace csl {
17 
18 /// Ambisonic Panner
19 /// Wraps around the different ambisonic classes, providing a single interface for encoding, manipulating and decoding (i.e. panning)
20 /// multiple UnitGenerators.
21 
23 public:
24  AmbisonicPanner(unsigned order = 1, SpeakerLayout *layout = SpeakerLayout::defaultSpeakerLayout()); // Default constructor
25  AmbisonicPanner(unsigned hOrder, unsigned vOrder, SpeakerLayout *layout = SpeakerLayout::defaultSpeakerLayout()); // Default constructor
27 
28  void addSource(SpatialSource &s); ///< Implement Panner's addSource, inserting an Encoder to each source.
29  void removeSource(SpatialSource &s); ///< Remove a sound source
30 
31  void rotate(float amount); // AN ANGLE
32 
33  /// fill the buffer with the next buffer_length of values
34  void nextBuffer(Buffer &outputBuffer /*, unsigned outBufNum */) throw (CException);
35 
36  void dump() { }; ///< Print info about this instance
37 
38 protected:
42 
43 // void initialize();
44 // virtual void speakerLayoutChanged(); ///< called when the speaker layout changes, so panners update precalculated data
45 
46 };
47 
48 } // end namespace
49 
50 #endif