CSL 5.2

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

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
22 class AmbisonicPanner : public SpatialPanner {
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
26 ~AmbisonicPanner();
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:
39 AmbisonicMixer *mMixer;
40 AmbisonicDecoder *mDecoder;
41 AmbisonicRotator *mRotator;
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