From 3f8cc2f926e6af7037c18f55d6ea92008a4d8031 Mon Sep 17 00:00:00 2001 From: Harry van Haaren Date: Sat, 18 May 2013 21:12:36 +0100 Subject: [PATCH] -WIP, controller APC --- src/controller/apc.cxx | 36 +++++++++++++++++++++++++ src/controller/apc.hxx | 5 ++-- src/controller/controller.hxx | 12 ++++----- src/controllerupdater.hxx | 49 +++++++++++++++++++++++++++++++++++ src/jack.cxx | 1 - src/jack.hxx | 5 ++-- src/looper.cxx | 6 +---- wscript | 1 + 8 files changed, 98 insertions(+), 17 deletions(-) create mode 100644 src/controllerupdater.hxx diff --git a/src/controller/apc.cxx b/src/controller/apc.cxx index e69de29..1f6859e 100644 --- a/src/controller/apc.cxx +++ b/src/controller/apc.cxx @@ -0,0 +1,36 @@ + +#include "../jack.hxx" + +#include + +extern Jack* jack; + +AkaiAPC::AkaiAPC() +{ + +} + +void AkaiAPC::record(int t, bool b) +{ + unsigned char data[3]; + data[0] = 144 + t; + data[1] = 48; // record LED + data[2] = 127 * b; + jack->writeApcOutput( &data[0] ); + cout << "record written to JACK" << endl; +} + +void AkaiAPC::mute(int t, bool b) +{ + +} + +void AkaiAPC::clipSelect(int t, bool b) +{ + +} + +void AkaiAPC::volume(int t, float f) +{ + +} diff --git a/src/controller/apc.hxx b/src/controller/apc.hxx index 779c85c..74d5f55 100644 --- a/src/controller/apc.hxx +++ b/src/controller/apc.hxx @@ -11,10 +11,9 @@ class AkaiAPC : public Controller AkaiAPC(); void mute(int t, bool b); - void clip(int t, bool b); - - void record(int t, bool b); + void clipSelect(int t, bool b); + virtual void record(int t, bool b); void volume(int t, float f); }; diff --git a/src/controller/controller.hxx b/src/controller/controller.hxx index f4253a8..2ec474e 100644 --- a/src/controller/controller.hxx +++ b/src/controller/controller.hxx @@ -6,15 +6,15 @@ class Controller { public: - Controller(); - virtual ~Controller(); + Controller(){}; + virtual ~Controller(){}; - virtual void mute(int t, bool b); - virtual void clip(int t, bool b); + virtual void mute(int t, bool b){}; + virtual void clipSelect(int t, bool b){}; - virtual void record(int t, bool b); + virtual void record(int t, bool b){}; - virtual void volume(int t, float f); + virtual void volume(int t, float f){}; }; #endif // LUPPP_CONTROLLER_H diff --git a/src/controllerupdater.hxx b/src/controllerupdater.hxx new file mode 100644 index 0000000..8454ce0 --- /dev/null +++ b/src/controllerupdater.hxx @@ -0,0 +1,49 @@ + +#ifndef LUPPP_CONTROLLER_UPDATER_H +#define LUPPP_CONTROLLER_UPDATER_H + +#include +#include + +#include "controller/apc.hxx" +#include "controller/controller.hxx" + +using namespace std; + +class ControllerUpdator +{ + public: + ControllerUpdator() + { + c.push_back( AkaiAPC() ); + } + + void mute(int t, bool b) + { + for(int i = 0; i < c.size(); i++) c.at(i).mute(t,b); + } + + void clipSelect(int t, bool cs) + { + for(int i = 0; i < c.size(); i++) + c.at(i).clipSelect(t,cs); + } + + void record(int t, bool r) + { + cout << "record() " << t << " " << r << endl; + for(int i = 0; i < c.size(); i++) + c.at(i).record(t,r); + } + + void volume(int t, float v) + { + for(int i = 0; i < c.size(); i++) c.at(i).volume(t,v); + } + + private: + std::vector c; +}; + +#endif // LUPPP_CONTROLLER_UPDATER_H + diff --git a/src/jack.cxx b/src/jack.cxx index 7ddaae7..c1d7df9 100644 --- a/src/jack.cxx +++ b/src/jack.cxx @@ -7,7 +7,6 @@ #include "eventhandler.hxx" - using namespace std; extern int jackSamplerate; diff --git a/src/jack.hxx b/src/jack.hxx index de823df..c7d2c4a 100644 --- a/src/jack.hxx +++ b/src/jack.hxx @@ -22,7 +22,7 @@ #include "metronome.hxx" #include "timemanager.hxx" -#include "controller/apc.hxx" +#include "controllerupdater.hxx" using namespace std; @@ -46,6 +46,7 @@ class Jack Metronome* getMetronome(){return &metronome;} TimeManager* getTimeManager(){return &timeManager;} + ControllerUpdator* getControllerUpdator(){return &controllerUpdator;} void writeApcOutput( unsigned char* data ); @@ -54,7 +55,7 @@ class Jack Metronome metronome; TimeManager timeManager; - vector controllers; + ControllerUpdator controllerUpdator; vector loopers; diff --git a/src/looper.cxx b/src/looper.cxx index 4d86702..4244a5b 100644 --- a/src/looper.cxx +++ b/src/looper.cxx @@ -80,11 +80,7 @@ void Looper::setState(State s) if (state == STATE_RECORD_QUEUED ) { numBeats = 0; - unsigned char data[3]; - data[0] = 144 + track; - data[1] = 48; // record LED - data[2] = 127; - jack->writeApcOutput( &data[0] ); + jack->getControllerUpdator()->record(track, true); } } diff --git a/wscript b/wscript index 68f8837..e7f286a 100644 --- a/wscript +++ b/wscript @@ -23,6 +23,7 @@ def build(bld): 'src/main.cxx', 'src/jack.cxx', 'src/looper.cxx', + 'src/controller/apc.cxx', 'src/eventhandlergui.cxx', 'src/eventhandlerdsp.cxx']