diff --git a/libs/surfaces/mackie/controls.cc b/libs/surfaces/mackie/controls.cc index c26d0cd709..f37bf8e92d 100644 --- a/libs/surfaces/mackie/controls.cc +++ b/libs/surfaces/mackie/controls.cc @@ -289,6 +289,7 @@ Jog::factory (Surface& surface, int id, int ordinal, const char* name, Group& gr { Jog* j = new Jog (id, ordinal, name, group); surface.controls.push_back (j); + surface.controls_by_name["jog"] = j; group.add (*j); return j; } diff --git a/libs/surfaces/mackie/controls.h b/libs/surfaces/mackie/controls.h index b17030946b..c3b307effc 100644 --- a/libs/surfaces/mackie/controls.h +++ b/libs/surfaces/mackie/controls.h @@ -156,6 +156,7 @@ public: enum base_id_t { fader_base_id = 0x0, pot_base_id = 0x10, + jog_base_id = 0x3c, fader_touch_button_base_id = 0x68, vselect_button_base_id = 0x20, select_button_base_id = 0x18, diff --git a/libs/surfaces/mackie/mackie_port.cc b/libs/surfaces/mackie/mackie_port.cc index 69a67279f9..be79bef01d 100644 --- a/libs/surfaces/mackie/mackie_port.cc +++ b/libs/surfaces/mackie/mackie_port.cc @@ -368,6 +368,10 @@ MackiePort::handle_midi_controller_message (MIDI::Parser &, MIDI::EventTwoBytes* Control* control = _mcp.surface().pots[(8*number()) + ev->controller_number]; + if (!control && ev->controller_number == Control::jog_base_id) { + control = _mcp.surface().controls_by_name["jog"]; + } + if (control) { ControlState state;