Ardour  9.0-pre0-582-g084a23a80d
ARDOUR::VBAPanner Class Reference

#include <vbap.h>

Inheritance diagram for ARDOUR::VBAPanner:
[legend]

Classes

struct  Signal
 

Public Member Functions

 VBAPanner (std::shared_ptr< Pannable >, std::shared_ptr< Speakers >)
 
 ~VBAPanner ()
 
void configure_io (ChanCount in, ChanCount)
 
ChanCount in () const
 
ChanCount out () const
 
void set_position (double)
 
void set_width (double)
 
void set_elevation (double)
 
void distribute (BufferSet &ibufs, BufferSet &obufs, gain_t gain_coeff, pframes_t nframes)
 
void set_azimuth_elevation (double azimuth, double elevation)
 
std::string value_as_string (std::shared_ptr< const AutomationControl >) const
 
XMLNodeget_state () const
 
PBD::AngularVector signal_position (uint32_t n) const
 
std::shared_ptr< Speakersget_speakers () const
 
void reset ()
 
- Public Member Functions inherited from ARDOUR::Panner
 Panner (std::shared_ptr< Pannable >)
 
 ~Panner ()
 
virtual bool clamp_position (double &)
 
virtual bool clamp_width (double &)
 
virtual bool clamp_elevation (double &)
 
virtual std::pair< double, double > position_range () const
 
virtual std::pair< double, double > width_range () const
 
virtual std::pair< double, double > elevation_range () const
 
virtual double position () const
 
virtual double width () const
 
virtual double elevation () const
 
virtual void distribute_automated (BufferSet &ibufs, BufferSet &obufs, samplepos_t start, samplepos_t end, pframes_t nframes, pan_t **buffers)
 
int set_state (const XMLNode &, int version)
 
std::shared_ptr< Pannablepannable () const
 
virtual void freeze ()
 
virtual void thaw ()
 
const std::set< Evoral::Parameter > & what_can_be_automated () const
 
- Public Member Functions inherited from PBD::Stateful
 Stateful ()
 
virtual ~Stateful ()
 
virtual bool apply_change (PropertyBase const &)
 
PropertyChange apply_changes (PropertyList const &)
 
const OwnedPropertyListproperties () const
 
void add_property (PropertyBase &s)
 
void add_extra_xml (XMLNode &)
 
XMLNodeextra_xml (const std::string &str, bool add_if_missing=false)
 
void save_extra_xml (const XMLNode &)
 
const PBD::IDid () const
 
bool set_id (const XMLNode &)
 
void set_id (const std::string &)
 
void reset_id ()
 
void clear_changes ()
 
virtual void clear_owned_changes ()
 
PropertyListget_changes_as_properties (PBD::Command *) const
 
virtual void rdiff (std::vector< PBD::Command * > &) const
 
bool changed () const
 
virtual PropertyListproperty_factory (const XMLNode &) const
 
virtual void suspend_property_changes ()
 
virtual void resume_property_changes ()
 
bool property_changes_suspended () const
 
- Public Member Functions inherited from PBD::ScopedConnectionList
 ScopedConnectionList ()
 
 ScopedConnectionList (const ScopedConnectionList &)=delete
 
ScopedConnectionListoperator= (const ScopedConnectionList &)=delete
 
virtual ~ScopedConnectionList ()
 
void add_connection (const UnscopedConnection &c)
 
void drop_connections ()
 

Static Public Member Functions

static Pannerfactory (std::shared_ptr< Pannable >, std::shared_ptr< Speakers >)
 

Private Member Functions

void compute_gains (double g[3], int ls[3], int azi, int ele)
 
void update ()
 
void clear_signals ()
 
void distribute_one (AudioBuffer &src, BufferSet &obufs, gain_t gain_coeff, pframes_t nframes, uint32_t which)
 
void distribute_one_automated (AudioBuffer &src, BufferSet &obufs, samplepos_t start, samplepos_t end, pframes_t nframes, pan_t **buffers, uint32_t which)
 

Private Attributes

std::vector< Signal * > _signals
 
std::shared_ptr< VBAPSpeakers_speakers
 

Additional Inherited Members

- Public Attributes inherited from ARDOUR::Panner
PBD::Signal< void()> SignalPositionChanged
 
- Public Attributes inherited from PBD::Stateful
PBD::Signal< void(const PropertyChange &)> PropertyChanged
 
- Static Public Attributes inherited from PBD::Stateful
static int current_state_version
 
static int loading_state_version
 
- Protected Member Functions inherited from PBD::Stateful
void add_instant_xml (XMLNode &, const std::string &directory_path)
 
XMLNodeinstant_xml (const std::string &str, const std::string &directory_path)
 
void add_properties (XMLNode &) const
 
PropertyChange set_values (XMLNode const &)
 
virtual void post_set (const PropertyChange &)
 
virtual void send_change (const PropertyChange &)
 
virtual void mid_thaw (const PropertyChange &)
 
