#include "editor_cursors.h"
#include "ui_config.h"
-#include "i18n.h"
+#include "pbd/i18n.h"
using namespace ARDOUR;
using namespace PBD;
std::vector<TempoMap::BBTPoint>::const_iterator i;
Timecode::BBT_Time lower_beat, upper_beat; // the beats at each end of the ruler
- framecnt_t beat_before_lower_pos = _session->tempo_map().frame_at_beat (floor(_session->tempo_map().beat_at_frame (lower)));
- framecnt_t beat_after_upper_pos = _session->tempo_map().frame_at_beat (floor (_session->tempo_map().beat_at_frame (upper)) + 1.0);
+ double floor_lower_beat = floor(max (0.0, _session->tempo_map().beat_at_frame (lower)));
+
+ if (floor_lower_beat < 0.0) {
+ floor_lower_beat = 0.0;
+ }
+
+ const framecnt_t beat_before_lower_pos = _session->tempo_map().frame_at_beat (floor_lower_beat);
+ const framecnt_t beat_after_upper_pos = _session->tempo_map().frame_at_beat (floor (max (0.0, _session->tempo_map().beat_at_frame (upper))) + 1.0);
_session->bbt_time (beat_before_lower_pos, lower_beat);
_session->bbt_time (beat_after_upper_pos, upper_beat);
bbt_ruler_scale = bbt_show_many;
} else if (beat_density > 1024) {
bbt_ruler_scale = bbt_show_64;
- } else if (beat_density > 500) {
+ } else if (beat_density > 512) {
bbt_ruler_scale = bbt_show_16;
- } else if (beat_density > 100) {
+ } else if (beat_density > 128) {
bbt_ruler_scale = bbt_show_4;
- } else if (beat_density > 10) {
+ } else if (beat_density > 16) {
bbt_ruler_scale = bbt_show_1;
} else if (beat_density > 2) {
bbt_ruler_scale = bbt_show_beats;
next_beat.beats = (*i).beat;
next_beat.bars = (*i).bar;
next_beat.ticks = tick;
- pos = _session->tempo_map().frame_time (next_beat);
+ pos = _session->tempo_map().frame_at_bbt (next_beat);
if (t % bbt_accent_modulo == (bbt_accent_modulo - 1)) {
i_am_accented = true;
next_beat.beats = (*i).beat;
next_beat.bars = (*i).bar;
next_beat.ticks = tick;
- pos = _session->tempo_map().frame_time (next_beat);
+ pos = _session->tempo_map().frame_at_bbt (next_beat);
if (t % bbt_accent_modulo == (bbt_accent_modulo - 1)) {
i_am_accented = true;
while (tick < Timecode::BBT_Time::ticks_per_beat && (n < bbt_nmarks)) {
next_beat.ticks = tick;
- pos = _session->tempo_map().frame_time (next_beat);
+ pos = _session->tempo_map().frame_at_bbt (next_beat);
if (t % bbt_accent_modulo == (bbt_accent_modulo - 1)) {
i_am_accented = true;
}