Allolib  1.0
C++ Components For Interactive Multimedia
al_AudioDomain.hpp
1 #ifndef AUDIODOMAIN_H
2 #define AUDIODOMAIN_H
3 
4 #include <cassert>
5 #include <functional>
6 #include <iostream>
7 #include <memory>
8 #include <stack>
9 #include <vector>
10 
11 #include "Gamma/Domain.h"
12 #include "al/io/al_AudioIO.hpp"
13 #include "al_ComputationDomain.hpp"
14 
15 namespace al {
16 
22 public:
23  AudioDomain();
24  virtual ~AudioDomain() {}
25 
26  // Domain management functions
27  bool init(ComputationDomain *parent = nullptr) override;
28  bool start() override;
29  bool stop() override;
30  bool cleanup(ComputationDomain *parent = nullptr) override;
31 
32  AudioIO &audioIO() { return mAudioIO; }
33  const AudioIO &audioIO() const { return mAudioIO; }
34 
35  void configure(double audioRate = 44100, int audioBlockSize = 512,
36  int audioOutputs = -1, int audioInputs = -1);
37 
38  void configure(AudioDevice &dev, double audioRate, int audioBlockSize,
39  int audioOutputs, int audioInputs);
40 
41  std::function<void(AudioIOData &io)> onSound = [](AudioIOData &) {};
42 
43 protected:
44  static void AppAudioCB(AudioIOData &io);
45 
46 private:
47  Parameter mGainParameter{"gain", "", 1.0, 0.0, 2.0};
48  AudioIO mAudioIO;
49 };
50 
51 class GammaAudioDomain : public AudioDomain, public gam::Domain {
52 public:
53  bool start() override;
54 };
55 
56 } // namespace al
57 
58 #endif // AUDIODOMAIN_H
AsynchronousDomain class.
bool init(ComputationDomain *parent=nullptr) override
initialize
bool stop() override
stop the asyncrhonous execution of the domain
bool cleanup(ComputationDomain *parent=nullptr) override
cleanup
bool start() override
start the asyncrhonous execution of the domain
ComputationDomain class.
bool start() override
start the asyncrhonous execution of the domain
Definition: al_App.hpp:23