Add New Region variables for Clips
Properties are created for announcing changes, but values are not actually stored as undo-able properties.
This commit is contained in:
parent
1e38797efc
commit
3918ee2ed6
@ -74,7 +74,15 @@ namespace Properties {
|
||||
LIBARDOUR_API extern PBD::PropertyDescriptor<uint64_t> layering_index;
|
||||
LIBARDOUR_API extern PBD::PropertyDescriptor<std::string> tags;
|
||||
LIBARDOUR_API extern PBD::PropertyDescriptor<bool> contents; // type doesn't matter here
|
||||
|
||||
/* these properties are used as a convenience for announcing changes to state, but aren't stored as properties */
|
||||
LIBARDOUR_API extern PBD::PropertyDescriptor<Temporal::TimeDomain> time_domain;
|
||||
LIBARDOUR_API extern PBD::PropertyDescriptor<float> bpm;
|
||||
LIBARDOUR_API extern PBD::PropertyDescriptor<uint8_t> metrum_numerator; //pulses per bar (typically 4)
|
||||
LIBARDOUR_API extern PBD::PropertyDescriptor<uint8_t> metrum_divisor; //divisor note type (typically 4 = quarter-note)
|
||||
LIBARDOUR_API extern PBD::PropertyDescriptor<bool> sync_to_bbt;
|
||||
LIBARDOUR_API extern PBD::PropertyDescriptor<bool> loop_enabled;
|
||||
LIBARDOUR_API extern PBD::PropertyDescriptor<timepos_t> loop_start;
|
||||
};
|
||||
|
||||
class Playlist;
|
||||
@ -124,6 +132,14 @@ public:
|
||||
timepos_t end() const;
|
||||
timepos_t nt_last() const { return end().decrement(); }
|
||||
|
||||
/** Note: these values are currently only used when the region is in a trigger slot */
|
||||
float bpm () const { return _bpm; }
|
||||
uint8_t metrum_numerator () const { return _metrum_numerator; }
|
||||
uint8_t metrum_divisor () const { return _metrum_divisor; }
|
||||
bool sync_to_bbt () const { return _sync_to_bbt; }
|
||||
bool loop_enabled () const { return _loop_enabled; }
|
||||
timepos_t loop_start () const { return _loop_start; }
|
||||
|
||||
timepos_t source_position () const;
|
||||
timepos_t source_relative_position (Temporal::timepos_t const &) const;
|
||||
timepos_t region_relative_position (Temporal::timepos_t const &) const;
|
||||
@ -279,6 +295,13 @@ public:
|
||||
void set_video_locked (bool yn);
|
||||
void set_position_locked (bool yn);
|
||||
|
||||
void set_bpm (float bpm);
|
||||
void set_metrum_numerator (uint8_t num);
|
||||
void set_metrum_divisor (uint8_t div);
|
||||
void set_sync_to_bbt (bool sync);
|
||||
void set_loop_enabled (bool en);
|
||||
void set_loop_start (timepos_t);
|
||||
|
||||
Temporal::timepos_t region_beats_to_absolute_time(Temporal::Beats beats) const;
|
||||
/** Convert a timestamp in beats into timepos_t (both relative to region position) */
|
||||
Temporal::timepos_t region_beats_to_region_time (Temporal::Beats beats) const {
|
||||
@ -521,6 +544,14 @@ private:
|
||||
PBD::Property<std::string> _tags;
|
||||
PBD::Property<bool> _contents; // type is irrelevant
|
||||
|
||||
/* these values are (currently) only used when the region is in a trigger slot */
|
||||
float _bpm;
|
||||
uint8_t _metrum_numerator; //pulses per bar (typically 4)
|
||||
uint8_t _metrum_divisor; //divisor note type (typically 4 = quarter-note)
|
||||
bool _sync_to_bbt;
|
||||
bool _loop_enabled;
|
||||
timepos_t _loop_start;
|
||||
|
||||
timecnt_t _last_length;
|
||||
mutable RegionEditState _first_edit;
|
||||
layer_t _layer;
|
||||
|
@ -82,7 +82,15 @@ namespace ARDOUR {
|
||||
PBD::PropertyDescriptor<uint64_t> layering_index;
|
||||
PBD::PropertyDescriptor<std::string> tags;
|
||||
PBD::PropertyDescriptor<bool> contents;
|
||||
|
||||
/* these properties are used as a convenience for announcing changes to state, but aren't stored as properties */
|
||||
PBD::PropertyDescriptor<Temporal::TimeDomain> time_domain;
|
||||
PBD::PropertyDescriptor<float> bpm;
|
||||
PBD::PropertyDescriptor<uint8_t> metrum_numerator;
|
||||
PBD::PropertyDescriptor<uint8_t> metrum_divisor;
|
||||
PBD::PropertyDescriptor<bool> sync_to_bbt;
|
||||
PBD::PropertyDescriptor<bool> loop_enabled;
|
||||
PBD::PropertyDescriptor<timepos_t> loop_start;
|
||||
}
|
||||
}
|
||||
|
||||
@ -204,7 +212,13 @@ Region::register_properties ()
|
||||
, _shift (Properties::shift, 1.0) \
|
||||
, _layering_index (Properties::layering_index, 0) \
|
||||
, _tags (Properties::tags, "") \
|
||||
, _contents (Properties::contents, false)
|
||||
, _contents (Properties::contents, false) \
|
||||
, _bpm (110) \
|
||||
, _metrum_numerator (4) \
|
||||
, _metrum_divisor (4) \
|
||||
, _sync_to_bbt (false) \
|
||||
, _loop_enabled (false) \
|
||||
, _loop_start (0)
|
||||
|
||||
#define REGION_COPY_STATE(other) \
|
||||
_sync_marked (Properties::sync_marked, other->_sync_marked) \
|
||||
@ -236,7 +250,13 @@ Region::register_properties ()
|
||||
, _shift (Properties::shift, other->_shift) \
|
||||
, _layering_index (Properties::layering_index, other->_layering_index) \
|
||||
, _tags (Properties::tags, other->_tags) \
|
||||
, _contents (Properties::contents, other->_contents)
|
||||
, _contents (Properties::contents, other->_contents) \
|
||||
, _bpm (other->_bpm) \
|
||||
, _metrum_numerator (other->_metrum_numerator) \
|
||||
, _metrum_divisor (other->_metrum_divisor) \
|
||||
, _sync_to_bbt (other->_sync_to_bbt) \
|
||||
, _loop_enabled (other->_loop_enabled) \
|
||||
, _loop_start (other->_loop_start)
|
||||
|
||||
/* derived-from-derived constructor (no sources in constructor) */
|
||||
Region::Region (Session& s, timepos_t const & start, timecnt_t const & length, const string& name, DataType type)
|
||||
@ -583,6 +603,13 @@ Region::set_position_time_domain (Temporal::TimeDomain td)
|
||||
}
|
||||
}
|
||||
|
||||
void Region::set_bpm (float bpm) { _bpm = bpm; send_change (Properties::bpm);}
|
||||
void Region::set_metrum_numerator (uint8_t num) { _metrum_numerator = num; send_change (Properties::metrum_numerator);}
|
||||
void Region::set_metrum_divisor (uint8_t div) { _metrum_divisor = div; send_change (Properties::metrum_divisor);}
|
||||
void Region::set_sync_to_bbt (bool sync) { _sync_to_bbt = sync; send_change (Properties::sync_to_bbt);}
|
||||
void Region::set_loop_enabled (bool en) { _loop_enabled = en; send_change (Properties::loop_enabled);}
|
||||
void Region::set_loop_start (timepos_t ls) { _loop_start = ls; send_change (Properties::loop_start);}
|
||||
|
||||
void
|
||||
Region::recompute_position_from_time_domain ()
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user