+ virtual int _set_state (const XMLNode&, int version, PBD::PropertyChange& what_changed, bool send_signal);
+ void post_set (const PBD::PropertyChange&);
+ virtual void set_position_internal (framepos_t pos, bool allow_bbt_recompute);
+ virtual void set_length_internal (framecnt_t);
+ virtual void set_start_internal (framecnt_t);
+
+ DataType _type;
+
+ PBD::Property<bool> _sync_marked;
+ PBD::Property<bool> _left_of_split;
+ PBD::Property<bool> _right_of_split;
+ PBD::Property<bool> _valid_transients;
+ PBD::Property<framepos_t> _start;
+ PBD::Property<framecnt_t> _length;
+ PBD::Property<framepos_t> _position;
+ /** Sync position relative to the start of our file */
+ PBD::Property<framepos_t> _sync_position;
+
+ SourceList _sources;
+ /** Used when timefx are applied, so we can always use the original source */
+ SourceList _master_sources;
+
+ boost::weak_ptr<ARDOUR::Playlist> _playlist;
+
+ void merge_features (AnalysisFeatureList&, const AnalysisFeatureList&, const frameoffset_t) const;
+
+ AnalysisFeatureList _onsets; // used by the Ferret (Aubio OnsetDetector)
+
+ // _transient_user_start is covered by _valid_transients
+ AnalysisFeatureList _user_transients; // user added
+ framepos_t _transient_user_start; // region's _start relative to user_transients
+
+ // these are used by Playlist::find_next_transient() in absence of onsets
+ AnalysisFeatureList _transients; // Source Analysis (QM Transient), user read-only
+ framepos_t _transient_analysis_start;
+ framepos_t _transient_analysis_end;
+
+ private: