mirror of
https://github.com/vale981/openAV-Luppp
synced 2025-03-06 01:21:38 -05:00
-Event implemented to remove individual MIDI bindings
This commit is contained in:
parent
aabc3ad9d6
commit
9ab22c78b8
5 changed files with 49 additions and 2 deletions
|
@ -692,6 +692,19 @@ int GenericMIDI::loadController( std::string file )
|
||||||
return LUPPP_RETURN_OK;
|
return LUPPP_RETURN_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GenericMIDI::removeBinding( int bindingID )
|
||||||
|
{
|
||||||
|
for(unsigned int i = 0; i < midiToAction.size(); i++)
|
||||||
|
{
|
||||||
|
if ( midiToAction.at(i)->ID == bindingID )
|
||||||
|
{
|
||||||
|
LUPPP_NOTE("MIDI binding REMOVED with bindingID %i", bindingID );
|
||||||
|
// CRITICAL FIXME
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void GenericMIDI::setupBinding( LupppAction eventType, int midiStatus, int midiData, int track, int scene, int send, int active )
|
void GenericMIDI::setupBinding( LupppAction eventType, int midiStatus, int midiData, int track, int scene, int send, int active )
|
||||||
{
|
{
|
||||||
LUPPP_NOTE("MIDI binding, track %d, from eventType %d to %d, %d", track, eventType, midiStatus, midiData );
|
LUPPP_NOTE("MIDI binding, track %d, from eventType %d to %d, %d", track, eventType, midiStatus, midiData );
|
||||||
|
|
|
@ -70,6 +70,7 @@ class GenericMIDI : public Controller, public MidiIO
|
||||||
|
|
||||||
// for adding bindings from MIDI / GUI event pair
|
// for adding bindings from MIDI / GUI event pair
|
||||||
void setupBinding( LupppAction eventType, int midiStatus, int midiData, int track, int scene, int send, int active );
|
void setupBinding( LupppAction eventType, int midiStatus, int midiData, int track, int scene, int send, int active );
|
||||||
|
void removeBinding( int bindingID );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
STATUS stat;
|
STATUS stat;
|
||||||
|
|
|
@ -96,6 +96,7 @@ namespace Event
|
||||||
CONTROLLER_BINDING_ENABLE,
|
CONTROLLER_BINDING_ENABLE,
|
||||||
CONTROLLER_BINDING_TARGET,
|
CONTROLLER_BINDING_TARGET,
|
||||||
CONTROLLER_BINDING_MADE,
|
CONTROLLER_BINDING_MADE,
|
||||||
|
CONTROLLER_BINDING_REMOVE,
|
||||||
|
|
||||||
QUIT,
|
QUIT,
|
||||||
|
|
||||||
|
@ -133,6 +134,17 @@ class EventControllerBindingMade : public EventBase
|
||||||
EventControllerBindingMade(int id = 0, void* b=0): controllerID(id), binding(b){}
|
EventControllerBindingMade(int id = 0, void* b=0): controllerID(id), binding(b){}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class EventControllerBindingRemove : public EventBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
int type() { return int(CONTROLLER_BINDING_REMOVE); }
|
||||||
|
uint32_t size() { return sizeof(EventControllerBindingRemove); }
|
||||||
|
int controllerID;
|
||||||
|
int bindingID;
|
||||||
|
void* binding;
|
||||||
|
EventControllerBindingRemove(int ctlrID = 0, int bindID=0, void* b=0): controllerID(ctlrID), bindingID(bindID), binding(b){}
|
||||||
|
};
|
||||||
|
|
||||||
class EventControllerBindingEnable : public EventBase
|
class EventControllerBindingEnable : public EventBase
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
#include "jack.hxx"
|
#include "jack.hxx"
|
||||||
#include "event.hxx"
|
#include "event.hxx"
|
||||||
#include "controller/controller.hxx"
|
#include "controller/controller.hxx"
|
||||||
|
#include "controller/genericmidi.hxx"
|
||||||
#include "eventhandler.hxx"
|
#include "eventhandler.hxx"
|
||||||
|
|
||||||
#include "logic.hxx"
|
#include "logic.hxx"
|
||||||
|
@ -292,6 +293,26 @@ void handleDspEvents()
|
||||||
jack->bindingEventRecordEnable = ev.enable;
|
jack->bindingEventRecordEnable = ev.enable;
|
||||||
} break; }
|
} break; }
|
||||||
|
|
||||||
|
|
||||||
|
case Event::CONTROLLER_BINDING_REMOVE: {
|
||||||
|
if ( availableRead >= sizeof(EventControllerBindingRemove) ) {
|
||||||
|
EventControllerBindingRemove ev;
|
||||||
|
jack_ringbuffer_read( rbToDsp, (char*)&ev, sizeof(EventControllerBindingRemove) );
|
||||||
|
// get Controller* from controllerID
|
||||||
|
Controller* c =jack->getControllerUpdater()->getController(ev.controllerID);
|
||||||
|
// dynamic cast to check for GenericMIDI controller
|
||||||
|
GenericMIDI* g = dynamic_cast<GenericMIDI*>(c);
|
||||||
|
if ( g )
|
||||||
|
{
|
||||||
|
// kick out BindingID
|
||||||
|
g->removeBinding( ev.bindingID );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// GUI print notify of error removing binding
|
||||||
|
}
|
||||||
|
} break; }
|
||||||
|
|
||||||
case Event::CONTROLLER_INSTANCE_GET_TO_WRITE: {
|
case Event::CONTROLLER_INSTANCE_GET_TO_WRITE: {
|
||||||
if ( availableRead >= sizeof(EventControllerInstanceGetToWrite) ) {
|
if ( availableRead >= sizeof(EventControllerInstanceGetToWrite) ) {
|
||||||
EventControllerInstanceGetToWrite ev;
|
EventControllerInstanceGetToWrite ev;
|
||||||
|
|
|
@ -166,8 +166,8 @@ static void deleteBindingFromController(Fl_Widget* w, void* ud)
|
||||||
s >> tmp;
|
s >> tmp;
|
||||||
LUPPP_NOTE("CtlrID %i: Deleting binding with ID %i", self->controllerID, tmp );
|
LUPPP_NOTE("CtlrID %i: Deleting binding with ID %i", self->controllerID, tmp );
|
||||||
|
|
||||||
|
EventControllerBindingRemove e( self->controllerID, tmp );
|
||||||
|
writeToDspRingbuffer( &e );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue