-Implemented Logic class as interface to functionality

This commit is contained in:
Harry van Haaren 2013-08-05 13:56:38 +01:00
parent 0582b86d2e
commit 9dfd7ecdb8
7 changed files with 56 additions and 6 deletions

13
TODO
View file

@ -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.

View file

@ -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:
{

View file

@ -19,6 +19,7 @@ Jack::Jack() :
controllerUpdater( new ControllerUpdater() ),
timeManager(),
metronome( new Metronome() ),
logic( new Logic() ),
gridLogic( new GridLogic() )
{
// open the client

View file

@ -17,6 +17,7 @@
#include <jack/midiport.h>
#include <jack/transport.h>
#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;

View file

@ -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 );
}

View file

@ -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

View file

@ -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',