#include <glibmm/thread.h>
#include "pbd/xml++.h"
+#include "ardour/debug.h"
#include "ardour/tempo.h"
#include "ardour/utils.h"
for (i = metrics->begin(); i != metrics->end(); ++i) {
BBT_Time bbt;
- Metric metric (*meter, *tempo);
+ TempoMetric metric (*meter, *tempo);
if (prev) {
metric.set_start (prev->start());
}
-TempoMap::Metric
+TempoMetric
TempoMap::metric_at (nframes_t frame) const
{
- Metric m (first_meter(), first_tempo());
+ TempoMetric m (first_meter(), first_tempo());
const Meter* meter;
const Tempo* tempo;
return m;
}
-TempoMap::Metric
+TempoMetric
TempoMap::metric_at (BBT_Time bbt) const
{
- Metric m (first_meter(), first_tempo());
+ TempoMetric m (first_meter(), first_tempo());
const Meter* meter;
const Tempo* tempo;
}
void
-TempoMap::bbt_time_with_metric (nframes_t frame, BBT_Time& bbt, const Metric& metric) const
+TempoMap::bbt_time_with_metric (nframes_t frame, BBT_Time& bbt, const TempoMetric& metric) const
{
nframes_t frame_diff;
nframes_t start_frame = 0;
nframes_t end_frame = 0;
- Metric m = metric_at (start);
+ TempoMetric m = metric_at (start);
uint32_t bar_offset = start.bars - m.start().bars;
result.beats = 1;
result.ticks = 0;
- Metric metric = metric_at(result);
+ TempoMetric metric = metric_at(result);
beats_per_bar = metric.meter().beats_per_bar();
nframes_t
TempoMap::round_to_type (nframes_t frame, int dir, BBTPointType type)
{
- Metric metric = metric_at (frame);
+ TempoMetric metric = metric_at (frame);
BBT_Time bbt;
BBT_Time start;
bbt_time_with_metric (frame, bbt, metric);
+
switch (type) {
case Bar:
+ DEBUG_TRACE(DEBUG::SnapBBT, string_compose ("round from %1 (%3) to bars in direction %2\n", frame, (dir < 0 ? "back" : "forward"), bbt));
if (dir < 0) {
if (bbt.bars > 1) {
bbt.bars--;
break;
case Beat:
+ DEBUG_TRACE(DEBUG::SnapBBT, string_compose ("round from %1 (%3) to beat in direction %2\n", frame, (dir < 0 ? "back" : "forward"), bbt));
if (dir < 0) {
if (bbt.beats > 1) {
bbt.beats--;
- }
+ }
+
} else if (dir > 0) {
if (bbt.ticks > 0) {
bbt.beats++;
}
- /*
- cerr << "for " << frame << " round to " << bbt << " using "
- << metric.start()
- << endl;
- */
-
+ DEBUG_TRACE(DEBUG::SnapBBT, string_compose ("\tat %1 count frames from %2 to %3 = %4\n", metric.frame(), metric.start(), bbt, count_frames_between (metric.start(), bbt)));
return metric.frame() + count_frames_between (metric.start(), bbt);
}
const Tempo&
TempoMap::tempo_at (nframes_t frame) const
{
- Metric m (metric_at (frame));
+ TempoMetric m (metric_at (frame));
return m.tempo();
}
const Meter&
TempoMap::meter_at (nframes_t frame) const
{
- Metric m (metric_at (frame));
+ TempoMetric m (metric_at (frame));
return m.meter();
}