mirror of
https://github.com/vale981/openAV-Luppp
synced 2025-03-06 09:31:39 -05:00
-GenericMIDI executes actions based on incoming MIDI
This commit is contained in:
parent
c78e322e9d
commit
3fc1144e37
3 changed files with 26 additions and 17 deletions
|
@ -292,15 +292,23 @@ void GenericMIDI::ccChange( int track, int cc, float value )
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
void GenericMIDI::midi(unsigned char* data)
|
void GenericMIDI::midi(unsigned char* midi)
|
||||||
{
|
{
|
||||||
int b1 = data[0];
|
int status = midi[0];
|
||||||
int b2 = data[1];
|
int data = midi[1];
|
||||||
int b3 = data[2];
|
int value = midi[2];
|
||||||
|
|
||||||
// TODO: Generic MIDI needs MIDI map from JSON
|
LUPPP_WARN("called %i %i %i", status, data, value );
|
||||||
// FIXME: used variables
|
|
||||||
|
|
||||||
|
// iterate over bindings, execute binding action if matches
|
||||||
|
for(int i = 0; i < midiToAction.size(); i++)
|
||||||
|
{
|
||||||
|
if ( midiToAction.at(i).status == status &&
|
||||||
|
midiToAction.at(i).data == data )
|
||||||
|
{
|
||||||
|
LUPPP_WARN("Executing action %s",midiToAction.at(i).action.c_str() );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -367,6 +375,8 @@ int GenericMIDI::loadController( std::string file )
|
||||||
cJSON* action = cJSON_GetObjectItem( binding, "action" );
|
cJSON* action = cJSON_GetObjectItem( binding, "action" );
|
||||||
|
|
||||||
LUPPP_NOTE("Binding from status %i %i %s", status->valueint, data->valueint, action->valuestring);
|
LUPPP_NOTE("Binding from status %i %i %s", status->valueint, data->valueint, action->valuestring);
|
||||||
|
|
||||||
|
midiToAction.push_back( MidiBinding(status->valueint, data->valueint, action->valuestring ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
#include "controller.hxx"
|
#include "controller.hxx"
|
||||||
|
|
||||||
#include <map>
|
#include <vector>
|
||||||
|
|
||||||
#include "../observer/midi.hxx"
|
#include "../observer/midi.hxx"
|
||||||
|
|
||||||
|
@ -15,11 +15,12 @@ typedef std::string LupppAction;
|
||||||
class MidiBinding
|
class MidiBinding
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
MidiBinding(unsigned char b1, unsigned char b2) : status(b1), data(b2) {}
|
MidiBinding(unsigned char b1, unsigned char b2, LupppAction act) : status(b1), data(b2), action(act) {}
|
||||||
|
|
||||||
private:
|
|
||||||
unsigned char status;
|
unsigned char status;
|
||||||
unsigned char data;
|
unsigned char data;
|
||||||
|
|
||||||
|
LupppAction action;
|
||||||
};
|
};
|
||||||
|
|
||||||
class GenericMIDI : public Controller, public MidiObserver
|
class GenericMIDI : public Controller, public MidiObserver
|
||||||
|
@ -55,11 +56,9 @@ class GenericMIDI : public Controller, public MidiObserver
|
||||||
|
|
||||||
std::string name;
|
std::string name;
|
||||||
|
|
||||||
/// contains a list of
|
/// contains midi binding instances
|
||||||
std::multimap<MidiBinding,LupppAction> midiToAction;
|
std::vector<MidiBinding> midiToAction;
|
||||||
|
std::vector<MidiBinding> actionToMidi;
|
||||||
/// contains list of
|
|
||||||
std::multimap<LupppAction,MidiBinding> actionToMidi;
|
|
||||||
|
|
||||||
int loadController(std::string controllerFile);
|
int loadController(std::string controllerFile);
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Add table
Reference in a new issue