mirror of
https://github.com/vale981/openAV-Luppp
synced 2025-03-05 09:01:39 -05:00
-Updated Controller and ControllerUpdater classes
This commit is contained in:
parent
32593e7eac
commit
60727b10be
8 changed files with 47 additions and 17 deletions
|
@ -5,7 +5,9 @@
|
|||
|
||||
extern Jack* jack;
|
||||
|
||||
AkaiAPC::AkaiAPC()
|
||||
AkaiAPC::AkaiAPC() :
|
||||
Controller(),
|
||||
MidiObserver("apc")
|
||||
{
|
||||
|
||||
}
|
||||
|
|
|
@ -12,6 +12,8 @@ class AkaiAPC : public Controller, public MidiObserver
|
|||
public:
|
||||
AkaiAPC();
|
||||
|
||||
std::string getName(){return "Akai APC";}
|
||||
|
||||
void mute(int t, bool b);
|
||||
void volume(int t, float f);
|
||||
void recordArm(int t, bool b);
|
||||
|
|
|
@ -3,17 +3,11 @@
|
|||
#ifndef LUPPP_CONTROLLER_H
|
||||
#define LUPPP_CONTROLLER_H
|
||||
|
||||
#include <string>
|
||||
|
||||
class Controller
|
||||
{
|
||||
public:
|
||||
/*
|
||||
make a state class for a whole track
|
||||
class TrackState {
|
||||
int track;
|
||||
|
||||
};
|
||||
*/
|
||||
|
||||
enum ClipMode {
|
||||
CLIP_MODE_EMPTY,
|
||||
CLIP_MODE_PLAYING,
|
||||
|
@ -27,8 +21,12 @@ class Controller
|
|||
Controller(){};
|
||||
virtual ~Controller(){};
|
||||
|
||||
/// name string to show in UI
|
||||
virtual std::string getName() = 0;
|
||||
|
||||
//virtual void setTrack(TrackState& t);
|
||||
|
||||
/// functionality
|
||||
virtual void mute(int t, bool b){};
|
||||
virtual void volume(int t, float f){};
|
||||
virtual void recordArm(int t, bool r){};
|
||||
|
|
|
@ -15,14 +15,20 @@ using namespace std;
|
|||
class ControllerUpdater
|
||||
{
|
||||
public:
|
||||
ControllerUpdater()
|
||||
ControllerUpdater() {}
|
||||
|
||||
void registerController( Controller* controller )
|
||||
{
|
||||
c.push_back( new AkaiAPC() );
|
||||
std::cout << "ControllerUpdater registering controller: " <<
|
||||
controller->getName() << endl;
|
||||
c.push_back( controller );
|
||||
}
|
||||
|
||||
|
||||
void mute(int t, bool b)
|
||||
{
|
||||
for(unsigned int i = 0; i < c.size(); i++) c.at(i)->mute(t,b);
|
||||
for(unsigned int i = 0; i < c.size(); i++)
|
||||
c.at(i)->mute(t,b);
|
||||
}
|
||||
|
||||
void clipSelect(int t, int clip, Controller::ClipMode cm)
|
||||
|
|
13
src/jack.cxx
13
src/jack.cxx
|
@ -102,6 +102,9 @@ Jack::Jack() :
|
|||
|
||||
void Jack::activate()
|
||||
{
|
||||
// move to "settings" class or so
|
||||
controllerUpdater->registerController( new AkaiAPC() );
|
||||
|
||||
jack_activate( client );
|
||||
jack_transport_start(client);
|
||||
}
|
||||
|
@ -156,8 +159,18 @@ int Jack::process (jack_nframes_t nframes)
|
|||
writeToGuiRingbuffer( &e );
|
||||
|
||||
// check each looper for MIDI match
|
||||
for( int i = 0; i < midiObservers.size(); i++ )
|
||||
{
|
||||
midiObservers.at(i)->midi( (unsigned char*) in_event.buffer[0] );
|
||||
}
|
||||
//std::for_each( midiObservers.begin(), midiObservers.end(), [](MidiObserver* mo) { mo->midi( ); } );
|
||||
|
||||
|
||||
|
||||
/*
|
||||
for(unsigned int i = 0; i < loopers.size(); i++)
|
||||
loopers.at(i)->midi( (unsigned char*)&in_event.buffer[0] );
|
||||
*/
|
||||
|
||||
masterMidiInputIndex++;
|
||||
}
|
||||
|
|
13
src/jack.hxx
13
src/jack.hxx
|
@ -45,7 +45,14 @@ class Jack
|
|||
Metronome* getMetronome(){return &metronome;}
|
||||
TrackOutput* getTrackOutput(int t){return trackOutputs.at(t);}
|
||||
TimeManager* getTimeManager(){return &timeManager;}
|
||||
ControllerUpdater* getControllerUpdater(){return &controllerUpdater;}
|
||||
ControllerUpdater* getControllerUpdater(){return controllerUpdater;}
|
||||
|
||||
/// register MIDI observers: they're called when a MIDI message arrives on
|
||||
/// a port they're watching
|
||||
void registerMidiObserver( MidiObserver* mo )
|
||||
{
|
||||
midiObservers.push_back( mo );
|
||||
}
|
||||
|
||||
|
||||
/// sets reverb bus parameters
|
||||
|
@ -59,12 +66,14 @@ class Jack
|
|||
Metronome metronome;
|
||||
TimeManager timeManager;
|
||||
|
||||
ControllerUpdater controllerUpdater;
|
||||
ControllerUpdater* controllerUpdater;
|
||||
|
||||
vector<Looper*> loopers;
|
||||
|
||||
vector<TrackOutput*> trackOutputs;
|
||||
|
||||
vector<MidiObserver*> midiObservers;
|
||||
|
||||
int nframes;
|
||||
int samplerate;
|
||||
|
||||
|
|
|
@ -7,5 +7,5 @@ extern Jack* jack;
|
|||
|
||||
MidiObserver::MidiObserver( std::string portName )
|
||||
{
|
||||
|
||||
//jack->registerMidiObserver( this );
|
||||
}
|
||||
|
|
|
@ -14,8 +14,8 @@ extern Jack* jack;
|
|||
class MidiObserver
|
||||
{
|
||||
public:
|
||||
/// registers class with jack's MIDI handling, with optional MIDI port name
|
||||
MidiObserver( std::string portName = "" );
|
||||
/// registers class with jack's MIDI handling, with MIDI port name
|
||||
MidiObserver( std::string portName );
|
||||
|
||||
/// gets called with each MIDI message from the controller. Deal with its
|
||||
/// input here, and route to the appropriate function in Luppp
|
||||
|
|
Loading…
Add table
Reference in a new issue