summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libs/surfaces/generic_midi/midicontrollable.cc8
1 files changed, 8 insertions, 0 deletions
diff --git a/libs/surfaces/generic_midi/midicontrollable.cc b/libs/surfaces/generic_midi/midicontrollable.cc
index 96d2c1772c..71021e9c84 100644
--- a/libs/surfaces/generic_midi/midicontrollable.cc
+++ b/libs/surfaces/generic_midi/midicontrollable.cc
@@ -163,6 +163,14 @@ MIDIControllable::control_to_midi (float val)
float control_max = controllable->upper ();
const float control_range = control_max - control_min;
+ if (controllable->is_toggle()) {
+ if (val >= (control_min + (control_range/2.0f))) {
+ return max_value_for_type();
+ } else {
+ return 0;
+ }
+ }
+
return (val - control_min) / control_range * max_value_for_type ();
}