ardour
route.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2000-2002 Paul Davis
3 
4  This program is free software; you can redistribute it and/or modify
5  it under the terms of the GNU General Public License as published by
6  the Free Software Foundation; either version 2 of the License, or
7  (at your option) any later version.
8 
9  This program is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  GNU General Public License for more details.
13 
14  You should have received a copy of the GNU General Public License
15  along with this program; if not, write to the Free Software
16  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17 
18 */
19 
20 #ifndef __ardour_route_h__
21 #define __ardour_route_h__
22 
23 #include <cmath>
24 #include <cstring>
25 #include <list>
26 #include <map>
27 #include <set>
28 #include <string>
29 
30 #include <boost/shared_ptr.hpp>
31 #include <boost/weak_ptr.hpp>
32 #include <boost/dynamic_bitset.hpp>
33 #include <boost/enable_shared_from_this.hpp>
34 
35 #include <glibmm/threads.h>
36 #include "pbd/fastlog.h"
37 #include "pbd/xml++.h"
38 #include "pbd/undo.h"
39 #include "pbd/stateful.h"
40 #include "pbd/controllable.h"
41 #include "pbd/destructible.h"
42 
43 #include "ardour/ardour.h"
44 #include "ardour/instrument_info.h"
45 #include "ardour/io.h"
47 #include "ardour/types.h"
48 #include "ardour/mute_master.h"
50 #include "ardour/graphnode.h"
51 #include "ardour/automatable.h"
53 
54 namespace ARDOUR {
55 
56 class Amp;
57 class DelayLine;
58 class Delivery;
59 class IOProcessor;
60 class Panner;
61 class PannerShell;
62 class PortSet;
63 class Processor;
64 class RouteGroup;
65 class Send;
66 class InternalReturn;
67 class MonitorProcessor;
68 class Pannable;
69 class CapturingProcessor;
70 class InternalSend;
71 
73 {
74  public:
75 
76  typedef std::list<boost::shared_ptr<Processor> > ProcessorList;
77 
78  enum Flag {
79  Auditioner = 0x1,
80  MasterOut = 0x2,
81  MonitorOut = 0x4
82  };
83 
84  Route (Session&, std::string name, Flag flags = Flag(0), DataType default_type = DataType::AUDIO);
85  virtual ~Route();
86 
87  virtual int init ();
88 
89  boost::shared_ptr<IO> input() const { return _input; }
90  boost::shared_ptr<IO> output() const { return _output; }
91 
92  ChanCount n_inputs() const { return _input->n_ports(); }
93  ChanCount n_outputs() const { return _output->n_ports(); }
94 
95  bool active() const { return _active; }
96  void set_active (bool yn, void *);
97 
98  static std::string ensure_track_or_route_name(std::string, Session &);
99 
100  std::string comment() { return _comment; }
101  void set_comment (std::string str, void *src);
102 
103  bool set_name (const std::string& str);
104  static void set_name_in_state (XMLNode &, const std::string &);
105 
106  uint32_t order_key () const;
107  bool has_order_key () const;
108  void set_order_key (uint32_t);
109 
110  bool is_auditioner() const { return _flags & Auditioner; }
111  bool is_master() const { return _flags & MasterOut; }
112  bool is_monitor() const { return _flags & MonitorOut; }
113 
114  virtual MonitorState monitoring_state () const;
115  virtual MeterState metering_state () const;
116 
117  /* these are the core of the API of a Route. see the protected sections as well */
118 
119  virtual int roll (pframes_t nframes, framepos_t start_frame, framepos_t end_frame,
120  int declick, bool& need_butler);
121 
122  virtual int no_roll (pframes_t nframes, framepos_t start_frame, framepos_t end_frame,
123  bool state_changing);
124 
125  virtual int silent_roll (pframes_t nframes, framepos_t start_frame, framepos_t end_frame,
126  bool& need_butler);
127 
128  virtual bool can_record() { return false; }
129 
130  virtual void set_record_enabled (bool /*yn*/, void * /*src*/) {}
131  virtual bool record_enabled() const { return false; }
132  virtual void nonrealtime_handle_transport_stopped (bool abort, bool did_locate, bool flush_processors);
134  virtual void realtime_locate () {}
135  virtual void non_realtime_locate (framepos_t);
136  virtual void set_pending_declick (int);
137 
138  /* end of vfunc-based API */
139 
140  void shift (framepos_t, framecnt_t);
141 
142  void set_gain (gain_t val, void *src);
143  void inc_gain (gain_t delta, void *src);
144 
145  void set_trim (gain_t val, void *src);
146  void inc_trim (gain_t delta, void *src);
147 
148  void set_mute_points (MuteMaster::MutePoint);
149  MuteMaster::MutePoint mute_points () const;
150 
151  bool muted () const;
152  void set_mute (bool yn, void* src);
153 
154  /* controls use set_solo() to modify this route's solo state
155  */
156 
157  void set_solo (bool yn, void *src);
158  bool soloed () const { return self_soloed () || soloed_by_others (); }
159  void cancel_solo_after_disconnect (bool upstream);
160 
161  bool soloed_by_others () const { return _soloed_by_others_upstream||_soloed_by_others_downstream; }
162  bool soloed_by_others_upstream () const { return _soloed_by_others_upstream; }
163  bool soloed_by_others_downstream () const { return _soloed_by_others_downstream; }
164  bool self_soloed () const { return _self_solo; }
165 
166  void set_solo_isolated (bool yn, void *src);
167  bool solo_isolated() const;
168 
169  void set_solo_safe (bool yn, void *src);
170  bool solo_safe() const;
171 
172  void set_listen (bool yn, void* src);
173  bool listening_via_monitor () const;
174  void enable_monitor_send ();
175 
176  void set_phase_invert (uint32_t, bool yn);
177  void set_phase_invert (boost::dynamic_bitset<>);
178  bool phase_invert (uint32_t) const;
179  boost::dynamic_bitset<> phase_invert () const;
180 
181  void set_denormal_protection (bool yn);
182  bool denormal_protection() const;
183 
184  void set_meter_point (MeterPoint, bool force = false);
185  bool apply_processor_changes_rt ();
186  void emit_pending_signals ();
187  MeterPoint meter_point() const { return _pending_meter_point; }
188 
189  void set_meter_type (MeterType t) { _meter_type = t; }
190  MeterType meter_type() const { return _meter_type; }
191 
192  /* Processors */
193 
194  boost::shared_ptr<Amp> amp() const { return _amp; }
195  boost::shared_ptr<Amp> trim() const { return _trim; }
196  PeakMeter& peak_meter() { return *_meter.get(); }
197  const PeakMeter& peak_meter() const { return *_meter.get(); }
199  boost::shared_ptr<DelayLine> delay_line() const { return _delayline; }
200 
201  void flush_processors ();
202 
203  void foreach_processor (boost::function<void(boost::weak_ptr<Processor>)> method) {
204  Glib::Threads::RWLock::ReaderLock lm (_processor_lock);
205  for (ProcessorList::iterator i = _processors.begin(); i != _processors.end(); ++i) {
206  if (boost::dynamic_pointer_cast<UnknownProcessor> (*i)) {
207  break;
208  }
209  method (boost::weak_ptr<Processor> (*i));
210  }
211  }
212 
214  Glib::Threads::RWLock::ReaderLock lm (_processor_lock);
215  ProcessorList::iterator i;
216  for (i = _processors.begin(); i != _processors.end() && n; ++i, --n) {}
217  if (i == _processors.end()) {
219  } else {
220  return *i;
221  }
222  }
223 
224  boost::shared_ptr<Processor> processor_by_id (PBD::ID) const;
225 
226  boost::shared_ptr<Processor> nth_plugin (uint32_t n);
227  boost::shared_ptr<Processor> nth_send (uint32_t n);
228 
229  bool has_io_processor_named (const std::string&);
230  ChanCount max_processor_streams () const { return processor_max_streams; }
231 
232  std::list<std::string> unknown_processors () const;
233 
234  /* special processors */
235 
236  boost::shared_ptr<InternalSend> monitor_send() const { return _monitor_send; }
237  boost::shared_ptr<Delivery> main_outs() const { return _main_outs; }
238  boost::shared_ptr<InternalReturn> internal_return() const { return _intreturn; }
239  boost::shared_ptr<MonitorProcessor> monitor_control() const { return _monitor_control; }
240  boost::shared_ptr<Send> internal_send_for (boost::shared_ptr<const Route> target) const;
241  void add_internal_return ();
242  void add_send_to_internal_return (InternalSend *);
243  void remove_send_from_internal_return (InternalSend *);
244  void listen_position_changed ();
245  boost::shared_ptr<CapturingProcessor> add_export_point(/* Add some argument for placement later */);
246 
251  ProcessorStreams(size_t i=0, ChanCount c=ChanCount()) : index(i), count(c) {}
252 
253  uint32_t index;
255  };
256 
257  int add_processor (boost::shared_ptr<Processor>, Placement placement, ProcessorStreams* err = 0, bool activation_allowed = true);
258  int add_processor_by_index (boost::shared_ptr<Processor>, int, ProcessorStreams* err = 0, bool activation_allowed = true);
259  int add_processor (boost::shared_ptr<Processor>, boost::shared_ptr<Processor>, ProcessorStreams* err = 0, bool activation_allowed = true);
260  int add_processors (const ProcessorList&, boost::shared_ptr<Processor>, ProcessorStreams* err = 0);
261  boost::shared_ptr<Processor> before_processor_for_placement (Placement);
262  boost::shared_ptr<Processor> before_processor_for_index (int);
263  bool processors_reorder_needs_configure (const ProcessorList& new_order);
264  int remove_processor (boost::shared_ptr<Processor>, ProcessorStreams* err = 0, bool need_process_lock = true);
265  int remove_processors (const ProcessorList&, ProcessorStreams* err = 0);
266  int reorder_processors (const ProcessorList& new_order, ProcessorStreams* err = 0);
267  void disable_processors (Placement);
268  void disable_processors ();
269  void disable_plugins (Placement);
270  void disable_plugins ();
271  void ab_plugins (bool forward);
272  void clear_processors (Placement);
273  void all_visible_processors_active (bool);
274 
275  framecnt_t set_private_port_latencies (bool playback) const;
276  void set_public_port_latencies (framecnt_t, bool playback) const;
277 
278  framecnt_t update_signal_latency();
279  virtual void set_latency_compensation (framecnt_t);
280 
281  void set_user_latency (framecnt_t);
282  framecnt_t initial_delay() const { return _initial_delay; }
283  framecnt_t signal_latency() const { return _signal_latency; }
284 
285  PBD::Signal0<void> active_changed;
286  PBD::Signal0<void> phase_invert_changed;
287  PBD::Signal0<void> denormal_protection_changed;
288  PBD::Signal1<void,void*> listen_changed;
289  PBD::Signal2<void,bool,void*> solo_changed;
290  PBD::Signal1<void,void*> solo_safe_changed;
291  PBD::Signal1<void,void*> solo_isolated_changed;
292  PBD::Signal1<void,void*> comment_changed;
293  PBD::Signal1<void,void*> mute_changed;
294  PBD::Signal0<void> mute_points_changed;
295 
301  PBD::Signal0<void> track_number_changed;
302  int64_t track_number() const { return _track_number; }
303 
304  void set_track_number(int64_t tn) {
305  if (tn == _track_number) { return; }
306  _track_number = tn;
307  track_number_changed();
308  PropertyChanged (ARDOUR::Properties::name);
309  }
310 
312  PBD::Signal1<void,RouteProcessorChange> processors_changed;
313  PBD::Signal1<void,void*> record_enable_changed;
315  PBD::Signal0<void> meter_change;
316  PBD::Signal0<void> signal_latency_changed;
317  PBD::Signal0<void> initial_delay_changed;
318 
320  PBD::Signal0<void> io_changed;
321 
322  /* gui's call this for their own purposes. */
323 
324  PBD::Signal2<void,std::string,void*> gui_changed;
325 
326  /* stateful */
327 
328  XMLNode& get_state();
329  virtual int set_state (const XMLNode&, int version);
330  virtual XMLNode& get_template();
331 
332  XMLNode& get_processor_state ();
333  virtual void set_processor_state (const XMLNode&);
334 
335  int save_as_template (const std::string& path, const std::string& name);
336 
337  PBD::Signal1<void,void*> SelectedChanged;
338 
340  void remove_aux_or_listen (boost::shared_ptr<Route>);
341 
346  bool feeds (boost::shared_ptr<Route>, bool* via_send_only = 0);
347 
353  bool direct_feeds_according_to_reality (boost::shared_ptr<Route>, bool* via_send_only = 0);
354 
360  bool direct_feeds_according_to_graph (boost::shared_ptr<Route>, bool* via_send_only = 0);
361 
362  struct FeedRecord {
365 
367  : r (rp)
368  , sends_only (sendsonly) {}
369  };
370 
372  bool operator() (const FeedRecord& a, const FeedRecord& b) const {
373  return a.r < b.r;
374  }
375  };
376 
377  typedef std::set<FeedRecord,FeedRecordCompare> FedBy;
378 
379  const FedBy& fed_by() const { return _fed_by; }
380  void clear_fed_by ();
381  bool add_fed_by (boost::shared_ptr<Route>, bool sends_only);
382 
383  /* Controls (not all directly owned by the Route */
384 
385  boost::shared_ptr<AutomationControl> get_control (const Evoral::Parameter& param);
386 
388  public:
389  SoloControllable (std::string name, boost::shared_ptr<Route>);
390  void set_value (double);
391  double get_value () const;
392 
393  private:
395  };
396 
398  public:
399  MuteControllable (std::string name, boost::shared_ptr<Route>);
400  void set_value (double);
401  double get_value () const;
402 
403  /* Pretend to change value, but do not affect actual route mute. */
404  void set_superficial_value(bool muted);
405 
406  private:
408  };
409 
411  return _solo_control;
412  }
413 
415  return _mute_control;
416  }
417 
419  return _mute_master;
420  }
421 
422  /* Route doesn't own these items, but sub-objects that it does own have them
423  and to make UI code a bit simpler, we provide direct access to them
424  here.
425  */
426 
427  boost::shared_ptr<Panner> panner() const; /* may return null */
428  boost::shared_ptr<PannerShell> panner_shell() const;
429  boost::shared_ptr<AutomationControl> gain_control() const;
430  boost::shared_ptr<Pannable> pannable() const;
431 
439  boost::shared_ptr<Processor> the_instrument() const;
440  InstrumentInfo& instrument_info() { return _instrument_info; }
441 
442  void protect_automation ();
443 
444  enum {
445  /* These numbers are taken from MIDI Machine Control,
446  which can only control up to 317 tracks without
447  doing sysex segmentation.
448  */
449  MasterBusRemoteControlID = 318,
450  MonitorBusRemoteControlID = 319,
451  };
452 
453  void set_remote_control_id (uint32_t id, bool notify_class_listeners = true);
454  uint32_t remote_control_id () const;
455  void set_remote_control_id_explicit (uint32_t order_key);
456 
457  /* for things concerned about *this* route's RID */
458 
459  PBD::Signal0<void> RemoteControlIDChanged;
460 
461  /* for things concerned about *any* route's RID changes */
462 
463  static PBD::Signal0<void> RemoteControlIDChange;
464  static PBD::Signal0<void> SyncOrderKeys;
465 
466  bool has_external_redirects() const;
467 
468  /* can only be executed by a route for which is_monitor() is true
469  (i.e. the monitor out)
470  */
471  void monitor_run (framepos_t start_frame, framepos_t end_frame,
472  pframes_t nframes, int declick);
473 
474  protected:
475  friend class Session;
476 
477  void catch_up_on_solo_mute_override ();
478  void mod_solo_by_others_upstream (int32_t);
479  void mod_solo_by_others_downstream (int32_t);
480  void curve_reallocate ();
481  virtual void set_block_size (pframes_t nframes);
482 
483  protected:
484  virtual framecnt_t check_initial_delay (framecnt_t nframes, framepos_t&) { return nframes; }
485 
486  void fill_buffers_with_input (BufferSet& bufs, boost::shared_ptr<IO> io, pframes_t nframes);
487 
488  void passthru (BufferSet&, framepos_t start_frame, framepos_t end_frame,
489  pframes_t nframes, int declick);
490 
491  virtual void write_out_of_band_data (BufferSet& /* bufs */, framepos_t /* start_frame */, framepos_t /* end_frame */,
492  framecnt_t /* nframes */) {}
493 
494  virtual void process_output_buffers (BufferSet& bufs,
495  framepos_t start_frame, framepos_t end_frame,
496  pframes_t nframes, int declick,
497  bool gain_automation_ok);
498 
499  virtual void bounce_process (BufferSet& bufs,
500  framepos_t start_frame, framecnt_t nframes,
501  boost::shared_ptr<Processor> endpoint, bool include_endpoint,
502  bool for_export, bool for_freeze);
503 
504  framecnt_t bounce_get_latency (boost::shared_ptr<Processor> endpoint, bool include_endpoint, bool for_export, bool for_freeze) const;
505  ChanCount bounce_get_output_streams (ChanCount &cc, boost::shared_ptr<Processor> endpoint, bool include_endpoint, bool for_export, bool for_freeze) const;
506 
509 
510  bool _active;
516 
517  ProcessorList _processors;
518  mutable Glib::Threads::RWLock _processor_lock;
524 
525  enum {
526  EmitNone = 0x00,
527  EmitMeterChanged = 0x01,
528  EmitMeterVisibilityChange = 0x02,
529  EmitRtProcessorChange = 0x04
530  };
531 
533  gint _pending_process_reorder; // atomic
534  gint _pending_signals; // atomic
535 
541  boost::dynamic_bitset<> _phase_invert;
545  uint32_t _solo_isolated;
546 
548 
549  bool _recordable : 1;
550  bool _silent : 1;
551  bool _declickable : 1;
552 
556 
557  virtual void act_on_mute () {}
558 
559  std::string _comment;
563  FedBy _fed_by;
564 
566 
567  virtual ChanCount input_streams () const;
568 
569  protected:
570  virtual XMLNode& state(bool);
571 
572  int configure_processors (ProcessorStreams*);
573 
574  void passthru_silence (framepos_t start_frame, framepos_t end_frame,
575  pframes_t nframes, int declick);
576 
577  void silence (framecnt_t);
578  void silence_unlocked (framecnt_t);
579 
582 
583  uint32_t pans_required() const;
584  ChanCount n_process_buffers ();
585 
586  virtual void maybe_declick (BufferSet&, framecnt_t, int);
587 
592 
593  boost::shared_ptr<Processor> the_instrument_unlocked() const;
594 
595  private:
596  int set_state_2X (const XMLNode&, int);
597  void set_processor_state_2X (XMLNodeList const &, int);
598 
599  uint32_t _order_key;
602 
603  int64_t _track_number;
604 
605  void input_change_handler (IOChange, void *src);
606  void output_change_handler (IOChange, void *src);
607 
608  bool input_port_count_changing (ChanCount);
609  bool output_port_count_changing (ChanCount);
610 
613 
614  int configure_processors_unlocked (ProcessorStreams*);
615  bool set_meter_point_unlocked ();
616  void apply_processor_order (const ProcessorList& new_order);
617 
618  std::list<std::pair<ChanCount, ChanCount> > try_configure_processors (ChanCount, ProcessorStreams *);
619  std::list<std::pair<ChanCount, ChanCount> > try_configure_processors_unlocked (ChanCount, ProcessorStreams *);
620 
621  bool add_processor_from_xml_2X (const XMLNode&, int);
622 
623  void placement_range (Placement p, ProcessorList::iterator& start, ProcessorList::iterator& end);
624 
625  void set_self_solo (bool yn);
626  void set_mute_master_solo ();
627 
628  void set_processor_positions ();
629  framecnt_t update_port_latencies (PortSet& ports, PortSet& feeders, bool playback, framecnt_t) const;
630 
631  void setup_invisible_processors ();
632  void unpan ();
633 
635 
640  public:
642  : _route (r)
643  , _processors (r->_processors)
644  , _processor_max_streams (r->processor_max_streams)
645  { }
646 
647  void restore () {
648  _route->_processors = _processors;
649  _route->processor_max_streams = _processor_max_streams;
650  }
651 
652  private:
653  /* this should perhaps be a shared_ptr, but ProcessorStates will
654  not hang around long enough for it to matter.
655  */
657  ProcessorList _processors;
659  };
660 
661  friend class ProcessorState;
662 
663  /* no copy construction */
664  Route (Route const &);
665 
666  void maybe_note_meter_position ();
667 
674 
675  void reset_instrument_info ();
676 
677  void set_remote_control_id_internal (uint32_t id, bool notify_class_listeners = true);
678 };
679 
680 } // namespace ARDOUR
681 
682 #endif /* __ardour_route_h__ */
boost::shared_ptr< InternalReturn > internal_return() const
Definition: route.h:238
boost::shared_ptr< Pannable > _pannable
Definition: route.h:523
PBD::Signal1< void, void * > record_enable_changed
Definition: route.h:313
PBD::Signal0< void > initial_delay_changed
Definition: route.h:317
bool _in_configure_processors
Definition: route.h:611
MeterPoint _meter_point
Definition: route.h:538
bool soloed_by_others_downstream() const
Definition: route.h:163
bool _initial_io_setup
Definition: route.h:612
ProcessorList _pending_processor_order
Definition: route.h:532
bool _solo_safe
Definition: route.h:561
virtual void set_record_enabled(bool, void *)
Definition: route.h:130
boost::shared_ptr< Delivery > _main_outs
Definition: route.h:519
MeterPoint meter_point() const
Definition: route.h:187
boost::shared_ptr< Amp > amp() const
Definition: route.h:194
boost::shared_ptr< InternalSend > monitor_send() const
Definition: route.h:236
boost::shared_ptr< Amp > _amp
Definition: route.h:588
MeterState
Definition: types.h:399
LIBARDOUR_API PBD::PropertyDescriptor< std::string > name
PBD::Signal0< void > meter_change
Definition: route.h:315
boost::shared_ptr< MonitorProcessor > _monitor_control
Definition: route.h:522
int _pending_declick
Definition: route.h:537
void set_meter_type(MeterType t)
Definition: route.h:189
bool _self_solo
Definition: route.h:542
PBD::Signal1< void, void * > comment_changed
Definition: route.h:292
MeterPoint _pending_meter_point
Definition: route.h:539
const FedBy & fed_by() const
Definition: route.h:379
PBD::Signal0< void > io_changed
Definition: route.h:320
uint32_t pframes_t
Definition: types.h:61
void set_track_number(int64_t tn)
Definition: route.h:304
bool _active
Definition: route.h:510
bool _have_internal_generator
Definition: route.h:560
ProcessorList _processors
Definition: route.h:517
float gain_t
Definition: types.h:58
boost::shared_ptr< MonitorProcessor > monitor_control() const
Definition: route.h:239
bool is_auditioner() const
Definition: route.h:110
boost::shared_ptr< PeakMeter > shared_peak_meter() const
Definition: route.h:198
boost::shared_ptr< MuteMaster > mute_master() const
Definition: route.h:418
LIBARDOUR_API PBD::PropertyDescriptor< framepos_t > start
Definition: region.cc:63
InstrumentInfo _instrument_info
Definition: route.h:565
virtual bool can_record()
Definition: route.h:128
PBD::Signal1< void, void * > solo_isolated_changed
Definition: route.h:291
virtual void realtime_locate()
Definition: route.h:134
uint32_t _soloed_by_others_upstream
Definition: route.h:543
boost::shared_ptr< DelayLine > _delayline
Definition: route.h:591
framecnt_t signal_latency() const
Definition: route.h:283
virtual void write_out_of_band_data(BufferSet &, framepos_t, framepos_t, framecnt_t)
Definition: route.h:491
static PBD::Signal0< void > RemoteControlIDChange
Definition: route.h:463
FedBy _fed_by
Definition: route.h:563
boost::weak_ptr< Processor > _processor_after_last_custom_meter
Definition: route.h:673
Definition: id.h:32
boost::shared_ptr< PeakMeter > _meter
Definition: route.h:590
std::list< XMLNode * > XMLNodeList
Definition: xml++.h:44
framecnt_t _signal_latency_at_trim_position
Definition: route.h:513
gint _pending_signals
Definition: route.h:534
boost::shared_ptr< Amp > trim() const
Definition: route.h:195
ChanCount processor_out_streams
Definition: route.h:581
bool soloed() const
Definition: route.h:158
boost::shared_ptr< MuteControllable > _mute_control
Definition: route.h:554
int64_t track_number() const
Definition: route.h:302
const PeakMeter & peak_meter() const
Definition: route.h:197
PBD::Signal1< void, void * > solo_safe_changed
Definition: route.h:290
std::string comment()
Definition: route.h:100
virtual bool record_enabled() const
Definition: route.h:131
boost::shared_ptr< InternalReturn > _intreturn
Definition: route.h:521
int64_t framecnt_t
Definition: types.h:76
PBD::Signal2< void, std::string, void * > gui_changed
Definition: route.h:324
PBD::Signal0< void > track_number_changed
Definition: route.h:301
boost::shared_ptr< IO > _output
Definition: route.h:508
virtual void act_on_mute()
Definition: route.h:557
PBD::Signal1< void, void * > SelectedChanged
Definition: route.h:337
PBD::Signal0< void > RemoteControlIDChanged
Definition: route.h:459
LIBARDOUR_API PBD::PropertyDescriptor< float > shift
Definition: region.cc:71
ChanCount _processor_max_streams
Definition: route.h:658
MeterType
Definition: types.h:182
boost::shared_ptr< InternalSend > _monitor_send
Definition: route.h:520
boost::shared_ptr< Delivery > main_outs() const
Definition: route.h:237
Definition: amp.h:29
MonitorState
Definition: types.h:393
FeedRecord(boost::shared_ptr< Route > rp, bool sendsonly)
Definition: route.h:366
bool _custom_meter_position_noted
Definition: route.h:669
PBD::Signal0< void > denormal_protection_changed
Definition: route.h:287
ChanCount n_outputs() const
Definition: route.h:93
PBD::Signal0< void > active_changed
Definition: route.h:285
boost::dynamic_bitset _phase_invert
Definition: route.h:541
uint32_t _remote_control_id
Definition: route.h:601
bool _has_order_key
Definition: route.h:600
PBD::Signal1< void, void * > listen_changed
Definition: route.h:288
ChanCount processor_max_streams
Definition: route.h:580
void foreach_processor(boost::function< void(boost::weak_ptr< Processor >)> method)
Definition: route.h:203
uint32_t _soloed_by_others_downstream
Definition: route.h:544
framecnt_t _signal_latency
Definition: route.h:511
bool self_soloed() const
Definition: route.h:164
framecnt_t initial_delay() const
Definition: route.h:282
int64_t framepos_t
Definition: types.h:66
bool _denormal_protection
Definition: route.h:547
boost::shared_ptr< SoloControllable > _solo_control
Definition: route.h:553
std::string _comment
Definition: route.h:559
ChanCount n_inputs() const
Definition: route.h:92
virtual void realtime_handle_transport_stopped()
Definition: route.h:133
PBD::Signal0< void > mute_points_changed
Definition: route.h:294
PBD::Signal2< void, bool, void * > solo_changed
Definition: route.h:289
boost::weak_ptr< Route > _route
Definition: route.h:394
DataType _default_type
Definition: route.h:562
bool soloed_by_others() const
Definition: route.h:161
#define LIBARDOUR_API
bool active() const
Definition: route.h:95
boost::shared_ptr< Amp > _trim
Definition: route.h:589
ChanCount count
Input requested of processor.
Definition: route.h:254
boost::shared_ptr< IO > _input
Definition: route.h:507
uint32_t index
Index of processor where configuration failed.
Definition: route.h:253
PBD::Signal1< void, RouteProcessorChange > processors_changed
Definition: route.h:312
const char * name
static PBD::Signal0< void > SyncOrderKeys
Definition: route.h:464
bool soloed_by_others_upstream() const
Definition: route.h:162
int64_t _track_number
Definition: route.h:603
PBD::Signal1< void, void * > mute_changed
Definition: route.h:293
bool is_master() const
Definition: route.h:111
boost::shared_ptr< SoloControllable > solo_control() const
Definition: route.h:410
Definition: xml++.h:95
MeterType meter_type() const
Definition: route.h:190
std::list< boost::shared_ptr< Processor > > ProcessorList
Definition: route.h:76
framecnt_t _signal_latency_at_amp_position
Definition: route.h:512
std::set< FeedRecord, FeedRecordCompare > FedBy
Definition: route.h:377
boost::weak_ptr< Route > _route
Definition: route.h:407
boost::shared_ptr< MuteControllable > mute_control() const
Definition: route.h:414
boost::weak_ptr< Route > r
Definition: route.h:363
Flag _flags
Definition: route.h:536
boost::shared_ptr< IO > input() const
Definition: route.h:89
ProcessorStreams(size_t i=0, ChanCount c=ChanCount())
Definition: route.h:251
boost::shared_ptr< DelayLine > delay_line() const
Definition: route.h:199
virtual framecnt_t check_initial_delay(framecnt_t nframes, framepos_t &)
Definition: route.h:484
boost::shared_ptr< MuteMaster > _mute_master
Definition: route.h:555
InstrumentInfo & instrument_info()
Definition: route.h:440
boost::shared_ptr< IO > output() const
Definition: route.h:90
framecnt_t _initial_delay
Definition: route.h:514
Glib::Threads::RWLock _processor_lock
Definition: route.h:518
gint _pending_process_reorder
Definition: route.h:533
uint32_t _solo_isolated
Definition: route.h:545
uint32_t _order_key
Definition: route.h:599
static LilvNode * get_value(LilvWorld *world, const LilvNode *subject, const LilvNode *predicate)
Definition: lv2_plugin.cc:971
framecnt_t _roll_delay
Definition: route.h:515
MeterPoint
Definition: types.h:174
ChanCount max_processor_streams() const
Definition: route.h:230
MeterType _meter_type
Definition: route.h:540
boost::shared_ptr< CapturingProcessor > _capturing_processor
Definition: route.h:634
PeakMeter & peak_meter()
Definition: route.h:196
ProcessorList _processors
Definition: route.h:657
Placement
Definition: types.h:375
PBD::Signal0< void > phase_invert_changed
Definition: route.h:286
LIBARDOUR_API bool init(bool with_vst, bool try_optimization, const char *localedir)
Definition: globals.cc:376
boost::shared_ptr< Processor > nth_processor(uint32_t n)
Definition: route.h:213
LIBARDOUR_API PBD::PropertyDescriptor< bool > muted
Definition: region.cc:49
bool is_monitor() const
Definition: route.h:112
PBD::Signal0< void > signal_latency_changed
Definition: route.h:316