From a5674e92712aacae648e8d55ec7b767b6d988542 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Tue, 14 Jun 2011 14:49:06 +0000 Subject: fix initialization of gain for Listen internal sends (to monitor bus); remove pannable object from monitor bus after (re)creation from XML git-svn-id: svn://localhost/ardour2/branches/3.0@9730 d708f5d6-7413-0410-9779-e7cbd77b26cf --- libs/ardour/internal_send.cc | 43 +++++++++++++++++++++++++++++++++---------- 1 file changed, 33 insertions(+), 10 deletions(-) (limited to 'libs/ardour/internal_send.cc') diff --git a/libs/ardour/internal_send.cc b/libs/ardour/internal_send.cc index e455722dd0..ed7c5e6bc3 100644 --- a/libs/ardour/internal_send.cc +++ b/libs/ardour/internal_send.cc @@ -21,6 +21,7 @@ #include "pbd/failed_constructor.h" #include "ardour/amp.h" +#include "ardour/audio_buffer.h" #include "ardour/internal_send.h" #include "ardour/meter.h" #include "ardour/route.h" @@ -41,7 +42,7 @@ InternalSend::InternalSend (Session& s, boost::shared_ptr p, boost::sh } } - _amp->set_gain (0, this); + init_gain (); } InternalSend::~InternalSend () @@ -51,6 +52,18 @@ InternalSend::~InternalSend () } } +void +InternalSend::init_gain () +{ + if (_role == Listen) { + /* send to monitor bus is always at unity */ + _amp->set_gain (1.0, this); + } else { + /* aux sends start at -inf dB */ + _amp->set_gain (0, this); + } +} + int InternalSend::use_target (boost::shared_ptr sendto) { @@ -73,7 +86,6 @@ InternalSend::use_target (boost::shared_ptr sendto) return 0; } - void InternalSend::send_to_going_away () { @@ -140,6 +152,20 @@ InternalSend::run (BufferSet& bufs, framepos_t start_frame, framepos_t end_frame } } +#if 0 + if (_session.transport_rolling()) { + for (BufferSet::audio_iterator b = mixbufs.audio_begin(); b != mixbufs.audio_end(); ++b) { + Sample* p = b->data (); + for (pframes_t n = 0; n < nframes; ++n) { + if (p[n] != 0.0) { + cerr << "\tnon-zero data SENT to " << b->data() << endl; + break; + } + } + } + } +#endif + /* target will pick up our output when it is ready */ out: @@ -182,10 +208,14 @@ InternalSend::get_state() } int -InternalSend::set_our_state (const XMLNode& node, int /*version*/) +InternalSend::set_state (const XMLNode& node, int version) { const XMLProperty* prop; + Send::set_state (node, version); + + init_gain (); + if ((prop = node.property ("target")) != 0) { _send_to_id = prop->value(); @@ -205,13 +235,6 @@ InternalSend::set_our_state (const XMLNode& node, int /*version*/) return 0; } -int -InternalSend::set_state (const XMLNode& node, int version) -{ - Send::set_state (node, version); - return set_our_state (node, version); -} - int InternalSend::connect_when_legal () { -- cgit v1.2.3