Allolib  1.0
C++ Components For Interactive Multimedia
al_SequenceServer.hpp
1 #ifndef INCLUDE_AL_SEQUENCESERVER
2 #define INCLUDE_AL_SEQUENCESERVER
3 
4 #include <string>
5 
6 #include "al/ui/al_ParameterServer.hpp"
7 #include "al/ui/al_PresetSequencer.hpp"
8 #include "al/ui/al_SequenceRecorder.hpp"
9 
10 namespace al {
11 
15  public:
27  SequenceServer(std::string oscAddress = "127.0.0.1", int oscPort = 9012);
41  ~SequenceServer();
42 
43  virtual void onMessage(osc::Message &m);
44 
45  // Special cases of objects that are handled in specific ways
46  SequenceServer &registerSequencer(PresetSequencer &sequencer);
47  SequenceServer &registerRecorder(SequenceRecorder &recorder);
48  SequenceServer &registerMessageConsumer(osc::MessageConsumer &consumer);
49 
53  void print();
54 
60  void stopServer();
61 
62  SequenceServer &operator<<(PresetSequencer &sequencer) {
63  return registerSequencer(sequencer);
64  }
65  SequenceServer &operator<<(SequenceRecorder &recorder) {
66  return registerRecorder(recorder);
67  }
68  SequenceServer &operator<<(osc::MessageConsumer &consumer) {
69  return registerMessageConsumer(consumer);
70  }
71 
72  void setAddress(std::string address);
73  std::string getAddress();
74 
75  protected:
76  // void attachPacketHandler(osc::PacketHandler *handler);
77  static void changeCallback(int value, void *sender, void *userData);
78 
79  private:
80  osc::Recv *mServer;
81  PresetSequencer *mSequencer;
82  SequenceRecorder *mRecorder;
83  // ParameterServer *mParamServer;
84  std::vector<Composition *> mCompositions;
85  // std::mutex mServerLock;
86  std::string mOSCpath;
87  std::string mOSCQueryPath;
88  // std::mutex mHandlerLock;
89  // std::vector<osc::PacketHandler *> mHandlers;
90  std::vector<osc::MessageConsumer *> mConsumers;
91 };
92 
93 } // namespace al
94 
95 #endif // INCLUDE_AL_SEQUENCESERVER
The ParameterServer class creates an OSC server to receive parameter values.
The PresetSequencer class allows triggering presets from a PresetHandler over time.
The SequenceRecorder class records preset changes in a ".sequence" file.
SequenceServer(ParameterServer &paramServer)
using this constructor reuses the existing osc::Recv server from the ParameterServer object
void print()
print prints information about the server to std::out
void stopServer()
stopServer stops the OSC server thread. Calling this function is sometimes required when this object ...
virtual void onMessage(osc::Message &m)
Called for each message contained in packet.
SequenceServer(std::string oscAddress="127.0.0.1", int oscPort=9012)
SequenceServer constructor.
Definition: al_App.hpp:23