From d59739d728870843b39901a48216fe9109be6641 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 14 Dec 2015 13:28:24 -0500 Subject: [PATCH] faderport: add 100msec (10Hz) periodic update to facilitate automation playback --- libs/surfaces/faderport/faderport.cc | 20 ++++++++++++++++++++ libs/surfaces/faderport/faderport.h | 3 +++ 2 files changed, 23 insertions(+) diff --git a/libs/surfaces/faderport/faderport.cc b/libs/surfaces/faderport/faderport.cc index 46ff569c43..1f5352fdec 100644 --- a/libs/surfaces/faderport/faderport.cc +++ b/libs/surfaces/faderport/faderport.cc @@ -560,6 +560,10 @@ FaderPort::set_active (bool yn) blink_connection = blink_timeout->connect (sigc::mem_fun (*this, &FaderPort::blink)); blink_timeout->attach (main_loop()->get_context()); + Glib::RefPtr periodic_timeout = Glib::TimeoutSource::create (100); // milliseconds + periodic_connection = blink_timeout->connect (sigc::mem_fun (*this, &FaderPort::periodic)); + periodic_timeout->attach (main_loop()->get_context()); + } else { BaseUI::quit (); @@ -574,6 +578,22 @@ FaderPort::set_active (bool yn) return 0; } +bool +FaderPort::periodic () +{ + if (!_current_route) { + return true; + } + + ARDOUR::AutoState gain_state = _current_route->gain_control()->automation_state(); + + if (gain_state == ARDOUR::Touch || gain_state == ARDOUR::Play) { + map_gain (); + } + + return true; +} + void FaderPort::stop_blinking (ButtonID id) { diff --git a/libs/surfaces/faderport/faderport.h b/libs/surfaces/faderport/faderport.h index 9227f1f39f..6643e22369 100644 --- a/libs/surfaces/faderport/faderport.h +++ b/libs/surfaces/faderport/faderport.h @@ -281,6 +281,9 @@ class FaderPort : public ARDOUR::ControlProtocol, public AbstractUI Blinkers; Blinkers blinkers;