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

#include <automation_list.h>

Inheritance diagram for ARDOUR::AutomationList:
[legend]

Public Member Functions

 AutomationList (const Evoral::Parameter &id, const Evoral::ParameterDescriptor &desc, Temporal::TimeDomainProvider const &)
 
 AutomationList (const Evoral::Parameter &id, Temporal::TimeDomainProvider const &)
 
 AutomationList (const XMLNode &, Evoral::Parameter id)
 
 AutomationList (const AutomationList &)
 
 AutomationList (const AutomationList &, timepos_t const &start, timepos_t const &end)
 
 ~AutomationList ()
 
virtual std::shared_ptr< ControlListcreate (const Evoral::Parameter &id, const Evoral::ParameterDescriptor &desc, Temporal::TimeDomainProvider const &)
 
AutomationListoperator= (const AutomationList &)
 
void thaw ()
 
void set_automation_state (AutoState)
 
AutoState automation_state () const
 
bool automation_playback () const
 
bool automation_write () const
 
void start_write_pass (timepos_t const &when)
 
void write_pass_finished (timepos_t const &when, double thinning_factor=0.0)
 
void start_touch (timepos_t const &when)
 
void stop_touch (timepos_t const &when)
 
bool touching () const
 
bool writing () const
 
bool touch_enabled () const
 
XMLNodeget_state () const
 
int set_state (const XMLNode &, int version)
 
PBD::Commandmemento_command (XMLNode *before, XMLNode *after)
 
bool operator!= (const AutomationList &) const
 
XMLNodebefore ()
 
void clear_history ()
 
void snapshot_history (bool need_lock)
 
ControlList::InterpolationStyle default_interpolation () const
 
- Public Member Functions inherited from Evoral::ControlList
 ControlList (const Parameter &id, const ParameterDescriptor &desc, Temporal::TimeDomainProvider const &)
 
 ControlList (const ControlList &, Temporal::timepos_t const &start, Temporal::timepos_t const &end)
 
 ControlList (const ControlList &)
 
virtual ~ControlList ()
 
void dump (std::ostream &)
 
ControlListoperator= (const ControlList &)
 
bool operator== (const ControlList &)
 
void copy_events (const ControlList &)
 
virtual void freeze ()
 
bool frozen () const
 
const Parameterparameter () const
 
void set_parameter (const Parameter &p)
 
const ParameterDescriptordescriptor () const
 
void set_descriptor (const ParameterDescriptor &d)
 
EventList::size_type size () const
 
Temporal::timepos_t when (bool at_start) const
 
Temporal::timecnt_t length () const
 
bool empty () const
 
void clear ()
 
void x_scale (Temporal::ratio_t const &)
 
bool extend_to (Temporal::timepos_t const &)
 
void slide (iterator before, Temporal::timecnt_t const &distance)
 
void shift (Temporal::timepos_t const &before, Temporal::timecnt_t const &distance)
 
void y_transform (std::function< double(double)> callback)
 
void list_merge (ControlList const &other, std::function< double(double, double)> callback)
 
virtual void add (Temporal::timepos_t const &when, double value, bool with_guards=true, bool with_initial=true)
 
virtual bool editor_add (Temporal::timepos_t const &when, double value, bool with_guard)
 
virtual bool editor_add_ordered (OrderedPoints const &, bool with_guard)
 
void fast_simple_add (Temporal::timepos_t const &when, double value)
 
void erase_range (Temporal::timepos_t const &start, Temporal::timepos_t const &end)
 
void erase (iterator)
 
void erase (iterator, iterator)
 
void erase (Temporal::timepos_t const &, double)
 
bool move_ranges (std::list< Temporal::RangeMove > const &)
 
void modify (iterator, Temporal::timepos_t const &, double)
 
void thin (double thinning_factor)
 
std::shared_ptr< ControlListcut (Temporal::timepos_t const &, Temporal::timepos_t const &)
 
std::shared_ptr< ControlListcopy (Temporal::timepos_t const &, Temporal::timepos_t const &)
 
void clear (Temporal::timepos_t const &start, Temporal::timepos_t const &end)
 
bool paste (const ControlList &, Temporal::timepos_t const &)
 
void truncate_end (Temporal::timepos_t const &last_coordinate)
 
void truncate_start (Temporal::timecnt_t const &overall_length)
 
