2 Copyright (C) 2002-2010 Paul Davis
4 This program is free software; you can redistribute it and/or modify it
5 under the terms of the GNU Lesser General Public License as published by
6 the Free Software Foundation; either version 2 of the License, or (at your
7 option) any later version.
9 This program is distributed in the hope that it will be useful, but WITHOUT
10 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
12 License for more details.
14 You should have received a copy of the GNU Lesser General Public License
15 along with this program; if not, write to the Free Software Foundation,
16 Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19 #ifndef __timecode_bbt_time_h__
20 #define __timecode_bbt_time_h__
28 /** Bar, Beat, Tick Time (i.e. Tempo-Based Time) */
30 static const double ticks_per_beat
;
37 : bars (1), beats (1), ticks (0) {}
39 BBT_Time (uint32_t ba
, uint32_t be
, uint32_t t
)
40 : bars (ba
), beats (be
), ticks (t
) {}
42 BBT_Time (double beats
);
44 bool operator< (const BBT_Time
& other
) const {
45 return bars
< other
.bars
||
46 (bars
== other
.bars
&& beats
< other
.beats
) ||
47 (bars
== other
.bars
&& beats
== other
.beats
&& ticks
< other
.ticks
);
50 bool operator== (const BBT_Time
& other
) const {
51 return bars
== other
.bars
&& beats
== other
.beats
&& ticks
== other
.ticks
;
58 operator<< (std::ostream
& o
, const Timecode::BBT_Time
& bbt
)
60 o
<< bbt
.bars
<< '|' << bbt
.beats
<< '|' << bbt
.ticks
;
65 print_padded (std::ostream
& o
, const Timecode::BBT_Time
& bbt
)
67 o
<< std::setfill ('0') << std::right
68 << std::setw (3) << bbt
.bars
<< "|"
69 << std::setw (2) << bbt
.beats
<< "|"
70 << std::setw (4) << bbt
.ticks
;
75 #endif /* __timecode_bbt_time_h__ */