mirror of
https://github.com/vale981/openAV-Luppp
synced 2025-03-06 01:21:38 -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;
|
extern Jack* jack;
|
||||||
|
|
||||||
AkaiAPC::AkaiAPC()
|
AkaiAPC::AkaiAPC() :
|
||||||
|
Controller(),
|
||||||
|
MidiObserver("apc")
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,6 +12,8 @@ class AkaiAPC : public Controller, public MidiObserver
|
||||||
public:
|
public:
|
||||||
AkaiAPC();
|
AkaiAPC();
|
||||||
|
|
||||||
|
std::string getName(){return "Akai APC";}
|
||||||
|
|
||||||
void mute(int t, bool b);
|
void mute(int t, bool b);
|
||||||
void volume(int t, float f);
|
void volume(int t, float f);
|
||||||
void recordArm(int t, bool b);
|
void recordArm(int t, bool b);
|
||||||
|
|
|
@ -3,17 +3,11 @@
|
||||||
#ifndef LUPPP_CONTROLLER_H
|
#ifndef LUPPP_CONTROLLER_H
|
||||||
#define LUPPP_CONTROLLER_H
|
#define LUPPP_CONTROLLER_H
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
class Controller
|
class Controller
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
/*
|
|
||||||
make a state class for a whole track
|
|
||||||
class TrackState {
|
|
||||||
int track;
|
|
||||||
|
|
||||||
};
|
|
||||||
*/
|
|
||||||
|
|
||||||
enum ClipMode {
|
enum ClipMode {
|
||||||
CLIP_MODE_EMPTY,
|
CLIP_MODE_EMPTY,
|
||||||
CLIP_MODE_PLAYING,
|
CLIP_MODE_PLAYING,
|
||||||
|
@ -27,8 +21,12 @@ class Controller
|
||||||
Controller(){};
|
Controller(){};
|
||||||
virtual ~Controller(){};
|
virtual ~Controller(){};
|
||||||
|
|
||||||
|
/// name string to show in UI
|
||||||
|
virtual std::string getName() = 0;
|
||||||
|
|
||||||
//virtual void setTrack(TrackState& t);
|
//virtual void setTrack(TrackState& t);
|
||||||
|
|
||||||
|
/// functionality
|
||||||
virtual void mute(int t, bool b){};
|
virtual void mute(int t, bool b){};
|
||||||
virtual void volume(int t, float f){};
|
virtual void volume(int t, float f){};
|
||||||
virtual void recordArm(int t, bool r){};
|
virtual void recordArm(int t, bool r){};
|
||||||
|
|
|
@ -15,14 +15,20 @@ using namespace std;
|
||||||
class ControllerUpdater
|
class ControllerUpdater
|
||||||
{
|
{
|
||||||
public:
|
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)
|
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)
|
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()
|
void Jack::activate()
|
||||||
{
|
{
|
||||||
|
// move to "settings" class or so
|
||||||
|
controllerUpdater->registerController( new AkaiAPC() );
|
||||||
|
|
||||||
jack_activate( client );
|
jack_activate( client );
|
||||||
jack_transport_start(client);
|
jack_transport_start(client);
|
||||||
}
|
}
|
||||||
|
@ -156,8 +159,18 @@ int Jack::process (jack_nframes_t nframes)
|
||||||
writeToGuiRingbuffer( &e );
|
writeToGuiRingbuffer( &e );
|
||||||
|
|
||||||
// check each looper for MIDI match
|
// 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++)
|
for(unsigned int i = 0; i < loopers.size(); i++)
|
||||||
loopers.at(i)->midi( (unsigned char*)&in_event.buffer[0] );
|
loopers.at(i)->midi( (unsigned char*)&in_event.buffer[0] );
|
||||||
|
*/
|
||||||
|
|
||||||
masterMidiInputIndex++;
|
masterMidiInputIndex++;
|
||||||
}
|
}
|
||||||
|
|
13
src/jack.hxx
13
src/jack.hxx
|
@ -45,7 +45,14 @@ class Jack
|
||||||
Metronome* getMetronome(){return &metronome;}
|
Metronome* getMetronome(){return &metronome;}
|
||||||
TrackOutput* getTrackOutput(int t){return trackOutputs.at(t);}
|
TrackOutput* getTrackOutput(int t){return trackOutputs.at(t);}
|
||||||
TimeManager* getTimeManager(){return &timeManager;}
|
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
|
/// sets reverb bus parameters
|
||||||
|
@ -59,12 +66,14 @@ class Jack
|
||||||
Metronome metronome;
|
Metronome metronome;
|
||||||
TimeManager timeManager;
|
TimeManager timeManager;
|
||||||
|
|
||||||
ControllerUpdater controllerUpdater;
|
ControllerUpdater* controllerUpdater;
|
||||||
|
|
||||||
vector<Looper*> loopers;
|
vector<Looper*> loopers;
|
||||||
|
|
||||||
vector<TrackOutput*> trackOutputs;
|
vector<TrackOutput*> trackOutputs;
|
||||||
|
|
||||||
|
vector<MidiObserver*> midiObservers;
|
||||||
|
|
||||||
int nframes;
|
int nframes;
|
||||||
int samplerate;
|
int samplerate;
|
||||||
|
|
||||||
|
|
|
@ -7,5 +7,5 @@ extern Jack* jack;
|
||||||
|
|
||||||
MidiObserver::MidiObserver( std::string portName )
|
MidiObserver::MidiObserver( std::string portName )
|
||||||
{
|
{
|
||||||
|
//jack->registerMidiObserver( this );
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,8 +14,8 @@ extern Jack* jack;
|
||||||
class MidiObserver
|
class MidiObserver
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
/// registers class with jack's MIDI handling, with optional MIDI port name
|
/// registers class with jack's MIDI handling, with MIDI port name
|
||||||
MidiObserver( std::string portName = "" );
|
MidiObserver( std::string portName );
|
||||||
|
|
||||||
/// gets called with each MIDI message from the controller. Deal with its
|
/// gets called with each MIDI message from the controller. Deal with its
|
||||||
/// input here, and route to the appropriate function in Luppp
|
/// input here, and route to the appropriate function in Luppp
|
||||||
|
|
Loading…
Add table
Reference in a new issue