iterator begin ()
 
const_iterator begin () const
 
iterator end ()
 
const_iterator end () const
 
reverse_iterator rbegin ()
 
const_reverse_iterator rbegin () const
 
reverse_iterator rend ()
 
const_reverse_iterator rend () const
 
ControlEventback ()
 
const ControlEventback () const
 
ControlEventfront ()
 
const ControlEventfront () const
 
std::pair< ControlList::iterator, ControlList::iteratorcontrol_points_adjacent (Temporal::timepos_t const &when)
 
template<class T >
void apply_to_points (T &obj, void(T::*method)(const ControlList &))
 
double eval (Temporal::timepos_t const &where) const
 
double rt_safe_eval (Temporal::timepos_t const &where, bool &ok) const
 
const EventListevents () const
 
Glib::Threads::RWLock & lock () const
 
LookupCachelookup_cache () const
 
SearchCachesearch_cache () const
 
double unlocked_eval (Temporal::timepos_t const &x) const
 
bool rt_safe_earliest_event_discrete_unlocked (Temporal::timepos_t const &start, Temporal::timepos_t &x, double &y, bool inclusive) const
 
bool rt_safe_earliest_event_linear_unlocked (Temporal::timepos_t const &start, Temporal::timepos_t &x, double &y, bool inclusive, Temporal::timecnt_t min_x_delta=Temporal::timecnt_t::max()) const
 
void create_curve ()
 
void destroy_curve ()
 
Curvecurve ()
 
const Curvecurve () const
 
void mark_dirty () const
 
InterpolationStyle interpolation () const
 
bool set_interpolation (InterpolationStyle is)
 
void start_write_pass (Temporal::timepos_t const &)
 
void write_pass_finished (Temporal::timepos_t const &, double thinning_factor=0.0)
 
void set_in_write_pass (bool, bool add_point=false, Temporal::timepos_t=std::numeric_limits< Temporal::timepos_t >::min())
 
bool in_write_pass () const
 
bool in_new_write_pass ()
 
bool operator!= (ControlList const &) const
 
void invalidate_insert_iterator ()
 
void start_domain_bounce (Temporal::DomainBounceInfo &)
 
void finish_domain_bounce (Temporal::DomainBounceInfo &)
 
- Public Member Functions inherited from Temporal::TimeDomainProvider
 TimeDomainProvider ()
 
 TimeDomainProvider (TimeDomain td)
 
 TimeDomainProvider (TimeDomain td, TimeDomainProvider const &p)
 
 TimeDomainProvider (TimeDomainProvider const &other)
 
 TimeDomainProvider (TimeDomainProvider const &parnt, bool)
 
virtual ~TimeDomainProvider ()
 
XMLNodeget_state () const
 
int set_state (const XMLNode &, int version)
 
TimeDomainProvideroperator= (TimeDomainProvider const &other)
 
TimeDomain time_domain () const
 
bool has_own_time_domain () const
 
void clear_time_domain ()
 
void set_time_domain (TimeDomain td)
 
TimeDomainProvider const * time_domain_parent () const
 
bool has_time_domain_parent () const
 
void clear_time_domain_parent ()
 
void set_time_domain_parent (TimeDomainProvider const &p)
 
virtual void time_domain_changed ()
 
- Public Member Functions inherited from Temporal::TimeDomainSwapper
virtual ~TimeDomainSwapper ()
 
- Public Member Functions inherited from PBD::Destructible
virtual ~Destructible ()
 
virtual void drop_references ()
 
- 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 Attributes

PBD::Signal< void(AutoState)> automation_state_changed
 
PBD::Signal< void()> StateChanged
 
- Public Attributes inherited from Evoral::ControlList
PBD::Signal< void()> WritePassStarted
 
PBD::Signal< void()> Dirty
 
PBD::Signal< void(InterpolationStyle)> InterpolationChanged
 
- Public Attributes inherited from Temporal::TimeDomainProvider
PBD::Signal< void()> TimeDomainChanged
 
- Public Attributes inherited from PBD::Destructible
PBD::Signal< void()> Destroyed
 
PBD::Signal< void()> DropReferences
 
- Public Attributes inherited from PBD::Stateful
PBD::Signal< void(const PropertyChange &)> PropertyChanged
 

Static Public Attributes

