From 9dfd7ecdb822cd56e3c21a4e59869efacb6bb1b2 Mon Sep 17 00:00:00 2001 From: Harry van Haaren Date: Mon, 5 Aug 2013 13:56:38 +0100 Subject: [PATCH] -Implemented Logic class as interface to functionality --- TODO | 13 ++++++++++++- src/eventhandlerdsp.cxx | 7 ++++--- src/jack.cxx | 1 + src/jack.hxx | 3 +++ src/logic.cxx | 30 ++++++++++++++++++++++++++++++ src/logic.hxx | 6 ++++-- wscript | 2 ++ 7 files changed, 56 insertions(+), 6 deletions(-) diff --git a/TODO b/TODO index 6f3a4c7..f89bd93 100644 --- a/TODO +++ b/TODO @@ -1,5 +1,16 @@ -= Interface / Logic class for all Luppp engines actions +=== NEW + +- Update recording mechanism to request buffers when they're getting full + + +=== IN PROGRESS + + + +=== COMPLETED + +- Interface / Logic class for all Luppp engines actions Needed to give Controller classes a way to tell Luppp what to do. This class must update all controllers based on state. Essentially its like "GridLogic", but for the rest of the functionality. diff --git a/src/eventhandlerdsp.cxx b/src/eventhandlerdsp.cxx index 15f8737..fefefa2 100644 --- a/src/eventhandlerdsp.cxx +++ b/src/eventhandlerdsp.cxx @@ -13,6 +13,8 @@ #include "event.hxx" #include "eventhandler.hxx" +#include "logic.hxx" + using namespace std; extern Jack* jack; @@ -89,15 +91,14 @@ void handleDspEvents() if ( availableRead >= sizeof(EventTrackVol) ) { EventTrackVol ev; jack_ringbuffer_read( rbToDsp, (char*)&ev, sizeof(EventTrackVol) ); - jack->getTrackOutput(ev.track)->setMaster( ev.vol ); + jack->getLogic()->trackVolume( ev.track, ev.vol ); break; } } case Event::TRACK_SEND: { if ( availableRead >= sizeof(EventTrackSend) ) { EventTrackSend ev; jack_ringbuffer_read( rbToDsp, (char*)&ev, sizeof(EventTrackSend) ); - jack->getTrackOutput(ev.track)->setSend( ev.send, ev.value ); - jack->getControllerUpdater()->setTrackSend( ev.track, ev.send, ev.value ); + jack->getLogic()->trackSend( ev.track, ev.send, ev.value ); } break; } default: { diff --git a/src/jack.cxx b/src/jack.cxx index 145cdcc..6094ed4 100644 --- a/src/jack.cxx +++ b/src/jack.cxx @@ -19,6 +19,7 @@ Jack::Jack() : controllerUpdater( new ControllerUpdater() ), timeManager(), metronome( new Metronome() ), + logic( new Logic() ), gridLogic( new GridLogic() ) { // open the client diff --git a/src/jack.hxx b/src/jack.hxx index dbc5d21..3c882bc 100644 --- a/src/jack.hxx +++ b/src/jack.hxx @@ -17,6 +17,7 @@ #include #include +#include "logic.hxx" #include "config.hxx" #include "looper.hxx" #include "metronome.hxx" @@ -44,6 +45,7 @@ class Jack /// get functions for components owned by Jack Looper* getLooper(int t) {return loopers.at(t); } Metronome* getMetronome(){return metronome;} + Logic* getLogic(){return logic;} GridLogic* getGridLogic(){return gridLogic;} TrackOutput* getTrackOutput(int t){return trackOutputs.at(t);} TimeManager* getTimeManager(){return &timeManager;} @@ -67,6 +69,7 @@ class Jack Buffers buffers; TimeManager timeManager; Metronome* metronome; + Logic* logic; GridLogic* gridLogic; ControllerUpdater* controllerUpdater; diff --git a/src/logic.cxx b/src/logic.cxx index e69de29..f3ac646 100644 --- a/src/logic.cxx +++ b/src/logic.cxx @@ -0,0 +1,30 @@ + +#include "logic.hxx" + +#include "jack.hxx" +extern Jack* jack; + +Logic::Logic() +{ + +} + +void Logic::trackVolume(int t, float v) +{ + printf( "Logic trackVolume() %i, %f\n", t, v ); + jack->getTrackOutput( t )->setMaster( v ); + jack->getControllerUpdater()->volume( t, v ); +} + + +void Logic::trackRecordArm(int t, bool v) +{ + +} + + +void Logic::trackSend(int t, int send, float v) +{ + jack->getTrackOutput( t )->setSend( send, v ); + jack->getControllerUpdater()->setTrackSend( t, send, v ); +} diff --git a/src/logic.hxx b/src/logic.hxx index 1d15253..b965565 100644 --- a/src/logic.hxx +++ b/src/logic.hxx @@ -20,9 +20,11 @@ class Logic { public: - Logic() + Logic(); - void + void trackVolume(int t, float v); + void trackRecordArm(int t, bool v); + void trackSend(int t, int send, float v); }; #endif // LUPPP_LOGIC_H diff --git a/wscript b/wscript index 6cc3638..d3f1786 100644 --- a/wscript +++ b/wscript @@ -25,6 +25,8 @@ def build(bld): 'src/jack.cxx', 'src/gtrack.cxx', 'src/looper.cxx', + + 'src/logic.cxx', 'src/gridlogic.cxx', 'src/observer/time.cxx',