bool regenerate_xml_or_string_ids () const
 
- Protected Attributes inherited from ARDOUR::Panner
std::shared_ptr< Pannable_pannable
 
std::set< Evoral::Parameter_can_automate_list
 
int32_t _frozen
 
- Protected Attributes inherited from PBD::Stateful
XMLNode_extra_xml
 
XMLNode_instant_xml
 
PBD::PropertyChange _pending_changed
 
Glib::Threads::Mutex _lock
 
std::string _xml_node_name
 name of node to use for this object in XML More...
 
OwnedPropertyList_properties
 

Detailed Description

Definition at line 38 of file vbap.h.

Constructor & Destructor Documentation

◆ VBAPanner()

ARDOUR::VBAPanner::VBAPanner ( std::shared_ptr< Pannable ,
std::shared_ptr< Speakers  
)

◆ ~VBAPanner()

ARDOUR::VBAPanner::~VBAPanner ( )

Member Function Documentation

◆ clear_signals()

void ARDOUR::VBAPanner::clear_signals ( )
private

◆ compute_gains()

void ARDOUR::VBAPanner::compute_gains ( double  g[3],
int  ls[3],
int  azi,
int  ele 
)
private

◆ configure_io()

void ARDOUR::VBAPanner::configure_io ( ChanCount  in,
ChanCount   
)
virtual

Reimplemented from ARDOUR::Panner.

◆ distribute()

void ARDOUR::VBAPanner::distribute ( BufferSet ibufs,
BufferSet obufs,
gain_t  gain_coeff,
pframes_t  nframes 
)
virtual

Pan some input buffers to a number of output buffers.

Parameters
ibufsInput buffers (one per panner input)
obufsOutput buffers (one per panner output).
gain_coefffixed, additional gain coefficient to apply to output samples.
nframesNumber of samples in the input.

Derived panners can choose to implement these if they need to gain more control over the panning algorithm. The default is to call distribute_one() or distribute_one_automated() on each input buffer to deliver it to each output buffer.

If a panner does not need to override this default behaviour, it can just implement distribute_one() and distribute_one_automated() (below).

Reimplemented from ARDOUR::Panner.

◆ distribute_one()

void ARDOUR::VBAPanner::distribute_one ( AudioBuffer src,
BufferSet obufs,
gain_t  gain_coeff,
pframes_t  nframes,
uint32_t  which 
)
privatevirtual

Implements ARDOUR::Panner.

◆ distribute_one_automated()

void ARDOUR::VBAPanner::distribute_one_automated ( AudioBuffer src,
BufferSet obufs,
samplepos_t  start,
samplepos_t  end,
pframes_t  nframes,
pan_t **  buffers,
uint32_t  which 
)
privatevirtual

Implements ARDOUR::Panner.

◆ factory()

static Panner* ARDOUR::VBAPanner::factory ( std::shared_ptr< Pannable ,
std::shared_ptr< Speakers  
)
static

◆ get_speakers()

std::shared_ptr<Speakers> ARDOUR::VBAPanner::get_speakers ( ) const
virtual

Reimplemented from ARDOUR::Panner.

◆ get_state()

XMLNode& ARDOUR::VBAPanner::get_state ( ) const
virtual

Reimplemented from ARDOUR::Panner.

◆ in()

ChanCount ARDOUR::VBAPanner::in ( ) const
virtual

Implements ARDOUR::Panner.

◆ out()

ChanCount ARDOUR::VBAPanner::out ( ) const
virtual

Implements ARDOUR::Panner.

◆ reset()

void ARDOUR::VBAPanner::reset ( )
virtual

Implements ARDOUR::Panner.

◆ set_azimuth_elevation()

void ARDOUR::VBAPanner::set_azimuth_elevation ( double  azimuth,
double  elevation 
)

◆ set_elevation()

void ARDOUR::VBAPanner::set_elevation ( double  )
virtual

Reimplemented from ARDOUR::Panner.

◆ set_position()

void ARDOUR::VBAPanner::set_position ( double  )
virtual

Reimplemented from ARDOUR::Panner.

◆ set_width()

void ARDOUR::VBAPanner::set_width ( double  )
virtual

Reimplemented from ARDOUR::Panner.

◆ signal_position()

PBD::AngularVector ARDOUR::VBAPanner::signal_position ( uint32_t  n) const
virtual

Reimplemented from ARDOUR::Panner.

◆ update()

void ARDOUR::VBAPanner::update ( )
private

◆ value_as_string()

std::string ARDOUR::VBAPanner::value_as_string ( std::shared_ptr< const AutomationControl ) const
virtual

Implements ARDOUR::Panner.

Member Data Documentation

◆ _signals

std::vector<Signal*> ARDOUR::VBAPanner::_signals
private

Definition at line 80 of file vbap.h.

◆ _speakers

std::shared_ptr<VBAPSpeakers> ARDOUR::VBAPanner::_speakers
private

Definition at line 81 of file vbap.h.


The documentation for this class was generated from the following file: