zynaddsubfx

ZynAddSubFX open source synthesizer
Log | Files | Refs | Submodules | LICENSE

commit c571b6c210ed1a2581b4dac55af1c49213bbe3ac
parent 80aa7435f120b8eca0157d725ec98e5e1813c736
Author: fundamental <mark.d.mccurry@gmail.com>
Date:   Sat,  7 Nov 2015 10:42:42 -0500

Fl_Osc_DialF: Add Missing Midi Learn Handler

Diffstat:
Msrc/UI/Fl_Osc_DialF.H | 3+++
Msrc/UI/Fl_Osc_DialF.cpp | 20++++++++++++++++++--
2 files changed, 21 insertions(+), 2 deletions(-)

diff --git a/src/UI/Fl_Osc_DialF.H b/src/UI/Fl_Osc_DialF.H @@ -17,6 +17,9 @@ class Fl_Osc_DialF:public WidgetPDial, public Fl_Osc_Widget void update(void); void callback(Fl_Callback *cb, void *p = NULL); + //Midi learn handler + int handle(int); + void cb(void); private: std::pair<Fl_Callback*, void*> cb_data; diff --git a/src/UI/Fl_Osc_DialF.cpp b/src/UI/Fl_Osc_DialF.cpp @@ -51,11 +51,27 @@ void Fl_Osc_DialF::callback(Fl_Callback *cb, void *p) cb_data.second = p; } +int Fl_Osc_DialF::handle(int ev) +{ + bool middle_mouse = (ev == FL_PUSH && Fl::event_state(FL_BUTTON2) && !Fl::event_shift()); + bool ctl_click = (ev == FL_PUSH && Fl::event_state(FL_BUTTON1) && Fl::event_ctrl()); + bool shift_middle = (ev == FL_PUSH && Fl::event_state(FL_BUTTON2) && Fl::event_shift()); + if(middle_mouse || ctl_click) { + printf("Trying to learn...\n"); + osc->write("/learn", "s", (loc+ext).c_str()); + return 1; + } else if(shift_middle) { + osc->write("/unlearn", "s", (loc+ext).c_str()); + return 1; + } + return WidgetPDial::handle(ev); +} + void Fl_Osc_DialF::OSC_value(float v) { value(v); } - + void Fl_Osc_DialF::update(void) { oscWrite(ext); @@ -66,7 +82,7 @@ void Fl_Osc_DialF::cb(void) assert(osc); oscWrite(ext, "f", (float)value()); - + if(cb_data.first) cb_data.first(this, cb_data.second); // label_str = string_cast<float,string>(val);