Allolib  1.0
C++ Components For Interactive Multimedia
al_SpeakerAdjustment.hpp
1 #ifndef AL_SPEAKERADJUSTMENT
2 #define AL_SPEAKERADJUSTMENT
3 
4 #include <vector>
5 
6 #include "al/io/al_AudioIOData.hpp"
7 #include "al/sound/al_Speaker.hpp"
8 
9 namespace al {
10 
21  public:
22  void configure(Speakers layout, double expon = 2.0);
23 
24  void processGains(AudioIOData& io);
25 
26  public:
27  std::vector<float> mGains;
28  Speakers mLayout;
29 };
30 
46  : public AudioCallback,
48  public:
49  virtual void onAudioCB(AudioIOData& io) { this->processGains(io); }
50 
51  private:
52  // Hide this function to users of this class
53  using SpeakerDistanceGainAdjustment::processGains;
54 };
55 
56 // FIXME implemement time adjustment for speaker distances
58  public:
59  // void configure(Speakers layout, uint64_t framesPerBuffer);
60 
61  void processDelays(AudioIOData& io);
62 
63  public:
64  // std::vector<float> mGains;
65  Speakers mLayout;
66 };
67 
70  public:
71  virtual void onAudioCB(AudioIOData& io) { this->processDelays(io); }
72 
73  private:
74  // Hide this function to users of this class
75  using SpeakerDistanceTimeAdjustment::processDelays;
76 };
77 
78 } // namespace al
79 
80 #endif // AL_SPEAKERADJUSTMENT
Adjust the gain of speakers based on distance.
This class is added for convenience to append it to AudioIO processing.
virtual void onAudioCB(AudioIOData &io)
Callback.
virtual void onAudioCB(AudioIOData &io)
Callback.
Definition: al_App.hpp:23
std::vector< Speaker > Speakers
A set of speakers.
Definition: al_Speaker.hpp:101