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<uint64_t> layering_index;
|
||||||
LIBARDOUR_API extern PBD::PropertyDescriptor<std::string> tags;
|
LIBARDOUR_API extern PBD::PropertyDescriptor<std::string> tags;
|
||||||
LIBARDOUR_API extern PBD::PropertyDescriptor<bool> contents; // type doesn't matter here
|
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<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;
|
class Playlist;
|
||||||
@ -124,6 +132,14 @@ public:
|
|||||||
timepos_t end() const;
|
timepos_t end() const;
|
||||||
timepos_t nt_last() const { return end().decrement(); }
|
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_position () const;
|
||||||
timepos_t source_relative_position (Temporal::timepos_t const &) const;
|
timepos_t source_relative_position (Temporal::timepos_t const &) const;
|
||||||
timepos_t region_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_video_locked (bool yn);
|
||||||
void set_position_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;
|
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) */
|
/** 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 {
|
Temporal::timepos_t region_beats_to_region_time (Temporal::Beats beats) const {
|
||||||
@ -521,6 +544,14 @@ private:
|
|||||||
PBD::Property<std::string> _tags;
|
PBD::Property<std::string> _tags;
|
||||||
PBD::Property<bool> _contents; // type is irrelevant
|
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;
|
timecnt_t _last_length;
|
||||||
mutable RegionEditState _first_edit;
|
mutable RegionEditState _first_edit;
|
||||||
layer_t _layer;
|
layer_t _layer;
|
||||||
|
@ -82,7 +82,15 @@ namespace ARDOUR {
|
|||||||
PBD::PropertyDescriptor<uint64_t> layering_index;
|
PBD::PropertyDescriptor<uint64_t> layering_index;
|
||||||
PBD::PropertyDescriptor<std::string> tags;
|
PBD::PropertyDescriptor<std::string> tags;
|
||||||
PBD::PropertyDescriptor<bool> contents;
|
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<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) \
|
, _shift (Properties::shift, 1.0) \
|
||||||
, _layering_index (Properties::layering_index, 0) \
|
, _layering_index (Properties::layering_index, 0) \
|
||||||
, _tags (Properties::tags, "") \
|
, _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) \
|
#define REGION_COPY_STATE(other) \
|
||||||
_sync_marked (Properties::sync_marked, other->_sync_marked) \
|
_sync_marked (Properties::sync_marked, other->_sync_marked) \
|
||||||
@ -236,7 +250,13 @@ Region::register_properties ()
|
|||||||
, _shift (Properties::shift, other->_shift) \
|
, _shift (Properties::shift, other->_shift) \
|
||||||
, _layering_index (Properties::layering_index, other->_layering_index) \
|
, _layering_index (Properties::layering_index, other->_layering_index) \
|
||||||
, _tags (Properties::tags, other->_tags) \
|
, _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) */
|
/* 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)
|
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
|
void
|
||||||
Region::recompute_position_from_time_domain ()
|
Region::recompute_position_from_time_domain ()
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user