28 #include "ardour/debug.h"
45 PBD::Signal0<void> Delivery::PannersLegal;
46 bool Delivery::panners_legal =
false;
56 , _no_outs_cuz_we_no_monitor (false)
58 , _no_panner_reset (false)
76 :
IOProcessor(s, false, (role_requires_output_ports (r) ? true : false), name,
"",
DataType::AUDIO, (r ==
Send))
80 , _no_outs_cuz_we_no_monitor (false)
82 , _no_panner_reset (false)
118 return _(
"main outs");
150 fatal <<
"programming error: this should never be reached" <<
endmsg;
171 fatal <<
"programming error: this should never be reached" <<
endmsg;
176 fatal <<
"programming error: this should never be reached" <<
endmsg;
188 assert (!r &&
"trylock inside Delivery::configure_io");
198 if (
_output->n_ports() != out) {
200 _output->ensure_io (out,
false,
this);
210 if (
_input->n_ports() != in) {
212 fatal <<
_name <<
" programming error: configure_io called with " << in <<
" and " << out <<
" with " <<
_input->n_ports() <<
" input ports" <<
endmsg;
274 if (result_required) {
294 if (bufs.
count().
n_midi() > 0 && ports.count().n_midi () > 0) {
302 if (bufs.
count().
n_audio() > 0 && ports.count().n_audio () > 0) {
306 if (bufs.
count().
n_midi() > 0 && ports.count().n_midi () > 0) {
311 if (result_required) {
353 if ((prop = node.
property (
"role")) != 0) {
363 _panshell->set_state (*pan_node, version);
370 _panshell->pannable()->set_state (*pannnode, version);
388 return _output->n_ports().n_audio();
461 i->flush_buffers (nframes);
471 _panshell->pannable()->transport_stopped (now);
478 i->transport_stopped ();
490 i->realtime_locate ();
bool _pre_fader
true if this processor is currently placed before the Amp, otherwise false
int set_state(const XMLNode &, int version)
void no_outs_cuz_we_no_monitor(bool)
framecnt_t nominal_frame_rate() const
ARDOUR::Session & _session
LIBPBD_API Transmitter fatal
void run(BufferSet &bufs, framepos_t start_frame, framepos_t end_frame, pframes_t nframes, bool)
const std::string & value() const
Delivery(Session &s, boost::shared_ptr< IO > io, boost::shared_ptr< Pannable >, boost::shared_ptr< MuteMaster > mm, const std::string &name, Role)
bool ignore_output_change
LIBARDOUR_API uint64_t Destruction
virtual void transport_stopped(framepos_t now)
bool _no_outs_cuz_we_no_monitor
uint32_t pans_required() const
void flush_buffers(framecnt_t nframes)
void set_count(const ChanCount &count)
static int disable_panners(void)
XMLNode & state(bool full)
bool can_support_io_configuration(const ChanCount &in, ChanCount &out)
std::ostream & endmsg(std::ostream &ostr)
void read_from(const BufferSet &in, framecnt_t nframes)
static AudioEngine * instance()
boost::shared_ptr< IO > _output
void output_changed(IOChange, void *)
int set_state(const XMLNode &, int version)
ChanCount _configured_output
virtual uint32_t pan_outs() const
XMLProperty * property(const char *)
#define string_2_enum(str, e)
enum ARDOUR::IOChange::Type type
bool set_name(const std::string &str)
BufferSet & output_buffers()
static void reset_panners()
static void apply_simple_gain(BufferSet &bufs, framecnt_t nframes, gain_t target, bool midi_amp=true)
virtual bool configure_io(ChanCount in, ChanCount out)
#define DEBUG_TRACE(bits, str)
static ChanCount max(const ChanCount &a, const ChanCount &b)
bool set_name(const std::string &name)
PBD::Property< std::string > _name
static bool panners_legal
mute all post-fader sends
void get_backend_port_addresses(PortSet &, framecnt_t)
XMLProperty * add_property(const char *name, const std::string &value)
XMLNode & state(bool full_state)
Glib::Threads::Mutex & process_lock()
void add_child_nocopy(XMLNode &)
boost::shared_ptr< PannerShell > _panshell
BufferSet * _output_buffers
boost::shared_ptr< IO > _input
PBD::ScopedConnection panner_legal_c
const ChanCount & count() const
bool configure_io(ChanCount in, ChanCount out)
boost::shared_ptr< MuteMaster > _mute_master
void panners_became_legal()
XMLNode * child(const char *) const
static PBD::Signal0< void > PannersLegal
static const ChanCount ZERO
void transport_stopped(framepos_t frame)
boost::shared_ptr< Route > monitor_out() const
boost::shared_ptr< Panner > panner() const
std::string display_name() const
void attach_buffers(PortSet &ports)
std::string string_compose(const std::string &fmt, const T1 &o1)