ardour
return.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2009 Paul Davis
3  Author: David Robillard
4 
5  This program is free software; you can redistribute it and/or modify
6  it under the terms of the GNU General Public License as published by
7  the Free Software Foundation; either version 2 of the License, or
8  (at your option) any later version.
9 
10  This program is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  GNU General Public License for more details.
14 
15  You should have received a copy of the GNU General Public License
16  along with this program; if not, write to the Free Software
17  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18 
19 */
20 
21 #ifndef __ardour_return_h__
22 #define __ardour_return_h__
23 
24 #include <string>
25 
26 
27 #include "pbd/stateful.h"
28 #include "ardour/ardour.h"
29 #include "ardour/io_processor.h"
30 
31 namespace ARDOUR {
32 
33 class Amp;
34 class PeakMeter;
35 
36 
38 {
39 public:
40  Return (Session&, bool internal = false);
41  virtual ~Return ();
42 
43  uint32_t bit_slot() const { return _bitslot; }
44 
45  void run (BufferSet& bufs, framepos_t start_frame, framepos_t end_frame, pframes_t nframes, bool);
46 
47  boost::shared_ptr<Amp> amp() const { return _amp; }
48  boost::shared_ptr<PeakMeter> meter() const { return _meter; }
49 
50  bool metering() const { return _metering; }
51  void set_metering (bool yn) { _metering = yn; }
52 
53  XMLNode& state(bool full);
54  XMLNode& get_state(void);
55  int set_state(const XMLNode&, int version);
56 
57  uint32_t pans_required() const { return _configured_input.n_audio(); }
58 
59  bool can_support_io_configuration (const ChanCount& in, ChanCount& out);
60  bool configure_io (ChanCount in, ChanCount out);
61 
62  static uint32_t how_many_returns();
63  static std::string name_and_id_new_return (Session&, uint32_t&);
64 
65  protected:
66  bool _metering;
69 
70 private:
71  /* disallow copy construction */
72  Return (const Return&);
73 
74  uint32_t _bitslot;
75 
76  void collect_input (BufferSet& bufs, pframes_t nframes, ChanCount offset = ChanCount::ZERO);
77 };
78 
79 } // namespace ARDOUR
80 
81 #endif /* __ardour_return_h__ */
82 
bool metering() const
Definition: return.h:50
uint32_t _bitslot
Definition: return.h:74
uint32_t pframes_t
Definition: types.h:61
uint32_t pans_required() const
Definition: return.h:57
bool _metering
Definition: return.h:66
Definition: amp.h:29
int64_t framepos_t
Definition: types.h:66
#define LIBARDOUR_API
boost::shared_ptr< PeakMeter > meter() const
Definition: return.h:48
Definition: xml++.h:95
boost::shared_ptr< Amp > _amp
Definition: return.h:67
boost::shared_ptr< PeakMeter > _meter
Definition: return.h:68
static const ChanCount ZERO
Definition: chan_count.h:149
boost::shared_ptr< Amp > amp() const
Definition: return.h:47
uint32_t bit_slot() const
Definition: return.h:43
void set_metering(bool yn)
Definition: return.h:51