mirror of
https://github.com/vale981/openAV-Luppp
synced 2025-03-05 17:11:40 -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 b2 = data[1];
|
||||
int b3 = data[2];
|
||||
int status = midi[0];
|
||||
int data = midi[1];
|
||||
int value = midi[2];
|
||||
|
||||
// TODO: Generic MIDI needs MIDI map from JSON
|
||||
// FIXME: used variables
|
||||
LUPPP_WARN("called %i %i %i", status, data, value );
|
||||
|
||||
// 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() );
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@ -366,7 +374,9 @@ int GenericMIDI::loadController( std::string file )
|
|||
cJSON* data = cJSON_GetObjectItem( binding, "data" );
|
||||
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
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
#include "controller.hxx"
|
||||
|
||||
#include <map>
|
||||
#include <vector>
|
||||
|
||||
#include "../observer/midi.hxx"
|
||||
|
||||
|
@ -15,11 +15,12 @@ typedef std::string LupppAction;
|
|||
class MidiBinding
|
||||
{
|
||||
public:
|
||||
MidiBinding(unsigned char b1, unsigned char b2) : status(b1), data(b2) {}
|
||||
|
||||
private:
|
||||
MidiBinding(unsigned char b1, unsigned char b2, LupppAction act) : status(b1), data(b2), action(act) {}
|
||||
|
||||
unsigned char status;
|
||||
unsigned char data;
|
||||
|
||||
LupppAction action;
|
||||
};
|
||||
|
||||
class GenericMIDI : public Controller, public MidiObserver
|
||||
|
@ -55,11 +56,9 @@ class GenericMIDI : public Controller, public MidiObserver
|
|||
|
||||
std::string name;
|
||||
|
||||
/// contains a list of
|
||||
std::multimap<MidiBinding,LupppAction> midiToAction;
|
||||
|
||||
/// contains list of
|
||||
std::multimap<LupppAction,MidiBinding> actionToMidi;
|
||||
/// contains midi binding instances
|
||||
std::vector<MidiBinding> midiToAction;
|
||||
std::vector<MidiBinding> actionToMidi;
|
||||
|
||||
int loadController(std::string controllerFile);
|
||||
/*
|
||||
|
|
|
@ -291,7 +291,7 @@ int DiskReader::readTracks()
|
|||
readScenes( t, track );
|
||||
|
||||
// name
|
||||
{
|
||||
{
|
||||
cJSON* name = cJSON_GetObjectItem( track, "name");
|
||||
gui->getTrack(t)->bg.setLabel( name->valuestring );
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue