1 #ifndef INCLUDE_AL_PANNING_VBAP
2 #define INCLUDE_AL_PANNING_VBAP
49 #include "al/math/al_Vec.hpp"
50 #include "al/sound/al_Spatializer.hpp"
51 #include "al/sound/al_Speaker.hpp"
52 #include "al/spatial/al_DistAtten.hpp"
53 #include "al/spatial/al_Pose.hpp"
55 #define MAX_NUM_VBAP_TRIPLETS 512
58 #define MIN_VOLUME_TO_LENGTH_RATIO 0.000001
59 #define MIN_LENGTH 0.00001
76 unsigned int speakerChan[3];
81 bool loadVectors(
const std::vector<Speaker>& spkrs);
97 void setOptions(VbapOptions options) { mOptions = options; }
113 std::vector<unsigned int> assignedOutputs);
118 void set3D(
bool is3D) { mIs3D = is3D; }
122 const unsigned int& frameIndex)
override;
124 const float* samples,
127 virtual void print(std::ostream& stream = std::cout)
override;
133 std::vector<SpeakerTriple> triplets()
const;
136 std::vector<SpeakerTriple> mTriplets;
137 std::map<unsigned int, std::vector<unsigned int> > mPhantomChannels;
140 VbapOptions mOptions;
145 void findSpeakerPairs(
const Speakers& spkrs);
148 void findSpeakerTriplets(
const Speakers& spkrs);
A local coordinate frame.
virtual void numFrames(unsigned int v)
Set number of frames.
void makeTriple(int s1, int s2, int s3=-1)
Manually add a triple from indeces to speakers.
void makePhantomChannel(int channelIndex, std::vector< unsigned int > assignedOutputs)
Make an existing channel a phantom channel.
virtual void print(std::ostream &stream=std::cout) override
Print out information about spatializer.
virtual void renderSample(AudioIOData &io, const Pose &reldir, const float &sample, const unsigned int &frameIndex) override
Render audio sample in position.
virtual void renderBuffer(AudioIOData &io, const Pose &reldir, const float *samples, const unsigned int &numFrames) override
Render audio buffer in position.
virtual void compile() override
Vbap(const Speakers &sl, bool is3D=false)
std::vector< Speaker > Speakers
A set of speakers.