mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-06 23:05:04 +01:00
Keep region beat and pulse separated, ensure pulse is updated when setting position.
This commit is contained in:
parent
16ae7d9a6d
commit
5113a492e0
1 changed files with 8 additions and 4 deletions
|
|
@ -357,7 +357,7 @@ Region::Region (boost::shared_ptr<const Region> other, frameoffset_t offset, con
|
||||||
|
|
||||||
_start = other->_start + offset;
|
_start = other->_start + offset;
|
||||||
_beat = _session.tempo_map().exact_beat_at_frame (_position, sub_num);
|
_beat = _session.tempo_map().exact_beat_at_frame (_position, sub_num);
|
||||||
_pulse = _session.tempo_map().pulse_at_beat (_beat);
|
_pulse = _session.tempo_map().exact_qn_at_frame (_position, sub_num) / 4.0;
|
||||||
|
|
||||||
/* if the other region had a distinct sync point
|
/* if the other region had a distinct sync point
|
||||||
set, then continue to use it as best we can.
|
set, then continue to use it as best we can.
|
||||||
|
|
@ -555,7 +555,7 @@ Region::set_position_lock_style (PositionLockStyle ps)
|
||||||
|
|
||||||
if (_position_lock_style == MusicTime) {
|
if (_position_lock_style == MusicTime) {
|
||||||
_beat = _session.tempo_map().beat_at_frame (_position);
|
_beat = _session.tempo_map().beat_at_frame (_position);
|
||||||
_pulse = _session.tempo_map().pulse_at_beat (_beat);
|
_pulse = _session.tempo_map().pulse_at_frame (_position);
|
||||||
}
|
}
|
||||||
|
|
||||||
send_change (Properties::position_lock_style);
|
send_change (Properties::position_lock_style);
|
||||||
|
|
@ -602,7 +602,7 @@ Region::set_position (framepos_t pos, int32_t sub_num)
|
||||||
} else {
|
} else {
|
||||||
double beat = _session.tempo_map().exact_beat_at_frame (pos, sub_num);
|
double beat = _session.tempo_map().exact_beat_at_frame (pos, sub_num);
|
||||||
_beat = beat;
|
_beat = beat;
|
||||||
_pulse = _session.tempo_map().pulse_at_beat (_beat);
|
_pulse = _session.tempo_map().exact_qn_at_frame (pos, sub_num) / 4.0;
|
||||||
set_position_internal (pos, false, sub_num);
|
set_position_internal (pos, false, sub_num);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -675,7 +675,11 @@ Region::set_position_internal (framepos_t pos, bool allow_bbt_recompute, const i
|
||||||
|
|
||||||
if (allow_bbt_recompute) {
|
if (allow_bbt_recompute) {
|
||||||
recompute_position_from_lock_style (sub_num);
|
recompute_position_from_lock_style (sub_num);
|
||||||
|
} else {
|
||||||
|
/* MusicTime dictates that we glue to ardour beats. the pulse may have changed.*/
|
||||||
|
_pulse = _session.tempo_map().exact_qn_at_frame (_position, sub_num) / 4.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* check that the new _position wouldn't make the current
|
/* check that the new _position wouldn't make the current
|
||||||
length impossible - if so, change the length.
|
length impossible - if so, change the length.
|
||||||
|
|
||||||
|
|
@ -692,7 +696,7 @@ void
|
||||||
Region::recompute_position_from_lock_style (const int32_t sub_num)
|
Region::recompute_position_from_lock_style (const int32_t sub_num)
|
||||||
{
|
{
|
||||||
_beat = _session.tempo_map().exact_beat_at_frame (_position, sub_num);
|
_beat = _session.tempo_map().exact_beat_at_frame (_position, sub_num);
|
||||||
_pulse = _session.tempo_map().pulse_at_beat (_beat);
|
_pulse = _session.tempo_map().exact_qn_at_frame (_position, sub_num) / 4.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue