diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2012-06-01 12:56:20 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2012-06-01 12:56:20 +0000 |
commit | ba5e71b50f53c97c1ce806d9582c4c32970bdcf6 (patch) | |
tree | 62e95853f436d4bb5dc1514425fb2164f7adba49 /libs/surfaces/mackie/meter.cc | |
parent | bc3aea6f93edf23c19dc672dd5b1f44bca71f571 (diff) |
MCP: Patch from Rodrigo that:
* implements Metering on/off through Button::Read as per Seablade's suggestion. I choose this button as it's the "Show meters" button in Traktion;
* removes redundant code from Meter::update_transport_rolling();
* renames Meter::update_transport_rolling() to Meter::notify_metering_state_changed();
* renamed Surface::notify_transport_state_changed() to Surface::notify_metering_state_changed();
* renamed Strip::notify_transport_state_changed() to Strip::notify_metering_state_changed();
* created MackieControlProtocol::notify_metering_state_changed() and made MackieControlProtocol::notify_transport_state_changed() use it;
* implemented turning off of timecode display and two char display in Surface::zero_all ();
* implemented master fader zeroing in Surface::zero_all ();
* calling Surfaces->zero_all() at MackieControlProtocol destructor;
* implemented restore of 2nd LCD line content after metering being active.
git-svn-id: svn://localhost/ardour2/branches/3.0@12520 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/surfaces/mackie/meter.cc')
-rw-r--r-- | libs/surfaces/mackie/meter.cc | 61 |
1 files changed, 14 insertions, 47 deletions
diff --git a/libs/surfaces/mackie/meter.cc b/libs/surfaces/mackie/meter.cc index d4842aa5ca..fe11357d3a 100644 --- a/libs/surfaces/mackie/meter.cc +++ b/libs/surfaces/mackie/meter.cc @@ -22,7 +22,6 @@ #include "pbd/compose.h" #include "ardour/debug.h" -#include "mackie_control_protocol.h" #include "meter.h" #include "surface.h" #include "surface_port.h" @@ -42,54 +41,26 @@ Meter::factory (Surface& surface, int id, const char* name, Group& group) } void -Meter::update_transport_rolling(Surface& surface) -{ - bool transport_is_rolling = (surface.mcp().get_transport_speed () != 0.0f); - - if (_transport_is_rolling == transport_is_rolling) { - return; - } - if (transport_is_rolling) { - MidiByteArray enable_msg; - - // sysex header - enable_msg << surface.sysex_hdr(); - - // code for Channel Meter Enable Message - enable_msg << 0x20; - - // Channel identification - enable_msg << id(); - - // Enabling level meter on LCD, peak hold display on horizontal meter and signal LED - enable_msg << 0x07; - - // sysex trailer - enable_msg << MIDI::eox; - - surface.write (enable_msg); - - } else { - MidiByteArray disable_msg; +Meter::notify_metering_state_changed(Surface& surface, bool transport_is_rolling, bool metering_active) +{ + MidiByteArray msg; - // sysex header - disable_msg << surface.sysex_hdr(); + // sysex header + msg << surface.sysex_hdr(); - // code for Channel Meter Enable Message - disable_msg << 0x20; + // code for Channel Meter Enable Message + msg << 0x20; - // Channel identification - disable_msg << id(); + // Channel identification + msg << id(); - // Disabling level meter on LCD, peak hold display on horizontal meter and signal LED - disable_msg << 0x00; + // Enable (0x07) / Disable (0x00) level meter on LCD, peak hold display on horizontal meter and signal LED + msg << ((transport_is_rolling && metering_active) ? 0x07 : 0x00); - // sysex trailer - disable_msg << MIDI::eox; + // sysex trailer + msg << MIDI::eox; - surface.write (disable_msg); - } - _transport_is_rolling = transport_is_rolling; + surface.write (msg); } void @@ -99,10 +70,6 @@ Meter::send_update (Surface& surface, float dB) // DEBUG_TRACE (DEBUG::MackieControl, string_compose ("Meter ID %1 dB %2\n", id(), dB)); - if (!_transport_is_rolling) { - return; - } - if (dB < -70.0f) { def = 0.0f; } else if (dB < -60.0f) { |