ardour
send.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2000 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_send_h__
21 #define __ardour_send_h__
22 
23 #include <string>
24 
25 #include "pbd/stateful.h"
26 
27 #include "ardour/ardour.h"
28 #include "ardour/delivery.h"
29 #include "ardour/delayline.h"
30 
31 namespace ARDOUR {
32 
33 class PeakMeter;
34 class Amp;
35 
36 class LIBARDOUR_API Send : public Delivery
37 {
38  public:
40  virtual ~Send ();
41 
42  uint32_t bit_slot() const { return _bitslot; }
43 
44  bool display_to_user() const;
45 
46  boost::shared_ptr<Amp> amp() const { return _amp; }
47  boost::shared_ptr<PeakMeter> meter() const { return _meter; }
48 
49  bool metering() const { return _metering; }
50  void set_metering (bool yn) { _metering = yn; }
51 
52  XMLNode& state (bool full);
53  XMLNode& get_state ();
54  int set_state(const XMLNode&, int version);
55 
56  uint32_t pans_required() const { return _configured_input.n_audio(); }
57 
58  void run (BufferSet& bufs, framepos_t start_frame, framepos_t end_frame, pframes_t nframes, bool);
59 
60  bool can_support_io_configuration (const ChanCount& in, ChanCount& out);
61  bool configure_io (ChanCount in, ChanCount out);
62 
63  /* latency compensation */
64  void set_delay_in (framecnt_t);
65  void set_delay_out (framecnt_t);
66  framecnt_t get_delay_in () const { return _delay_in; }
67  framecnt_t get_delay_out () const { return _delay_out; }
68 
69  void activate ();
70  void deactivate ();
71 
72  bool set_name (const std::string& str);
73 
75 
76  static uint32_t how_many_sends();
77  static std::string name_and_id_new_send (Session&, Delivery::Role r, uint32_t&, bool);
78 
79  protected:
80  bool _metering;
84 
85  private:
86  /* disallow copy construction */
87  Send (const Send&);
88  void panshell_changed ();
89 
90  int set_state_2X (XMLNode const &, int);
91 
92  uint32_t _bitslot;
93 
96 };
97 
98 } // namespace ARDOUR
99 
100 #endif /* __ardour_send_h__ */
uint32_t pans_required() const
Definition: send.h:56
boost::shared_ptr< PeakMeter > _meter
Definition: send.h:82
std::string value_as_string(const ARDOUR::ParameterDescriptor &desc, double v)
framecnt_t _delay_in
Definition: send.h:94
uint32_t pframes_t
Definition: types.h:61
uint32_t _bitslot
Definition: send.h:92
bool _metering
Definition: send.h:80
framecnt_t get_delay_out() const
Definition: send.h:67
void set_metering(bool yn)
Definition: send.h:50
int64_t framecnt_t
Definition: types.h:76
bool metering() const
Definition: send.h:49
boost::shared_ptr< PeakMeter > meter() const
Definition: send.h:47
Definition: amp.h:29
framecnt_t _delay_out
Definition: send.h:95
boost::shared_ptr< Amp > _amp
Definition: send.h:81
int64_t framepos_t
Definition: types.h:66
boost::shared_ptr< DelayLine > _delayline
Definition: send.h:83
framecnt_t get_delay_in() const
Definition: send.h:66
#define LIBARDOUR_API
uint32_t bit_slot() const
Definition: send.h:42
boost::shared_ptr< Amp > amp() const
Definition: send.h:46
Definition: xml++.h:95