summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2015-10-02 10:22:00 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2015-10-02 10:22:00 -0400
commit918133a342252cc8c27ea6dd5890cca084f5cb30 (patch)
tree2c5024ec222c2c4bdf16f45f7207655585a574a6
parent71bf231199ae41daa9ee9521303158cb0b6a35bb (diff)
fix handler of fader (pitchbend) messages in Mackie Control so that the outbound messages match the inbound ones
Pitch bend values really can span 0 to 16384, not 16383
-rw-r--r--libs/surfaces/mackie/fader.cc8
-rw-r--r--libs/surfaces/mackie/surface.cc6
2 files changed, 10 insertions, 4 deletions
diff --git a/libs/surfaces/mackie/fader.cc b/libs/surfaces/mackie/fader.cc
index cc43bf3387..46e46cf797 100644
--- a/libs/surfaces/mackie/fader.cc
+++ b/libs/surfaces/mackie/fader.cc
@@ -19,6 +19,10 @@
#include <cmath>
+#include "pbd/compose.h"
+
+#include "ardour/debug.h"
+
#include "fader.h"
#include "surface.h"
#include "control_group.h"
@@ -26,6 +30,7 @@
using namespace ArdourSurface;
using namespace Mackie;
+using namespace PBD;
Control*
Fader::factory (Surface& surface, int id, const char* name, Group& group)
@@ -54,6 +59,7 @@ Fader::update_message ()
return MidiByteArray();
}
- int posi = lrintf (0x3fff * position);
+ int posi = lrintf (16384.0 * position);
+ DEBUG_TRACE (DEBUG::MackieControl, string_compose ("generate fader message for position %1 (%2)\n", position, posi));
return MidiByteArray (3, 0xe0 + id(), posi & 0x7f, posi >> 7);
}
diff --git a/libs/surfaces/mackie/surface.cc b/libs/surfaces/mackie/surface.cc
index 5a56e0b00d..3b57c33579 100644
--- a/libs/surfaces/mackie/surface.cc
+++ b/libs/surfaces/mackie/surface.cc
@@ -396,8 +396,8 @@ Surface::handle_midi_pitchbend_message (MIDI::Parser&, MIDI::pitchbend_t pb, uin
* when we connected to the per-channel pitchbend events.
*/
- DEBUG_TRACE (DEBUG::MackieControl, string_compose ("Surface::handle_midi_pitchbend_message on port %3, fader = %1 value = %2\n",
- fader_id, pb, _number));
+ DEBUG_TRACE (DEBUG::MackieControl, string_compose ("Surface::handle_midi_pitchbend_message on port %3, fader = %1 value = %2 (%4)\n",
+ fader_id, pb, _number, pb/16384.0));
if (_mcp.device_info().no_handshake()) {
turn_it_on ();
@@ -407,7 +407,7 @@ Surface::handle_midi_pitchbend_message (MIDI::Parser&, MIDI::pitchbend_t pb, uin
if (fader) {
Strip* strip = dynamic_cast<Strip*> (&fader->group());
- float pos = (pb >> 4)/1023.0; // only the top 10 bytes are used
+ float pos = pb / 16384.0;
if (strip) {
strip->handle_fader (*fader, pos);
} else {