From b4dea5309d4c4b675bea6f3514bb2331d228b161 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Mon, 13 Jan 2014 10:47:17 +0100 Subject: [PATCH] ignore additional channels for AFL, PFL: If the monitor-section has fewer-channels than the solo-listen point: ignore additional channels. --- libs/ardour/internal_send.cc | 14 +++++++++++++- libs/ardour/route.cc | 1 + 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/libs/ardour/internal_send.cc b/libs/ardour/internal_send.cc index 8136985e1f..9716cf002c 100644 --- a/libs/ardour/internal_send.cc +++ b/libs/ardour/internal_send.cc @@ -128,7 +128,19 @@ InternalSend::run (BufferSet& bufs, framepos_t start_frame, framepos_t end_frame uint32_t const bufs_audio = bufs.count().get (DataType::AUDIO); uint32_t const mixbufs_audio = mixbufs.count().get (DataType::AUDIO); - assert (mixbufs.available().get (DataType::AUDIO) >= bufs_audio); + /* monitor-section has same number of channels as master-bus (on creation). + * + * There is no clear answer what should happen when trying to PFL or AFL + * a track that has more channels (bufs_audio from source-track is + * larger than mixbufs). + * + * There are two options: + * 1: discard additional channels (current) + * OR + * 2: require the monitor-section to have at least as many channels + * as the largest count of any route + */ + //assert (mixbufs.available().get (DataType::AUDIO) >= bufs_audio); /* Copy bufs into mixbufs, going round bufs more than once if necessary to ensure that every mixbuf gets some data. diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc index 655ba7d53d..e86d2c5b0d 100644 --- a/libs/ardour/route.cc +++ b/libs/ardour/route.cc @@ -2717,6 +2717,7 @@ Route::enable_monitor_send () /* master never sends to monitor section via the normal mechanism */ assert (!is_master ()); + assert (!is_monitor ()); /* make sure we have one */ if (!_monitor_send) {