X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fbeats_frames_converter.cc;h=94042b1b03c0ae84ccece34fa4eaefc6f2464223;hb=5b4c3aa226dc95f33dc3ffae6669a24f5e8b8fe0;hp=59c0bb28962ffe10e954e9ed68ced4dbc0de6b35;hpb=a473d630eb165272992e90f8d854b1d66ec0be63;p=ardour.git diff --git a/libs/ardour/beats_frames_converter.cc b/libs/ardour/beats_frames_converter.cc index 59c0bb2896..94042b1b03 100644 --- a/libs/ardour/beats_frames_converter.cc +++ b/libs/ardour/beats_frames_converter.cc @@ -19,23 +19,38 @@ $Id: midiregion.h 733 2006-08-01 17:19:38Z drobilla $ */ +#include "pbd/stacktrace.h" + #include "ardour/beats_frames_converter.h" #include "ardour/tempo.h" namespace ARDOUR { -framecnt_t +/** Takes a positive duration in beats and considers it as a distance from the origin + * supplied to the constructor. Returns the equivalent number of frames, + * taking tempo changes into account. + */ +framepos_t BeatsFramesConverter::to (double beats) const { + if (beats < 0) { + std::cerr << "negative beats passed to BFC: " << beats << std::endl; + PBD::stacktrace (std::cerr, 30); + } assert (beats >= 0); - - return _tempo_map.framepos_plus_bbt (_origin_b, Timecode::BBT_Time(beats)) - _origin_b; + framecnt_t r = _tempo_map.framepos_plus_beats (_origin_b, beats) - _origin_b; + return r; } +/** Takes a duration in frames and considers it as a distance from the origin + * supplied to the constructor. Returns the equivalent number of beats, + * taking tempo changes into account. + */ double -BeatsFramesConverter::from (framecnt_t frames) const +BeatsFramesConverter::from (framepos_t frames) const { - return _tempo_map.framewalk_to_beats (_origin_b, frames); + double b = _tempo_map.framewalk_to_beats (_origin_b, frames); + return b; } } /* namespace ARDOUR */