add Slavable API for VCA assign/unassign
This commit is contained in:
parent
69f67b6198
commit
83e51ee69b
@ -57,6 +57,7 @@
|
|||||||
#include "ardour/soloable.h"
|
#include "ardour/soloable.h"
|
||||||
#include "ardour/solo_control.h"
|
#include "ardour/solo_control.h"
|
||||||
#include "ardour/solo_safe_control.h"
|
#include "ardour/solo_safe_control.h"
|
||||||
|
#include "ardour/slavable.h"
|
||||||
|
|
||||||
class RoutePinWindowProxy;
|
class RoutePinWindowProxy;
|
||||||
|
|
||||||
@ -83,13 +84,14 @@ class SoloIsolateControl;
|
|||||||
class PhaseControl;
|
class PhaseControl;
|
||||||
class MonitorControl;
|
class MonitorControl;
|
||||||
|
|
||||||
class LIBARDOUR_API Route : public Stripable,
|
class LIBARDOUR_API Route : public GraphNode,
|
||||||
|
public Stripable,
|
||||||
public Soloable,
|
public Soloable,
|
||||||
public Muteable,
|
public Muteable,
|
||||||
public Monitorable,
|
public Monitorable,
|
||||||
public Automatable,
|
public Automatable,
|
||||||
public RouteGroupMember,
|
public RouteGroupMember,
|
||||||
public GraphNode,
|
public Slavable,
|
||||||
public boost::enable_shared_from_this<Route>
|
public boost::enable_shared_from_this<Route>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@ -599,8 +601,6 @@ public:
|
|||||||
pframes_t nframes, int declick);
|
pframes_t nframes, int declick);
|
||||||
|
|
||||||
bool slaved_to (boost::shared_ptr<VCA>) const;
|
bool slaved_to (boost::shared_ptr<VCA>) const;
|
||||||
void vca_assign (boost::shared_ptr<VCA>);
|
|
||||||
void vca_unassign (boost::shared_ptr<VCA>);
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
friend class Session;
|
friend class Session;
|
||||||
@ -611,8 +611,11 @@ public:
|
|||||||
void curve_reallocate ();
|
void curve_reallocate ();
|
||||||
virtual void set_block_size (pframes_t nframes);
|
virtual void set_block_size (pframes_t nframes);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual framecnt_t check_initial_delay (framecnt_t nframes, framepos_t&) { return nframes; }
|
int assign_controls (boost::shared_ptr<VCA>);
|
||||||
|
int unassign_controls (boost::shared_ptr<VCA>);
|
||||||
|
|
||||||
|
virtual framecnt_t check_initial_delay (framecnt_t nframes, framepos_t&) { return nframes; }
|
||||||
|
|
||||||
void fill_buffers_with_input (BufferSet& bufs, boost::shared_ptr<IO> io, pframes_t nframes);
|
void fill_buffers_with_input (BufferSet& bufs, boost::shared_ptr<IO> io, pframes_t nframes);
|
||||||
|
|
||||||
|
@ -29,6 +29,7 @@
|
|||||||
#include "ardour/automatable.h"
|
#include "ardour/automatable.h"
|
||||||
#include "ardour/muteable.h"
|
#include "ardour/muteable.h"
|
||||||
#include "ardour/soloable.h"
|
#include "ardour/soloable.h"
|
||||||
|
#include "ardour/slavable.h"
|
||||||
#include "ardour/stripable.h"
|
#include "ardour/stripable.h"
|
||||||
|
|
||||||
namespace ARDOUR {
|
namespace ARDOUR {
|
||||||
@ -39,7 +40,7 @@ class SoloControl;
|
|||||||
class MuteControl;
|
class MuteControl;
|
||||||
class MonitorControl;
|
class MonitorControl;
|
||||||
|
|
||||||
class LIBARDOUR_API VCA : public Stripable, public Soloable, public Muteable, public Automatable, public boost::enable_shared_from_this<VCA> {
|
class LIBARDOUR_API VCA : public Stripable, public Soloable, public Muteable, public Automatable, public Slavable, public boost::enable_shared_from_this<VCA> {
|
||||||
public:
|
public:
|
||||||
VCA (Session& session, uint32_t num, const std::string& name);
|
VCA (Session& session, uint32_t num, const std::string& name);
|
||||||
~VCA();
|
~VCA();
|
||||||
@ -108,6 +109,10 @@ class LIBARDOUR_API VCA : public Stripable, public Soloable, public Muteable, pu
|
|||||||
virtual std::string send_name (uint32_t n) const { return std::string(); }
|
virtual std::string send_name (uint32_t n) const { return std::string(); }
|
||||||
virtual boost::shared_ptr<AutomationControl> master_send_enable_controllable () const { return boost::shared_ptr<AutomationControl>(); }
|
virtual boost::shared_ptr<AutomationControl> master_send_enable_controllable () const { return boost::shared_ptr<AutomationControl>(); }
|
||||||
|
|
||||||
|
protected:
|
||||||
|
int assign_controls (boost::shared_ptr<VCA>);
|
||||||
|
int unassign_controls (boost::shared_ptr<VCA>);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
uint32_t _number;
|
uint32_t _number;
|
||||||
|
|
||||||
|
@ -86,10 +86,10 @@ PBD::Signal3<int,boost::shared_ptr<Route>, boost::shared_ptr<PluginInsert>, Rout
|
|||||||
|
|
||||||
/** Base class for all routable/mixable objects (tracks and busses) */
|
/** Base class for all routable/mixable objects (tracks and busses) */
|
||||||
Route::Route (Session& sess, string name, Flag flg, DataType default_type)
|
Route::Route (Session& sess, string name, Flag flg, DataType default_type)
|
||||||
: Stripable (sess, name)
|
: GraphNode (sess._process_graph)
|
||||||
|
, Stripable (sess, name)
|
||||||
, Muteable (sess, name)
|
, Muteable (sess, name)
|
||||||
, Automatable (sess)
|
, Automatable (sess)
|
||||||
, GraphNode (sess._process_graph)
|
|
||||||
, _active (true)
|
, _active (true)
|
||||||
, _signal_latency (0)
|
, _signal_latency (0)
|
||||||
, _signal_latency_at_amp_position (0)
|
, _signal_latency_at_amp_position (0)
|
||||||
@ -5447,16 +5447,18 @@ Route::slaved_to (boost::shared_ptr<VCA> vca) const
|
|||||||
return _gain_control->slaved_to (vca->gain_control());
|
return _gain_control->slaved_to (vca->gain_control());
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
int
|
||||||
Route::vca_assign (boost::shared_ptr<VCA> vca)
|
Route::assign_controls (boost::shared_ptr<VCA> vca)
|
||||||
{
|
{
|
||||||
_gain_control->add_master (vca->gain_control());
|
_gain_control->add_master (vca->gain_control());
|
||||||
_solo_control->add_master (vca->solo_control());
|
_solo_control->add_master (vca->solo_control());
|
||||||
_mute_control->add_master (vca->mute_control());
|
_mute_control->add_master (vca->mute_control());
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
int
|
||||||
Route::vca_unassign (boost::shared_ptr<VCA> vca)
|
Route::unassign_controls (boost::shared_ptr<VCA> vca)
|
||||||
{
|
{
|
||||||
if (!vca) {
|
if (!vca) {
|
||||||
/* unassign from all */
|
/* unassign from all */
|
||||||
@ -5468,6 +5470,8 @@ Route::vca_unassign (boost::shared_ptr<VCA> vca)
|
|||||||
_solo_control->remove_master (vca->solo_control());
|
_solo_control->remove_master (vca->solo_control());
|
||||||
_mute_control->remove_master (vca->mute_control());
|
_mute_control->remove_master (vca->mute_control());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
|
@ -152,3 +152,30 @@ VCA::clear_all_solo_state ()
|
|||||||
{
|
{
|
||||||
_solo_control->clear_all_solo_state ();
|
_solo_control->clear_all_solo_state ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
VCA::assign_controls (boost::shared_ptr<VCA> vca)
|
||||||
|
{
|
||||||
|
_gain_control->add_master (vca->gain_control());
|
||||||
|
_solo_control->add_master (vca->solo_control());
|
||||||
|
_mute_control->add_master (vca->mute_control());
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
VCA::unassign_controls (boost::shared_ptr<VCA> vca)
|
||||||
|
{
|
||||||
|
if (!vca) {
|
||||||
|
/* unassign from all */
|
||||||
|
_gain_control->clear_masters ();
|
||||||
|
_solo_control->clear_masters ();
|
||||||
|
_mute_control->clear_masters ();
|
||||||
|
} else {
|
||||||
|
_gain_control->remove_master (vca->gain_control());
|
||||||
|
_solo_control->remove_master (vca->solo_control());
|
||||||
|
_mute_control->remove_master (vca->mute_control());
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
@ -211,6 +211,7 @@ libardour_sources = [
|
|||||||
'session_transport.cc',
|
'session_transport.cc',
|
||||||
'sidechain.cc',
|
'sidechain.cc',
|
||||||
'slave.cc',
|
'slave.cc',
|
||||||
|
'slavable.cc',
|
||||||
'slavable_automation_control.cc',
|
'slavable_automation_control.cc',
|
||||||
'smf_source.cc',
|
'smf_source.cc',
|
||||||
'sndfile_helpers.cc',
|
'sndfile_helpers.cc',
|
||||||
|
Loading…
Reference in New Issue
Block a user