summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2012-05-21 19:02:44 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2012-05-21 19:02:44 +0000
commit8c73a62ee0800673cd28e5e0946d65212e163d3b (patch)
treeb6a1993f0ccddabd840eae3618ac6891ac0ca5a1
parenta6c3508bd381e939d420b6069e374776b5e4468d (diff)
split apart mackie meter messages when we have to send two, one to turn on/off the overload indicator and one to set the level. this avoids MIDI bridge issues with non-canonical MIDI messages
git-svn-id: svn://localhost/ardour2/branches/3.0@12367 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r--libs/surfaces/mackie/meter.cc18
-rw-r--r--libs/surfaces/mackie/meter.h4
-rw-r--r--libs/surfaces/mackie/strip.cc2
3 files changed, 14 insertions, 10 deletions
diff --git a/libs/surfaces/mackie/meter.cc b/libs/surfaces/mackie/meter.cc
index a4824d3612..82aef2bef8 100644
--- a/libs/surfaces/mackie/meter.cc
+++ b/libs/surfaces/mackie/meter.cc
@@ -40,8 +40,8 @@ Meter::factory (Surface& surface, int id, const char* name, Group& group)
return m;
}
-MidiByteArray
-Meter::update_message (float dB)
+void
+Meter::send_update (Surface& surface, float dB)
{
float def = 0.0f; /* Meter deflection %age */
@@ -75,12 +75,13 @@ Meter::update_message (float dB)
if (def > 100.0f) {
if (!overload_on) {
overload_on = true;
- msg << MidiByteArray (2, 0xd0, (id() << 4) | 0xe);
+ surface.write (MidiByteArray (2, 0xd0, (id() << 4) | 0xe));
+
}
} else {
if (overload_on) {
overload_on = false;
- msg << MidiByteArray (2, 0xd0, (id() << 4) | 0xf);
+ surface.write (MidiByteArray (2, 0xd0, (id() << 4) | 0xf));
}
}
@@ -90,9 +91,12 @@ Meter::update_message (float dB)
if (last_segment_value_sent != segment) {
last_segment_value_sent = segment;
- msg << MidiByteArray (2, 0xD0, (id()<<4) | segment);
+ surface.write (MidiByteArray (2, 0xD0, (id()<<4) | segment));
}
-
- return msg;
}
+MidiByteArray
+Meter::zero ()
+{
+ return MidiByteArray (2, 0xD0, (id()<<4 | 0));
+}
diff --git a/libs/surfaces/mackie/meter.h b/libs/surfaces/mackie/meter.h
index 1898bf8199..b94c7ac98a 100644
--- a/libs/surfaces/mackie/meter.h
+++ b/libs/surfaces/mackie/meter.h
@@ -35,9 +35,9 @@ public:
, last_segment_value_sent (-1)
, overload_on (false) {}
- MidiByteArray update_message (float dB);
+ void send_update (Surface&, float dB);
- MidiByteArray zero() { return update_message (-99999999.0); }
+ MidiByteArray zero();
static Control* factory (Surface&, int id, const char*, Group&);
diff --git a/libs/surfaces/mackie/strip.cc b/libs/surfaces/mackie/strip.cc
index 9e4c72eab4..132d93ed75 100644
--- a/libs/surfaces/mackie/strip.cc
+++ b/libs/surfaces/mackie/strip.cc
@@ -687,7 +687,7 @@ Strip::update_meter ()
{
if (_meter) {
float dB = const_cast<PeakMeter&> (_route->peak_meter()).peak_power (0);
- _surface->write (_meter->update_message (dB));
+ _meter->send_update (*_surface, dB);
}
}