static PBD::Signal< void(AutomationList *)> AutomationListCreated
 
- Static Public Attributes inherited from PBD::Stateful
static int current_state_version
 
static int loading_state_version
 

Private Member Functions

void create_curve_if_necessary ()
 
int deserialize_events (const XMLNode &)
 
XMLNodestate (bool save_auto_state, bool need_lock) const
 
XMLNodeserialize_events (bool need_lock) const
 
void maybe_signal_changed ()
 
bool operator== (const AutomationList &) const
 

Private Attributes

AutoState _state
 
std::atomic< int > _touching
 
PBD::ScopedConnection _writepass_connection
 
XMLNode_before
 

Additional Inherited Members

- Public Types inherited from Evoral::ControlList
enum  InterpolationStyle {
  Discrete , Linear , Curved , Logarithmic ,
  Exponential
}
 
typedef std::list< ControlEvent * > EventList
 
typedef EventList::iterator iterator
 
typedef EventList::reverse_iterator reverse_iterator
 
typedef EventList::const_iterator const_iterator
 
typedef EventList::const_reverse_iterator const_reverse_iterator
 
typedef std::vector< OrderedPointOrderedPoints
 
- Static Public Member Functions inherited from Evoral::ControlList
static bool time_comparator (const ControlEvent *a, const ControlEvent *b)
 
- Protected Member Functions inherited from Evoral::ControlList
double multipoint_eval (Temporal::timepos_t const &x) const
 
void build_search_cache_if_necessary (Temporal::timepos_t const &start) const
 
std::shared_ptr< ControlListcut_copy_clear (Temporal::timepos_t const &, Temporal::timepos_t const &, int op)
 
bool erase_range_internal (Temporal::timepos_t const &start, Temporal::timepos_t const &end, EventList &)
 
void maybe_add_insert_guard (Temporal::timepos_t const &when)
 
iterator erase_from_iterator_to (iterator iter, Temporal::timepos_t const &when)
 
bool maybe_insert_straight_line (Temporal::timepos_t const &when, double value)
 
void _x_scale (Temporal::ratio_t const &)
 
- Protected Member Functions inherited from Temporal::TimeDomainProvider
void listen ()
 
- 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 Evoral::ControlList
LookupCache _lookup_cache
 
SearchCache _search_cache
 
Glib::Threads::RWLock _lock
 
Parameter _parameter
 
ParameterDescriptor _desc
 
InterpolationStyle _interpolation
 
EventList _events
 
int8_t _frozen
 
bool _changed_when_thawed
 
bool _sort_pending
 
Curve_curve
 
- 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

AutomationList is a stateful wrapper around Evoral::ControlList. It includes session-specifics (such as automation state), control logic (e.g. touch, signals) and acts as proxy to the underlying ControlList which holds the actual data.

Definition at line 71 of file automation_list.h.

Constructor & Destructor Documentation

◆ AutomationList() [1/5]

ARDOUR::AutomationList::AutomationList ( const Evoral::Parameter id,
const Evoral::ParameterDescriptor desc,
Temporal::TimeDomainProvider const &   
)

◆ AutomationList() [2/5]

ARDOUR::AutomationList::AutomationList ( const Evoral::Parameter id,
Temporal::TimeDomainProvider const &   
)

◆ AutomationList() [3/5]

ARDOUR::AutomationList::AutomationList ( const XMLNode ,
Evoral::Parameter  id 
)

◆ AutomationList() [4/5]

ARDOUR::AutomationList::AutomationList ( const AutomationList )

◆ AutomationList() [5/5]

ARDOUR::AutomationList::AutomationList ( const AutomationList ,
timepos_t const &  start,
timepos_t const &  end 
)

◆ ~AutomationList()

ARDOUR::AutomationList::~AutomationList ( )

Member Function Documentation

◆ automation_playback()

bool ARDOUR::AutomationList::automation_playback ( ) const
inline

Definition at line 93 of file automation_list.h.

◆ automation_state()

AutoState ARDOUR::AutomationList::automation_state ( ) const

◆ automation_write()

bool ARDOUR::AutomationList::automation_write ( ) const
inline

Definition at line 96 of file automation_list.h.

◆ before()

XMLNode* ARDOUR::AutomationList::before ( )
inline

Definition at line 121 of file automation_list.h.

◆ clear_history()

