-Updated Controller, ControllerUpdater and TimeObserver for auto-registering.

This commit is contained in:
Harry van Haaren 2013-08-22 13:53:50 +01:00
parent 97aff38375
commit d31cf4012f
8 changed files with 37 additions and 13 deletions

View file

@ -13,7 +13,6 @@ AkaiAPC::AkaiAPC() :
Controller(),
MidiObserver("apc")
{
}
void AkaiAPC::recordArm(int t, bool enabled)

View file

@ -0,0 +1,14 @@
#include "controller.hxx"
#include <iostream>
#include "../jack.hxx"
#include "../controllerupdater.hxx"
extern Jack* jack;
Controller::Controller()
{
jack->getControllerUpdater()->registerController( this );
}

View file

@ -10,7 +10,9 @@
class Controller
{
public:
Controller(){};
/// registers subclass instance with ControllerUpdater.
Controller();
virtual ~Controller(){};
/// name string to show in UI

View file

@ -13,7 +13,6 @@ extern Jack* jack;
LupppGUI::LupppGUI() :
Controller()
{
}
void LupppGUI::masterVolume(float f)

View file

@ -28,12 +28,10 @@ using namespace std;
class ControllerUpdater
{
public:
ControllerUpdater() {}
ControllerUpdater(){}
void registerController( Controller* controller )
{
std::cout << "ControllerUpdater registering " << controller->getName()
<< endl;
c.push_back( controller );
}

View file

@ -13,17 +13,28 @@ using namespace std;
int AudioBuffer::privateID = 0;
// static pointer from main.
extern Jack* jack;
extern int jackSamplerate;
Jack::Jack() :
client( jack_client_open ( "Luppp", JackNullOption , 0 , 0 ) ),
timeManager(),
metronome( new Metronome() ),
logic( new Logic() ),
gridLogic( new GridLogic() ),
controllerUpdater( new ControllerUpdater() ),
clientActive(false)
{
jack = this;
// construct Observer classes here, not in the initializer list as the Jack*
// will be 0x0 until then.
metronome = new Metronome();
logic = new Logic();
gridLogic = new GridLogic();
Controller* c = new AkaiAPC();
Controller* g = new LupppGUI();
buffers.nframes = jack_get_buffer_size( client );
buffers.samplerate = jack_get_sample_rate( client );
@ -116,15 +127,17 @@ Jack::Jack() :
void Jack::activate()
{
/*
// move to "settings" class or so
Controller* c = new AkaiAPC();
controllerUpdater->registerController( c );
Controller* g = new LupppGUI();
controllerUpdater->registerController( g );
*/
// move to time class, get instantiate order right
jack->getTimeManager()->registerObserver( metronome );
jack->getTimeManager()->registerObserver( gridLogic );
//jack->getTimeManager()->registerObserver( metronome );
//jack->getTimeManager()->registerObserver( gridLogic );
jack_activate( client );
jack_transport_start(client);

View file

@ -37,7 +37,6 @@ class Jack
int getBuffersize();
int getSamplerate();
/// get functions for components owned by Jack
Looper* getLooper(int t) {return loopers.at(t); }
Metronome* getMetronome(){return metronome;}

View file

@ -6,6 +6,6 @@ extern Jack* jack;
TimeObserver::TimeObserver()
{
//jack->getTimeManager()->registerObserver( this );
jack->getTimeManager()->registerObserver( this );
}