48 #include "ardour/debug.h"
70 , _current_panner_uri(
"")
71 , _user_selected_panner_uri(
"")
73 , _force_reselect (false)
77 if (
Config->get_link_send_and_route_panner()) {
106 if (nouts < 2 || nins == 0) {
122 fatal <<
_(
"No panner found: check that panners are being discovered correctly during startup.") <<
endmsg;
130 if (nouts != speakers->
size()) {
143 _panner->configure_io (in, out);
177 if ((prop = node.
property (
X_(
"bypassed"))) != 0) {
181 if ((prop = node.
property (
X_(
"linked-to-route"))) != 0) {
185 if ((prop = node.
property (
X_(
"user-panner"))) != 0) {
191 for (niter = nlist.begin(); niter != nlist.end(); ++niter) {
193 if ((*niter)->name() ==
X_(
"Panner")) {
195 if ((prop = (*niter)->property (
X_(
"uri")))) {
209 _pannable_route->set_panner(
_panner);
211 if (
_panner->set_state (**niter, version) == 0) {
218 if ((prop = (*niter)->property (
X_(
"type")))) {
220 list<PannerInfo*>::iterator p;
224 if (prop->
value() == (*p)->descriptor.name) {
231 _panner.reset ((*p)->descriptor.factory (
243 _pannable_route->set_panner(
_panner);
246 if (
_panner->set_state (**niter, version) == 0) {
261 error <<
_(
"panner plugin node has no type information!")
303 for (++i; i != inbufs.
audio_end(); ++i) {
318 for (++i; i != inbufs.
audio_end(); ++i) {
337 (*b).silence (nframes);
340 _panner->distribute (inbufs, outbufs, gain_coeff, nframes);
373 for (++i; i != inbufs.
audio_end(); ++i) {
ARDOUR::Session & _session
LIBPBD_API Transmitter fatal
PannerInfo * select_panner(ChanCount in, ChanCount out, std::string const uri="")
const std::string & value() const
LIBARDOUR_API gain_t speed_quietning
double transport_speed() const
LIBARDOUR_API uint64_t Destruction
void distribute_no_automation(BufferSet &src, BufferSet &dest, pframes_t nframes, gain_t gain_coeff)
PBD::Signal0< void > PannableChanged
boost::shared_ptr< Panner > _panner
std::string _user_selected_panner_uri
LIBPBD_API Transmitter error
const XMLNodeList & children(const std::string &str=std::string()) const
std::ostream & endmsg(std::ostream &ostr)
static AudioEngine * instance()
AudioBuffer & get_audio(size_t i)
std::list< XMLNode * > XMLNodeList
void accumulate_with_gain_from(const AudioBuffer &src, framecnt_t len, gain_t gain_coeff, framecnt_t dst_offset=0, framecnt_t src_offset=0)
void silence(framecnt_t nframes, framecnt_t offset)
pan_t ** pan_automation_buffer() const
XMLProperty * property(const char *)
LIBARDOUR_API RCConfiguration * Config
int set_state(const XMLNode &, int version)
boost::shared_ptr< Pannable > _pannable_internal
void silence(framecnt_t len, framecnt_t offset=0)
void set_linked_to_route(bool)
bool string_is_affirmative(const std::string &str)
audio_iterator audio_begin()
virtual bool set_name(const std::string &str)
PanPluginDescriptor descriptor
boost::shared_ptr< Speakers > get_speakers()
#define DEBUG_TRACE(bits, str)
PannerInfo * get_by_uri(std::string uri) const
audio_iterator audio_end()
std::string _current_panner_uri
PBD::Property< std::string > _name
XMLProperty * add_property(const char *name, const std::string &value)
bool select_panner_by_uri(std::string const uri)
bool set_user_selected_panner_uri(std::string const uri)
void add_child_nocopy(XMLNode &)
void setup_default_speakers(uint32_t nspeakers)
boost::shared_ptr< Pannable > _pannable_route
PBD::Signal0< void > Changed
const ChanCount & count() const
void run(BufferSet &src, BufferSet &dest, framepos_t start_frame, framepos_t end_frames, pframes_t nframes)
The fundamental Panner function.
ARDOUR::Panner *(* factory)(boost::shared_ptr< ARDOUR::Pannable >, boost::shared_ptr< ARDOUR::Speakers >)
LIBARDOUR_API uint64_t Panning
void configure_io(ChanCount in, ChanCount out)
std::list< PannerInfo * > panner_info
boost::shared_ptr< Pannable > pannable() const
void merge_from(const Buffer &src, framecnt_t len, framecnt_t dst_offset=0, framecnt_t src_offset=0)
std::string _panner_gui_uri
static PannerManager & instance()
void read_from(const Sample *src, framecnt_t len, framecnt_t dst_offset=0, framecnt_t src_offset=0)
XMLNodeList::const_iterator XMLNodeConstIterator
std::string string_compose(const std::string &fmt, const T1 &o1)