void ARDOUR::AutomationList::clear_history ( )

◆ create()

virtual std::shared_ptr<ControlList> ARDOUR::AutomationList::create ( const Evoral::Parameter id,
const Evoral::ParameterDescriptor desc,
Temporal::TimeDomainProvider const &   
)
virtual

Reimplemented from Evoral::ControlList.

◆ create_curve_if_necessary()

void ARDOUR::AutomationList::create_curve_if_necessary ( )
private

◆ default_interpolation()

ControlList::InterpolationStyle ARDOUR::AutomationList::default_interpolation ( ) const
virtual

query default interpolation for parameter-descriptor

Reimplemented from Evoral::ControlList.

◆ deserialize_events()

int ARDOUR::AutomationList::deserialize_events ( const XMLNode )
private

◆ get_state()

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

Implements PBD::Stateful.

◆ maybe_signal_changed()

void ARDOUR::AutomationList::maybe_signal_changed ( )
privatevirtual

Reimplemented from Evoral::ControlList.

◆ memento_command()

PBD::Command* ARDOUR::AutomationList::memento_command ( XMLNode before,
XMLNode after 
)

◆ operator!=()

bool ARDOUR::AutomationList::operator!= ( const AutomationList ) const

◆ operator=()

AutomationList& ARDOUR::AutomationList::operator= ( const AutomationList )

◆ operator==()

bool ARDOUR::AutomationList::operator== ( const AutomationList ) const
inlineprivate

Definition at line 141 of file automation_list.h.

◆ serialize_events()

XMLNode& ARDOUR::AutomationList::serialize_events ( bool  need_lock) const
private

◆ set_automation_state()

void ARDOUR::AutomationList::set_automation_state ( AutoState  )

◆ set_state()

int ARDOUR::AutomationList::set_state ( const XMLNode ,
int  version 
)
virtual

Implements PBD::Stateful.

◆ snapshot_history()

void ARDOUR::AutomationList::snapshot_history ( bool  need_lock)

◆ start_touch()

void ARDOUR::AutomationList::start_touch ( timepos_t const &  when)

◆ start_write_pass()

void ARDOUR::AutomationList::start_write_pass ( timepos_t const &  when)

◆ state()

XMLNode& ARDOUR::AutomationList::state ( bool  save_auto_state,
bool  need_lock 
) const
private

◆ stop_touch()

void ARDOUR::AutomationList::stop_touch ( timepos_t const &  when)

◆ thaw()

void ARDOUR::AutomationList::thaw ( )
virtual

Reimplemented from Evoral::ControlList.

◆ touch_enabled()

bool ARDOUR::AutomationList::touch_enabled ( ) const
inlinevirtual

Reimplemented from Evoral::ControlList.

Definition at line 112 of file automation_list.h.

◆ touching()

bool ARDOUR::AutomationList::touching ( ) const
inlinevirtual

Reimplemented from Evoral::ControlList.

Definition at line 110 of file automation_list.h.

◆ write_pass_finished()

void ARDOUR::AutomationList::write_pass_finished ( timepos_t const &  when,
double  thinning_factor = 0.0 
)

◆ writing()

bool ARDOUR::AutomationList::writing ( ) const
inlinevirtual

Reimplemented from Evoral::ControlList.

Definition at line 111 of file automation_list.h.

Member Data Documentation

◆ _before

XMLNode* ARDOUR::AutomationList::_before
private

Definition at line 142 of file automation_list.h.

◆ _state

AutoState ARDOUR::AutomationList::_state
private

Definition at line 136 of file automation_list.h.

◆ _touching

std::atomic<int> ARDOUR::AutomationList::_touching
private

Definition at line 137 of file automation_list.h.

◆ _writepass_connection

PBD::ScopedConnection ARDOUR::AutomationList::_writepass_connection
private

Definition at line 139 of file automation_list.h.

◆ automation_state_changed

PBD::Signal<void(AutoState)> ARDOUR::AutomationList::automation_state_changed

Definition at line 91 of file automation_list.h.

◆ AutomationListCreated

PBD::Signal<void(AutomationList*)> ARDOUR::AutomationList::AutomationListCreated
static

Definition at line 102 of file automation_list.h.

◆ StateChanged

PBD::Signal<void()> ARDOUR::AutomationList::StateChanged

Definition at line 100 of file automation_list.h.


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