Loopp/src/controllerupdater.hxx
2013-11-10 18:12:28 +00:00

70 lines
1.7 KiB
C++

#ifndef LUPPP_CONTROLLER_UPDATER_H
#define LUPPP_CONTROLLER_UPDATER_H
#include <vector>
#include <iostream>
#include "controller/controller.hxx"
#include "gridlogic.hxx"
using namespace std;
/** ControllerUpdater
* Updates each registered controller when a certain event occurs. All output
* devices (MIDI controllers, GUI, OSC-UI's etc) are registered in order to
* stay up-to-date.
*
* This class does no scheduling, it passes the events to the Controllers
* immidiatly.
*
* The Logic class is the opposite of this: it takes input and Luppp processes
* it, pushing the relevant updates in state through ControllerUpdater to each
* registered device.
**/
class ControllerUpdater
{
public:
ControllerUpdater();
/// add a Controller* to Controllers that recieve updates
void registerController( Controller* controller );
/// removes a controller by ID
void removeController( int controllerID );
/// returns a Controller* from ID
Controller* getController(int id);
void reset();
void mute(int t, bool b);
void masterVolume(float v);
void masterInputToActive(int to, bool v);
void masterInputTo( int inputTo, float vol );
void masterInputVol( float vol );
void setTrackSceneProgress(int t, int s, float p);
void setTrackSendActive(int t, int send, bool v);
void setTrackSend(int t, int send, float v);
void launchScene( int scene );
void setSceneState(int t, int clip, GridLogic::State s);
void recordArm(int t, bool r);
void volume(int t, float v);
void tapTempo(bool b);
void metronomeEnable(bool b);
private:
std::vector<Controller*> c;
};
#endif // LUPPP_CONTROLLER_UPDATER_H