Fix metronome + capture alignment for Mixbus
authorRobin Gareus <robin@gareus.org>
Fri, 23 Jun 2017 23:22:17 +0000 (01:22 +0200)
committerRobin Gareus <robin@gareus.org>
Fri, 23 Jun 2017 23:22:17 +0000 (01:22 +0200)
libs/ardour/diskstream.cc
libs/ardour/session_click.cc

index f5f62996d3e7780b454d26dcb1e4c74e2daf23a8..24339ec8ccbce163990ca7ddfb21f1d6ddd7d24a 100644 (file)
@@ -266,6 +266,15 @@ Diskstream::set_capture_offset ()
        switch (_alignment_style) {
        case ExistingMaterial:
                _capture_offset = _io->latency();
+#ifdef MIXBUS
+               /* add additional latency, delayline inside the channelstrip + master-bus
+                * in MB the master-bus has no input-ports, so its latency does not propagate
+                */
+               if (_session.master_out()) {
+                       _capture_offset += _session.master_out()->signal_latency();
+               }
+#endif
+
                break;
 
        case CaptureTime:
index fc1f9c5e1d98e40a4bc8c086f51ba8116607ffbd..fae442f6c51d388c7b662456df3e40a32735eaab 100644 (file)
@@ -80,6 +80,11 @@ Session::click (framepos_t start, framecnt_t nframes)
        }
 
        start -= _worst_track_latency;
+#ifdef MIXBUS
+       if (_master_out) {
+               start -= _master_out->signal_latency (); // delay signal by mixbus' internal latency
+       }
+#endif
        /* start could be negative at this point */
        const framepos_t end = start + nframes;
        /* correct start, potentially */