summaryrefslogtreecommitdiff
path: root/libs/surfaces/generic_midi/midicontrollable.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libs/surfaces/generic_midi/midicontrollable.cc')
-rw-r--r--libs/surfaces/generic_midi/midicontrollable.cc11
1 files changed, 8 insertions, 3 deletions
diff --git a/libs/surfaces/generic_midi/midicontrollable.cc b/libs/surfaces/generic_midi/midicontrollable.cc
index bed85f49b4..bf163f9615 100644
--- a/libs/surfaces/generic_midi/midicontrollable.cc
+++ b/libs/surfaces/generic_midi/midicontrollable.cc
@@ -280,6 +280,8 @@ MIDIControllable::midi_sense_note (Parser &, EventTwoBytes *msg, bool /*is_on*/)
}
}
+ _surface->maybe_start_touch (controllable);
+
if (!controllable->is_toggle()) {
if (control_additional == msg->note_number) {
controllable->set_value (midi_to_control (msg->velocity), Controllable::NoGroup);
@@ -307,9 +309,7 @@ MIDIControllable::midi_sense_controller (Parser &, EventTwoBytes *msg)
assert (controllable);
- if (controllable->touching()) {
- return; // to prevent feedback fights when e.g. dragging a UI slider
- }
+ _surface->maybe_start_touch (controllable);
if (control_additional == msg->controller_number) {
@@ -411,6 +411,9 @@ MIDIControllable::midi_sense_program_change (Parser &, MIDI::byte msg)
return;
}
}
+
+ _surface->maybe_start_touch (controllable);
+
if (msg == control_additional) {
if (!controllable->is_toggle()) {
@@ -435,6 +438,8 @@ MIDIControllable::midi_sense_pitchbend (Parser &, pitchbend_t pb)
}
}
+ _surface->maybe_start_touch (controllable);
+
if (!controllable->is_toggle()) {
controllable->set_value (midi_to_control (pb), Controllable::NoGroup);
DEBUG_TRACE (DEBUG::GenericMidi, string_compose ("MIDI pitchbend %1 value %2 %3\n", (int) control_channel, (float) midi_to_control (pb), current_uri() ));