diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2017-09-18 12:39:17 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2017-09-18 12:39:17 -0400 |
commit | 30b087ab3d28f1585987fa3f6ae006562ae192e3 (patch) | |
tree | 620ae0250b5d77f90a18f8c2b83be61e4fe7b0b5 /libs/ardour/beats_samples_converter.cc | |
parent | cb956e3e480716a3efd280a5287bdd7bee1cedc5 (diff) |
globally change all use of "frame" to refer to audio into "sample".
Generated by tools/f2s. Some hand-editing will be required in a few places to fix up comments related to timecode
and video in order to keep the legible
Diffstat (limited to 'libs/ardour/beats_samples_converter.cc')
-rw-r--r-- | libs/ardour/beats_samples_converter.cc | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/libs/ardour/beats_samples_converter.cc b/libs/ardour/beats_samples_converter.cc new file mode 100644 index 0000000000..67b13cd05f --- /dev/null +++ b/libs/ardour/beats_samples_converter.cc @@ -0,0 +1,74 @@ +/* + Copyright (C) 2009 Paul Davis + Author: David Robillard + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + + $Id: midiregion.h 733 2006-08-01 17:19:38Z drobilla $ +*/ + +#include "pbd/stacktrace.h" + +#include "ardour/beats_samples_converter.h" +#include "ardour/tempo.h" + +namespace ARDOUR { + +/** Takes a positive duration in quarter-note beats and considers it as a distance from the origin + * supplied to the constructor. Returns the equivalent number of samples, + * taking tempo changes into account. + */ +samplepos_t +BeatsSamplesConverter::to (Evoral::Beats beats) const +{ + if (beats < Evoral::Beats()) { + std::cerr << "negative beats passed to BFC: " << beats << std::endl; + PBD::stacktrace (std::cerr, 30); + return 0; + } + return _tempo_map.samplepos_plus_qn (_origin_b, beats) - _origin_b; +} + +/** Takes a duration in samples and considers it as a distance from the origin + * supplied to the constructor. Returns the equivalent number of quarter-note beats, + * taking tempo changes into account. + */ +Evoral::Beats +BeatsSamplesConverter::from (samplepos_t samples) const +{ + return _tempo_map.framewalk_to_qn (_origin_b, samples); +} + +/** As above, but with quarter-note beats in double instead (for GUI). */ +samplepos_t +DoubleBeatsSamplesConverter::to (double beats) const +{ + if (beats < 0.0) { + std::cerr << "negative beats passed to BFC: " << beats << std::endl; + PBD::stacktrace (std::cerr, 30); + return 0; + } + return _tempo_map.samplepos_plus_qn (_origin_b, Evoral::Beats(beats)) - _origin_b; +} + +/** As above, but with quarter-note beats in double instead (for GUI). */ +double +DoubleBeatsSamplesConverter::from (samplepos_t samples) const +{ + return _tempo_map.framewalk_to_qn (_origin_b, samples).to_double(); +} + +} /* namespace ARDOUR */ + |