summaryrefslogtreecommitdiff
path: root/libs/ardour/midi_track.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2019-06-05 10:02:27 -0600
committerPaul Davis <paul@linuxaudiosystems.com>2019-06-05 10:02:39 -0600
commitfb2e65fd358b40568f2d2b20f59827e938b876e3 (patch)
tree896c3053659ca46a2824ba95c48749adbeced7a1 /libs/ardour/midi_track.cc
parent2c88055ef4b81146e302bfedffbe63c8e07979ad (diff)
do not set MIDI CC values on locate if control/parameter is set to "Off"
Diffstat (limited to 'libs/ardour/midi_track.cc')
-rw-r--r--libs/ardour/midi_track.cc10
1 files changed, 10 insertions, 0 deletions
diff --git a/libs/ardour/midi_track.cc b/libs/ardour/midi_track.cc
index ac4791b400..61c5307016 100644
--- a/libs/ardour/midi_track.cc
+++ b/libs/ardour/midi_track.cc
@@ -387,10 +387,20 @@ MidiTrack::non_realtime_locate (samplepos_t pos)
/* Update track controllers based on its "automation". */
const samplepos_t origin = region->position() - region->start();
BeatsSamplesConverter bfc(_session.tempo_map(), origin);
+
for (Controls::const_iterator c = _controls.begin(); c != _controls.end(); ++c) {
+
+ boost::shared_ptr<AutomationControl> ac = boost::dynamic_pointer_cast<AutomationControl> (c->second);
+
+ if (!ac->automation_playback()) {
+ continue;
+ }
+
boost::shared_ptr<MidiTrack::MidiControl> tcontrol;
boost::shared_ptr<Evoral::Control> rcontrol;
+
if ((tcontrol = boost::dynamic_pointer_cast<MidiTrack::MidiControl>(c->second)) &&
+
(rcontrol = region->control(tcontrol->parameter()))) {
const Temporal::Beats pos_beats = bfc.from(pos - origin);
if (rcontrol->list()->size() > 0) {