John Emmas
2245e362b9
TempoMap::twist_tempi() gets used outside of libtemporal so needs to get exported
2022-05-03 11:31:43 +01:00
b5487415ec
editing: a partiaally implemented version of TempoTwistDrag, to be completed.
2022-05-02 16:47:23 -06:00
86e7a1b259
temporal: no reason for Point::set() to be virtual
2022-05-02 16:45:33 -06:00
55755d5453
temporal: fix TempoMap::reset_starting_at()
...
We were using a given tempo or meter point as part of the metric used when
recomputing its position. In fact, the metric should be only use the
tempo/meter immediately preceding the given point.
2022-05-02 16:44:15 -06:00
00b9e3f86a
temporal: change return type of TempoMap::next_tempo()
...
It is more useful to get the actual TempoPoint than just the Tempo
that we discover.
Aside: it would be awesome to understand how to use boost::intrusive to get the
next tempo point directly from the tempo hook.
2022-05-02 11:40:23 -06:00
Mads Kiilerich
06f8936a73
wscript: remove trailing whitespace
2022-04-09 12:16:37 +02:00
7fd8544e31
temporal: fix copy-n-paste error in TempoCommand cosntructor
2022-04-08 11:58:04 -06:00
e466736e2d
temporal: remove MementoBinder API for tempo map undo/redo
2022-04-08 11:58:04 -06:00
a806ede94d
temporal: add TempoCommand, a Command-derived structure for managing undo/redo w.r.t TempoMap
2022-04-08 11:58:04 -06:00
7c3268d12f
temporal: TempoMap::use() returns a const ptr to enforce semantics (library version)
...
This commit leaves two issues outstanding:
1. unclear/ugly semantics for drag operations that reset the GUI thread's tempo map to the writable copy
2. undo/redo for the tempo map
These will be addressed in future commits
2022-04-08 11:58:04 -06:00
7bf89ce109
Constification: make Stateful::get_state() const, with all other required const-ness added (libs)
2022-04-06 21:56:59 -06:00
1d10408bd1
temporal: add some relatively useless code to one of the timeline test functions
2022-04-05 20:52:10 -06:00
ae3548c1da
temporal: fix location of enum conversion decls
...
Without these changes, minor changes in include file
ordering or extent elsewhere can cause compiler errors.
2022-04-05 20:52:09 -06:00
dae649d79c
temporal: add namespace to macro definition to make it usable everywhere
2022-04-05 20:52:09 -06:00
bf2618e97b
temporal: fix crash during reset_starting_at()
2022-03-23 18:03:42 -06:00
857856431e
temporal: remove debug output and stacktrace
2022-03-23 17:42:52 -06:00
74a4678c04
temporal: NOOP add explanatory comment
2022-03-23 17:42:52 -06:00
214c291e55
temporal: fix ::set_state() for old sessions where initial meter was moved to non-zero location
2022-03-23 17:42:52 -06:00
b4cf61304c
fix meter point removal
...
std::upper_bound() was not the correct tool to find the existing point,
it should have been std::lower_bound(). For code consistency, this
change doesn't use either but like ::remove_tempo() and similar methods,
just iterates over the whole list
2022-03-21 11:35:34 -06:00
d29c70a2a2
temporal: add new variant of TempoMap::bbtwalk_to_quarters()
2022-03-19 15:25:14 -06:00
8ebd097df9
move #includes so that they are only used if needed
2022-03-17 17:43:43 -06:00
a803dd0df8
superclock_ticks_per_second: use an (inline) accessor, change value
...
We do not want a value as large as the previous one, which limits the time
range that can be represented in 62 bits unnecessarily. The new value is
9 times smaller than the previous value, and loses only 384000 as a significant
factor.
This commit also switches to using an (inline) accessor for superclock_ticks_per_second,
making it possible in debug/testing phases to spot early/illegal uses of the value.
2022-03-17 14:15:59 -06:00
e603b2e12d
Remove debug messages (1/2)
2022-03-16 17:08:14 +01:00
10dc09fcd4
temporal: extend TempoMap thread local ptr API a little
...
This allows checking to see if the map has changed compared with the thread's
current local pointer.
2022-03-14 14:03:07 -06:00
da95a0a0ee
replace sample rate callback used for superclock<=>sample conversion
...
Now using a globally-scoped static variable which is updated by the
AudioEngine whenever an SR change occurs. Defaults to 48kHz and can
be used even before there is a backend.
2022-03-14 14:03:07 -06:00
2c769e9f23
Fix Beats::rount_to.. Bar rounding
2022-03-04 19:41:25 +01:00
ab3a7dc721
Fix bbt_subtract math
...
When r.ticks is already negative, add the negative value
(not subtract), likewise handle negative beat offset correctly.
2022-03-04 19:40:30 +01:00
92d82866e0
temporal: add some basic BBT time tests
...
Some of the subtraction tests may need revising because it is not immediately clear that the
current answers are correct.
2022-02-21 11:55:44 -07:00
c5d7883538
temporal: add skeleton for Timeline (timepos_t/timecnt_t) tests
2022-02-12 22:25:17 -07:00
baaf332a94
temporal: add skeleton for TempoMap tests
2022-02-12 22:25:17 -07:00
14ac8fd36b
skeleton for temporal/BBT testing (empty for now)
2022-02-12 17:51:30 -07:00
f641a0559f
temporal: missing test source
2022-02-12 15:18:19 -07:00
04bd9187e4
temporal: add (back) first set of unit tests
...
This just uses the old Evoral BeatTest. Some of the tests needed amending
because temporal uses rint() to convert between float and int, not just
a cast.
2022-02-12 15:12:35 -07:00
3553d56f05
tempo map: fix loading 6000-version or earlier tempo maps
...
Probably a copy-n-paste error meant the reversed logic was used
to decide if we had found an inital tempo and meter
2022-02-11 08:46:49 -07:00
c6a31250ba
alter Source::_length from timecnt_t to timepos_t
...
THe length of a Source(File) is always measured from its start. In this sense,
the length is like a position on the timeline, which is a duration with an
implicit origin, or a Region start, also a duration with an implicit origin (in
that case the start of the Source). There is no good reason for using
a timecnt_t for this value, because the position component of a timecnt_t
(the origin for the duration) is implicit and always zero. So we make
this property into a timepos_t, and include a number of asserts() to check
for common possible coding errors related to the time domain
2022-01-28 15:52:27 -07:00
b7769a8f4b
possible fix for a valgrind reported illegal read
2022-01-24 16:42:12 -07:00
Mads Kiilerich
8bb91099c5
wscript: drop configure statements already present in the top level wscript
...
Avoid repeated pointless configure messages like:
Checking for 'g++' (C++ compiler!) : /usr/lib64/ccache/g++
Checking for 'gcc' (C compiler) : /usr/lib64/ccache/gcc
2022-01-22 22:19:03 +01:00
dbefba9904
temporal: have tempo map expose it's separate (intrusive) lists of tempo, meter and bbt points
2022-01-18 19:47:20 -07:00
d8c90decf3
triggerbox: use follow length when quantizing re-start of Again-selected trigger
...
This also changes the virtual method from ::startup() to ::_startup() so that we can
safely have a default argument in ::startup().
2022-01-13 12:09:23 -07:00
9b5e910717
temporal: add additional required string_to/to_string functions for BBT_Offset & BBT_Time
2021-12-18 14:11:25 -07:00
506bc3a6f6
Disambiguate zero(bool)
constructor and is_zero()
comparison
...
This is mainly for the benefit of Lua bindings, but also increases
overall API naming consistency with functions and methods
`is_XYZ()` being used elsewhere.
This API change breaks builds!
2021-12-11 14:33:45 +01:00
940d8844e3
temporal: fix implementation of Beats::snap_to(), and add variants
...
::snap_to() was intended to round a Beats value to the nearest multiple
of another Beats value. It did not do that, but instead rounded down.
Worse, it used Beats::operator/ which in turn uses int_div_round(),
which is incorrect for a situation where we need integer truncation.
The changes fix the actual arithmetic and add 2 variant functions so that the
API includes round down, round up and round to nearest.
2021-11-29 21:50:29 -07:00
878393e68b
temporal: fix construction of timepos_t and timecnt_t with max_sample{pos,cnt}
...
max_samplepos and max_samplecnt and both INT64_MAX which is (a) too large to fit into a signed 62 bit
integer and (b) definitely too large to be represented in a signed 62 bit superclock value.
Move the constructors that use samplepos_t into the .cc file, and treat these two values as special
cases that mean "as large/late/huge/long as possible".
2021-11-22 10:35:52 -07:00
d71b3100d8
temporal: handle negative positional values that somehow appear in older sessions
2021-11-22 10:28:13 -07:00
6e404ea7bf
tempomap: reimplement TempoMap::bbt_walk()
...
This still needs work to deal correctly with negative (backwards/earlier)
walks.
2021-11-17 15:59:03 -07:00
b1b5553d1d
tempomap: allow access to TempoMap::bbt_at () variant
2021-11-17 15:58:33 -07:00
2aefb472e2
temporal: change API of TempoMap::sample_at() to not require an explicit sample rate
...
We have a mechanism to get the engine sample rate and use that widely. We
should use it here also.
2021-11-17 15:56:06 -07:00
3c9bebda00
remove debug output
2021-11-17 12:16:39 -07:00
180c1d7759
tempo map: slight reorganization of ::get_grid
...
This avoids resetting beats based on superclocks in case where we
already do the opposite.
2021-11-17 12:16:39 -07:00
7dbf2445f5
tempo map: NOOP: expand comment to explain more
2021-11-17 12:16:39 -07:00
a5ccb521e6
tempo map: NOOP helpful comment, perhaps
2021-11-17 12:16:39 -07:00
73c87064a5
tempo map: NOOP correct comment text
2021-11-17 12:16:39 -07:00
c7adea3ec0
tempo map: really no-op code change to provide another useless compiler const hint
2021-11-17 12:16:39 -07:00
d9b1d2ccc8
temporal: NOOP add helpful comment about bar_mod argument
2021-11-17 12:16:39 -07:00
b3451f4055
tempo map: fix computation of superclocks_per_note_type_at()
...
Code used position as an absolute, rather than offset from the point
that defines tempo. It worked if the point was at zero, but not
otherwise.
2021-11-17 12:16:39 -07:00
a417cbae4b
tempo map: fix a potential bug (not seen in the wild) when generating the grid
...
the "p" variable could point to _points.end(), so we cannot indirect and use
p->sclock() value unconditionally.
2021-11-17 12:16:39 -07:00
1ba2e28d6f
tempo map: fix grid generation with ramped tempos
...
The old code used the instantaneous tempo at T0 to compute where the next
quarter note would be. This is incorrect, since the tempo is
changing (continuously, for now) during the time represented by that quarter
note. Instead, we need to add a quarter note (or technically, whatever the
tempo note type is) to get a new position in beats, then compute the superclock
time at that location (which will use our equations for tempo, including the
use of omega, the ramp factor).
2021-11-17 12:16:39 -07:00
8972ed1517
temporal: add Tempo::note_type_as_beats()
2021-11-17 12:16:39 -07:00
7edcda4fc1
temporal: logic fixes for several tempo map modification methods
2021-11-17 12:16:39 -07:00
1532ebb38f
temporal: truncate ::to_string() method for timeline types to ::str() for easier use in debugger
2021-11-17 12:16:38 -07:00
7a12458244
temporal: improve implementation of TempoMap::meter_at() and more templating
...
Needed to move template defns around to ensure that required instances are defined
2021-11-17 12:16:38 -07:00
4128088b70
temporal: TempoMap::tempo_at() ... templates FTW
2021-11-17 12:16:38 -07:00
fb2281129a
temporal: add clarifying comments to TempoMap::remove_*()
...
These comments should correct an impression left in the commit message for
6e9e28343bc3695d that there may be some sort of problem with synchronization
of TempoMap changes. The actual problem is that TempoMap edits are done using
RCU, so the modifications are performaned using a copy of the map, but with
map elements taken from the pre-copy version.
2021-11-17 12:16:38 -07:00
b67965f499
temporal: add the entire _points list to output of TempoMap::dump()
2021-11-17 12:16:38 -07:00
8a59f3fe8e
temporal: fix issue with removal of tempo, meter and bartime points
...
The correct algorithm is to traverse the type-specific list of points,
find the point (if any) whose time matches that of the argument (because
we do not allow multiple points of the same type at the same time), and
then use that discovered point from the _points list.
This approach is required because the actual argument may no longer be
in the tempo map (due to a change made by another thread). The lack of
sync, however, needs investigation.
2021-11-17 12:16:38 -07:00
5b5ca546e0
temporal: fix incorrect implementation of TempoMap::tempo_map()
...
std::lower_bound() is not appropriate here. We need to find the first
TempoPoint after the given time, then return the one before that.
2021-11-17 12:16:38 -07:00
e7e44351cc
temporal: move implementation of quarters_per_minute_at() into .cc file
2021-11-17 12:16:38 -07:00
a0e134e1b3
temporal: update comment on a method that suggest not using it; provide TempoMap::quarters_per_minute_at ()
2021-11-17 12:16:38 -07:00
4f3bf37680
temporal: implement a faster method to lookup TempoPoint
...
There is no reason to build a TempoMetric if you only need the Tempo
2021-11-17 12:16:38 -07:00
8c632c8446
temporal: allow negative timecnt_t to be used when constructing a timepos_t
...
Negative positions are legal and should be handled by higher level logic
2021-11-14 15:22:53 -07:00
4376185a6b
temporal: fix TempoPoint::superclock_at (Beats)
...
a negative beat position needs to be legal, so the assert was moved and modified. The only check
for a negative value is that the TempoPoint being used is at absolute zero.
This check might turn out to be wrong in the future, but for now we still require a tempo and
meter point at absolute zero
2021-10-29 12:55:14 -06:00
480907d613
add sstream header file, since the header file requires the defn
2021-10-14 13:12:31 -06:00
bb87ba49d9
remove unnecessary boost header (we have our own ratio_t)
2021-10-14 13:12:31 -06:00
89c17dfe7d
remove debug output
2021-10-05 14:00:34 -06:00
dadf530243
temporal: change loading of session format 3x tempo maps
...
We were attempting to add the initial tempo and meter twice, which was unwise
2021-10-05 13:57:10 -06:00
0acc1a3fec
temporal: use correct implementation of timepos_t::operator+ (timecnt_t) (and +=)
...
If time domains differ, it is necessary to first convert the argument duration into a duration
at the position of "this", in the correct time domain. Then we recursively call the operator
again, but this time we will use the fast path that just adds two timepos_t values.
2021-10-04 17:45:02 -06:00
ed3d374f47
Fix --no-nls compilation 1/2 -- #8802
...
pbd/i18n.h MUST NEVER be included from header files and always be
the last include. This is because `_` is declared other headers
notably boost and some apple headers.
leading to issues like
../libs/pbd/gettext.h:58:27: error: expected unqualified-id before ‘const’
58 | # define gettext(Msgid) ((const char *) (Msgid))
2021-09-27 16:28:44 +02:00
30a00c5e9f
Fix implementation of timecnt_t::operator==() to compare both duration and position
2021-09-25 16:49:51 -06:00
John Emmas
666e62076c
Part 2: Complete the changes needed to make 'boost::intrusive::list' work with MSVC
...
It turned out that 'boost::intrusive::list_base_hook<>' won't compile if its parent class is declared using '__declspec(dllexport)' - so rather than exporting each entire class, let's use the alternative approach and export the various class members individually.
2021-09-18 13:40:22 +01:00
cb81b06a5d
Revert "Fix div/zero, allow switching backends"
...
This reverts commit 1288262ca7
.
2021-09-15 17:52:53 +02:00
John Emmas
840e63e6b2
Prefer tags for 'boost::intrusive::list' rather than list_member_hook<>
...
list_member_hook<> is very troublesome in MSVC and is known to cause problems in other compilers when used inside a class which has a virtual base class.
2021-09-15 09:28:54 +01:00
1288262ca7
Fix div/zero, allow switching backends
...
When switching backends, the effective sample-rate is zero.
This only affects the butler thread (the only active thread when
stopped). The actual issue here is the butler calling
"non-realtime-stop" without a backend. However fixing 0/0
generally seems appropriate.
```
#0 in int_div_round<long>(long, long) (x=0, y=0) at ../libs/pbd/pbd/integer_division.h:36
#1 in Temporal::samples_to_superclock(int64_t, int) (samples=0, sr=0) at ../libs/temporal/temporal/superclock.h:39
#2 in Temporal::timepos_t::timepos_t(long) (this=0x7f94bc0a5890, s=0) at ../libs/temporal/temporal/timeline.h:55
#3 in ARDOUR::Automatable::non_realtime_locate(long) (this=0x55a12a980cc8, now=0) at ../libs/ardour/automatable.cc:421
#4 in ARDOUR::Route::non_realtime_locate(long) (this=0x55a12a980ae0, pos=0) at ../libs/ardour/route.cc:5462
#5 in ARDOUR::Session::non_realtime_stop(bool, int, bool&) (this=0x55a12e0cd000, abort=false, on_entry=1, finished=@0x7f94bc0a5e0f: true) at ../libs/ardour/session_transport.cc:1487
#6 in ARDOUR::Session::butler_transport_work(bool) (this=0x55a12e0cd000, have_process_lock=false) at ../libs/ardour/session_transport.cc:1153
#7 in ARDOUR::Butler::thread_work() (this=0x55a12f3b7000) at ../libs/ardour/butler.cc:222
#8 in ARDOUR::Butler::_thread_work(void*) (arg=0x55a12f3b7000) at ../libs/ardour/butler.cc:16
```
2021-09-11 04:54:40 +02:00
1904c4aa29
temporal: fix operator>> for Beats when handling pre-nutempo formats (double)
2021-09-10 12:15:24 -06:00
John Emmas
f6ed73986b
A few visibility changes needed for linking to libtemporal (when building with MSVC)
2021-09-04 12:28:15 +01:00
John Emmas
d7d966e02b
Adapt 'Temporal::TempoMap::tempo_map_p' to be buildable with MSVC
...
Whenever a variable gets declared using 'thread_local' MSVC requires that it should not be compiled with DLL linkage (i.e. it mustn't be exportable). So for Temporal::TempoMap we'll need to export the required members individually, rather than exporting the entire class.
2021-09-03 10:02:41 +01:00
7dba843cb4
temporal: fix error in operator>> for BBT_offset
2021-08-31 22:33:33 -06:00
4eda53c8c9
temporal: add to_string() converters for BBT_Offset
2021-08-31 16:45:44 -06:00
Nil Geisweiller
21c94b23f3
Make BBT_Time::print_padded const
...
As this method does not modify BBT_Time it can be const. This allows such
method to be called over a const BBT_Time instance.
2021-08-30 02:24:38 +03:00
John Emmas
d3cd621f7a
Initial changes needed for building libtemporal with MSVC
...
Later I'll need to push some extra changes (to support 'tempo_map_p' and 'boost::intrusive::list' etc) but these initial ones (hopefully!) won't cause any issues for the other builds.
2021-08-29 11:03:58 +01:00
fee4292bde
allow negative superclock -> negative beats computation
2021-08-23 11:36:54 -06:00
2f4a623c56
remove unnecessary headers
2021-08-13 15:31:43 -06:00
9c2e4ec6d2
libtemporal: fix timepos_t::set_time_domain()
...
For legacy reasons, this was going via a sample intermediate representation
2021-08-13 12:51:36 -06:00
1927e4673b
remove StepSequencer, BeatBox and BeatBoxGUI from wscripts and #ifdef code occurences. Files remain
2021-08-13 12:51:36 -06:00
e7cdca1ea2
remove some debug output
2021-08-13 12:51:36 -06:00
caba355012
Add required copy constructor for Temporal::Meter
2021-08-13 12:51:35 -06:00
38aa2560f3
libtemporal: remove unnecessary initialization
2021-08-13 12:51:35 -06:00
f61adcd738
temporal: knarly template code to consolidate and rationalize duplicated methods
2021-08-13 12:51:35 -06:00
585346ce56
libtemporal: fix many different issues with tempo ramps
...
API changes, ensuring omega is computed, saved, and restored, generic methods to get tempo/meter at a position, and lots more
2021-08-13 12:51:35 -06:00
3256350ef8
libtemporal: needs "OSX" pseudo-lib to pick up required macOS flags
2021-08-13 12:51:35 -06:00
5895909188
libtemporal: remove unnecessary inclusion of pbd/compose.h from beats.h
...
this causes breakage in clangs ADL lookup of various operator<<() overloads
2021-08-13 12:51:35 -06:00
3170f880c2
stop clang from complaining about a missing return after a guaranteed assert() failure
2021-08-13 12:51:35 -06:00
f721655916
libtemporal: to quote the matrix, there is no lock
2021-08-13 12:51:35 -06:00
bccdc95f32
libtemporal: fix logic for ::get_tempo_and_meter() if starting point is the timeline start
2021-08-13 12:51:35 -06:00
1f8290f154
generalize repeated code into a template method, add lots of const-ness to facilitate this
2021-08-13 12:51:35 -06:00
c5ecd14622
temporal: fix logic errors in setting up TempoMetric objects
...
will likely revisit this to avoid code-duplication and "optimize" traversal of _points list
2021-08-13 12:51:35 -06:00
8bada4b5e1
remove public ::bbt_at (INTEGER) methods, because of superclock_t/samplepos_t confusion
...
libtemporal still needs ::bbt_at (superclock_t) fairly often so retain it as a private method, but public
interfaces take either Beats or timepos_t
2021-08-13 12:51:35 -06:00
53e411c011
fix logic error in conditional
2021-08-13 12:51:35 -06:00
6f2fdc2695
functioning loading of older tempo map XML data
2021-08-13 12:51:35 -06:00
092a454648
fix timepos_t::string_to (wrong argument to samples_to_superclock()
2021-08-13 12:51:35 -06:00
445ad2e383
rearrange if/else logic to avoid NOTREACHED condition
2021-08-13 12:51:35 -06:00
b84402f4f8
intial steps for adding legacy (v0-5) tempo map deserialization support
2021-08-13 12:51:35 -06:00
344dd26788
improved DEBUG_TRACE statements for tempo map
2021-08-13 12:51:35 -06:00
cd34695944
fix TempoMap::quarters_at_superclock (superclock_t)
2021-08-13 12:51:35 -06:00
74ff3b22b8
fix TempoPoint::superclock_at(Beats)
2021-08-13 12:51:35 -06:00
216945a89c
move TempoMap::write_copy() into .cc file instead of .h
2021-08-13 12:51:35 -06:00
ce3fb0507c
change return type of Tempo::set_{ramped,clamped} and fix call sites
2021-08-13 12:51:35 -06:00
99c8c0b658
initial, tentative, untested implementation of TempoMap::remove_time()
2021-08-13 12:51:35 -06:00
991a7bf8a7
add TempoMap::count_bars() to allow bar counting even with position (BBT) markers in the tempo map
...
This just reuses the algorithm in TempoMap::get_grid() by asking for just the bar grid, and counting the
size of the result
2021-08-13 12:51:35 -06:00
0ab2308523
reimplement TempoMap::midi_clock_beat_at_or_after()
2021-08-13 12:51:35 -06:00
0b1d44f422
temporal: fix timepos_t::decrement() to not switch domains
2021-08-13 12:51:35 -06:00
daad7b74ae
libtemporal: rename TempoMap::full_duration_at() to ::convert_duration() and reorder parameters
2021-08-13 12:51:34 -06:00
7773fc5b64
libtemporal: TempoMap::full_duration_at() returns correct value for unchanged time domain call
2021-08-13 12:51:34 -06:00
b7bc3b1947
libtemporal: expand comment to explain more about what TempoMap::full_duration_at() does
2021-08-13 12:51:34 -06:00
c0c3fd07c9
libtemporal: add timecnt_t::end() and timecnt_t::set_time_domain()
2021-08-13 12:51:34 -06:00
beaa1b3fcb
be sure to check the return from the RCU mgr ::update method() inside TempoMap::update()
2021-08-13 12:51:34 -06:00
0877500437
libtemporal: don't compile file removed (too early) in a55df1ad6
2021-08-13 12:51:34 -06:00
5b3c5d3782
libtemporal: fix implementation of timepos_t::max() to avoid overflow for Beats time
2021-08-13 12:51:34 -06:00
b2510c0da2
libardour: use appropriate method to set AutomationList time domain from ::set_state()
2021-08-13 12:51:34 -06:00
2049cc44b2
libtemporal: tweak: don't both with local tempo map ptr
2021-08-13 12:51:34 -06:00
433a9ebe48
libtemporal: catch attempts to convert max audio time values into beats, early
2021-08-13 12:51:34 -06:00
d576fc8ca9
libtemporal: when computing Beats from a ticks value, do not try to pass potentially overflowing ticks value
2021-08-13 12:51:34 -06:00
1af74f7398
libtemporal: correct the definition of std::numeric_limits<Beats>::max(). Comment in code contains details.
2021-08-13 12:51:34 -06:00
bbb3ca01fa
libtemporal: remove several BBT-related methods that are not used and problematic for BBT/position markers
2021-08-13 12:51:34 -06:00
0667a50a11
libtemporal: improve TempoMap::get_grid()'s decision making about what bar points to include when bar_mod == 1
2021-08-13 12:51:34 -06:00
877e896caf
libtemporal: TempoMap::apply_with_metrics() needs to use *all* metrics (inc. MusicTimePoints)
2021-08-13 12:51:34 -06:00
a49ed5505e
libtemporal: no need for a default MusicTimePoint in the tempo map (default tempo+meter points serve same role)
2021-08-13 12:51:34 -06:00
34a3db7eaa
use existing (inline) method for updating thread local tempo map after update (avoid code duplication)
2021-08-13 12:51:34 -06:00
901f593af5
avoid unnecessary extra fetch of thread-local tempo map after undo/redo
2021-08-13 12:51:34 -06:00
cffc25a11c
libtemporal: make TempoMap::metric_at() variants use all Points, to account for music time points as well as explicit tempo/meter points
2021-08-13 12:51:34 -06:00
c2401c3097
libtemporal: redesign TempoMap::get_grid() to iterate over _points rather than separated _tempos and _meters
2021-08-13 12:51:34 -06:00
8124bec5a1
libtemporal: fix XML node structure for MusicTimePoint
2021-08-13 12:51:34 -06:00
1035f9bd62
libtemporal: fix crash caused by thinko
2021-08-13 12:51:34 -06:00
388fa1b894
libtemporal: when removing tempos/meters/musictime points, remove them from TempoMap::_points also
2021-08-13 12:51:34 -06:00
982ccec7ab
libtemporal: when adding tempos/meters/musictime points, add them to TempoMap::_points also
2021-08-13 12:51:34 -06:00
b43eca15b0
Revert "libtemporal: the TempoMap::_points list serves no purpose, so remove it"
...
This reverts commit edc93fc62b6a36949b3cc37aee333904bc6b97f0.
2021-08-13 12:51:34 -06:00
d6d0eb0d9e
libtemporal: MusicTimePoint now IS-A Point,Tempo and Meter, all at once
2021-08-13 12:51:34 -06:00
cc0d065443
libtemporal: preparations to solve upcoming diamond inheritance problem
2021-08-13 12:51:34 -06:00
4e6c06bc95
libtemporal: add maybe-not-required operator>> for timeline types
2021-08-13 12:51:34 -06:00
ce82efafcf
libtemporal: slightly improve output from conversion statistics
2021-08-13 12:51:34 -06:00
ffc9ab66b5
libtemporal: remove TempoMap::metric_at_locked() methods
...
There is no lock anymore, all modifications are done via RCU
2021-08-13 12:51:33 -06:00
c9d3381935
libtemporal: increase DEBUG_TRACE utility for ::get_grid() and related matters
2021-08-13 12:51:33 -06:00
bd1b6dcda3
libtemporal: start making tempo map work with non-monotonic BBT "bar times" present
2021-08-13 12:51:33 -06:00
c8175b7c49
libtemporal: add new constructors for MusicTimePoint and MeterPoint
2021-08-13 12:51:33 -06:00
f86395688e
libtemporal: Beats::round_to_subdivision() was incorectly folding the "beats" part of the value back into the answer.
...
The "beats" value is already implicit in the "ticks" we actually do the math with
2021-08-13 12:51:33 -06:00
97a3469972
use new Tempo API in two places where Tempo is explicitly constructed
2021-08-13 12:51:33 -06:00
b8a7de43b6
libtemporal: change Tempo API to ensure that the correct construtor is called
...
This could be probably be improved with an even more distinct ramped/non-ramped API
2021-08-13 12:51:33 -06:00
c32de2355e
extra DEBUG_TRACE statement in tempo map grid computation
2021-08-13 12:51:33 -06:00
25375ee6f4
add timepos_t::set_time_domain() to potentially change time domains
2021-08-13 12:51:33 -06:00
eccfc1db10
libtemporal: fix grid generation if we pass additional markers before reaching the end
2021-08-13 12:51:32 -06:00
3017cd0c1f
libtemporal: remove unnecessary debug output
2021-08-13 12:51:32 -06:00
a9bf1cff81
libtemporal: add and use TempoMap::superclocks_per_grid_at() to return superclock duration of a measure/bar division. This corrects the results of ::get_grid()
2021-08-13 12:51:32 -06:00
7f19f13ea9
libtemporal: superclocks_per_bar/grid() do not need a sample rate argument, so remove it
2021-08-13 12:51:32 -06:00
e187752771
libtemporal: use DEBUG::Grid inside TempoMap::get_grid() for slightly easier debugging
2021-08-13 12:51:32 -06:00
8f147f273a
add new debug bit for Temporal grid stuff
2021-08-13 12:51:32 -06:00
7ec5af0b60
libtemporal: fix/improve TempoMap::move_meter() for audio-time case
2021-08-13 12:51:32 -06:00
84f53e3dc9
libtemporal: return value from function
2021-08-13 12:51:32 -06:00
fbb8a562fd
libtemporal: fix implementation of TempoMetric::bbt_at() to deal with cases where the beats value is not in quarter notes e.g. 7/8 time
2021-08-13 12:51:32 -06:00
68f6bff258
libtemporal: improve implementation/accuracy of Meter::round_to_bar()
2021-08-13 12:51:32 -06:00
be0a68c610
libtemporal: the TempoMap::_points list serves no purpose, so remove it
2021-08-13 12:51:32 -06:00
261c46e0f7
libtemporal: fix meter/tempo API so that we always put a heap-allocated object in the tempos/meters lists
2021-08-13 12:51:32 -06:00
9a2ec93a74
libtemporal: fix bug with placement of new MeterPoint
2021-08-13 12:51:32 -06:00
8737603d93
libtemporal: add abort_update() API to header
2021-08-13 12:51:32 -06:00
d5bfbe1cf4
libtemporal: provide API to abort TempoMap RCU update step
2021-08-13 12:51:32 -06:00
2c80aab912
libtemporal: do not emit MapChanged from methods that change TempoMap, only when we use RCU to switch ptrs
2021-08-13 12:51:32 -06:00
37399f7d50
libtemporal: move TempoMap::update() into .cc, add debug output and emit relevant signal at end
2021-08-13 12:51:32 -06:00
6a9330b2b0
libtemporal: fix TempoMap::fetch_writable() so that it actually does what its name describes
2021-08-13 12:51:32 -06:00
364fffd458
temporal: TempoMap::Changed is now a static member named TempoMap::MapChanged
2021-08-13 12:51:32 -06:00
657350455e
temporal: implement copy operator and operator= for TempoMap
2021-08-13 12:51:32 -06:00
146b432c51
temporal: extend debug output
2021-08-13 12:51:32 -06:00
4b52e1bf23
temporal: slightly reduce overflow risk (see comment)
2021-08-13 12:51:32 -06:00
279d1aa5dc
temporal: catch a special case when converting between superclock and beats
2021-08-13 12:51:32 -06:00
016aada4df
libtemporal: fix/improve/correct parsing of timecnt_t from string
2021-08-13 12:51:32 -06:00
d165c492af
temporal: fix/simplify/improve parsing of time values from strings
2021-08-13 12:51:32 -06:00
e590598dcf
libtemporal: move DEBUG::Beats into correct location
2021-08-13 12:51:32 -06:00
f015c08dd9
libtemporal: move Beats operator<< and operator>> to .cc and add exceptions for input
2021-08-13 12:51:32 -06:00
78233b343f
libtemporal: add operator<<() for ratio_t
2021-08-13 12:51:32 -06:00
209908f700
libtemporal: improve/fix implementation of timepos_t::operator+=(timepos_t)
2021-08-13 12:51:32 -06:00
9438295607
libtemporal: fix implementation of timecnt_t::operator+ (timecnt_t)
2021-08-13 12:51:32 -06:00
13f4ee2c1e
temporal: remove unnecessary TempoMap::dump_locked() method
2021-08-13 12:51:32 -06:00
47aa232f60
temporal: fix up creating/resetting tempo map state via XML
2021-08-13 12:51:32 -06:00
fa67e07d87
temporal: remove debug output
2021-08-13 12:51:32 -06:00
1e9e02e42f
temporal: fix setting tempos and meters from XML state
2021-08-13 12:51:32 -06:00
3eac6ac7dc
Temporal: remove last (?) double-based method
2021-08-13 12:51:32 -06:00
3e8f4d80fb
remove (almost) all floating point operations from Beats, add DoubleableBeats
...
The latter is a "wrapper" around Beats that provides ::to_double() for those times when we
absolutely need a floating point representation
2021-08-13 12:51:32 -06:00
80986b9445
libtemporal: add (commented) debug output for timepos_t::distance() methods
2021-08-13 12:51:31 -06:00
6fe4394c54
fix parameter name in comment
2021-08-13 12:51:31 -06:00
8c22ade428
libtemporal: fix Beats::round_to_subdivision()
2021-08-13 12:51:31 -06:00
0fa56402be
move DEBUG::SnapBBT into libtemporal
2021-08-13 12:51:31 -06:00
df0ac42f54
Temporal: cleanup for explicit Beats::operator bool()
2021-08-13 12:51:31 -06:00
05740e7069
Temporal: mark Beats::operator bool() as explicit, to avoid unintended/accidental use when implicitly casting to int/float types
2021-08-13 12:51:31 -06:00
5e0cf747bb
Temporal: removed unused std::numeric_limits<> definitions for timeline types
...
There can be no single ::max() or ::min() value for these types because the time domain matters. With a given
tempo map, a certain beat value represent a time before or after the maximum possible audio domain value
2021-08-13 12:51:31 -06:00
de3eb54958
Temporal: in an update to the previous commit, actually remove timepos_t::compute_ticks() rather than claim to implement it
2021-08-13 12:51:31 -06:00
400018e121
Temporal: implement timepos_t::compute_ticks()
2021-08-13 12:51:31 -06:00
0ce40fc648
Temporal: fix timepos_t (Beats) constructor
...
flag bit was set incorrectly
2021-08-13 12:51:31 -06:00
747281a244
Temporal: fix implementation of timecnt_t::operator= (timecnt_t const &)
...
It is OK now to have inconsistent time domains inside a timecnt_t
2021-08-13 12:51:31 -06:00
3900537fcf
split Beats::round_to_subdivision() into source module
...
Rounding to bar requires access to the tempo map, and we don't want this in
the beats.h header
2021-08-13 12:51:31 -06:00
5bef968069
Temporal: replace thread_local sample rate with callback to get sample rate
2021-08-13 12:51:31 -06:00
6e9f57d2ad
Temporal: remove scope braces left over from when we used a lock to protect the tempo map
2021-08-13 12:51:31 -06:00
b6f2e39ed4
Temporal: remove BarTime
2021-08-13 12:51:31 -06:00
5987376afc
Temporal: avoid recursive descent in TempoMap::quarters_at (timepos_t)
2021-08-13 12:51:31 -06:00
43d84620e0
Temporal: clean up API to remove ambiguity about ::quarter*_at_*
...
superclock_t and samplepos_t have the same underlying C++ type, so methods that accept one or the
other as an argument need to be named to make it clear which type they accept. We do not need
the superclock_t variant publically, but it turns out to be useful within TempoMap.
2021-08-13 12:51:31 -06:00
bed76798f3
manual fixups after rebase against master (general libs edition)
2021-08-13 12:51:31 -06:00
afea443419
remove API from Temporal:timecnt_t that used superclock_t
...
Not possible for a compiler to differentiate superclock_t and sample(pos|cnt)_t, which can lead to
subtle but major errors
2021-08-13 12:51:31 -06:00
9402548677
Temporal: add lots more DEBUG::TemporalMap output to tempo.cc
2021-08-13 12:51:31 -06:00
793579cf3f
Temporal: expand displayed info for Tempo's operator<<
2021-08-13 12:51:31 -06:00
a0b9030e3c
Temporal: fix logic during ::get_grid that ignored if rounding did nothing
2021-08-13 12:51:31 -06:00
f1bb135013
Temporal: fix computation of ::quarters_at()
2021-08-13 12:51:31 -06:00
7085dccebc
Temporal: make Tempo:: super_note_type_per_second publically accessible
2021-08-13 12:51:31 -06:00
c3d325b56a
Temporal: clean up API for timepos_t to remove unneeded duplicates and remove ambiguity
2021-08-13 12:51:31 -06:00
52ddf91e5b
Temporal: explain with timepos_t::_{ticks,beats} are for
2021-08-13 12:51:31 -06:00
5887ee524e
Temporal: further improvements to a timepos_t::distance() method
2021-08-13 12:51:31 -06:00
7c56b9b2fc
Temporal: fix insanely incorrect implementation of timepos_t::distance()
2021-08-13 12:51:30 -06:00
def35cf043
mark BBT_Offset (double) constructor explicit to avoid implicit conversion in timeline expressions.
...
Also clean up the mess this had caused.
2021-08-13 12:51:30 -06:00
b01b6929fb
fix potential for overflow when converting larger sample counts to superclock.
...
int_div_rount<T> was using int (32 bits) which could overflow.
2021-08-13 12:51:30 -06:00
15b28b103a
NOOP: whitespace changes
2021-08-13 12:51:30 -06:00
f8a0ba246c
move superclock_ticks_per_second declaration
2021-08-13 12:51:30 -06:00
f0008898af
add operator<<() for timecnt_t()
2021-08-13 12:51:30 -06:00
b876baa757
Temporal: various changes to arithmetic/logic methods to avoid assert() on domain mismatches where none is really needed
2021-08-13 12:51:30 -06:00
baaa8f36ca
fix timepos_t::max and timecnt_t::max to avoid int62_t flag bit
...
Both should likely just re-use int62_t::max
2021-08-13 12:51:30 -06:00
02b98290c5
set uninitialized _time_domain member of TempoMap in constructor
2021-08-13 12:51:30 -06:00
8bd465fc61
Add method to set thread_local _thread_sample_rate complete with debugging output
2021-08-13 12:51:30 -06:00
b06b856934
tweak test code to check int62_t::min and flag bit
2021-08-13 12:51:30 -06:00
5772dcc72b
include temporal/range.cc as source module
2021-08-13 12:51:30 -06:00
8dbbc1df54
library changes to get libtemporal setup at application startup
2021-08-13 12:51:30 -06:00
adacaf3837
extend TempoMap API to assist with drag-RCU
2021-08-13 12:51:30 -06:00
49781e3b80
nominally fix up TempoMarkerDrag implementation for new TempoMap
2021-08-13 12:51:30 -06:00
cfac6ad254
comment code added in previous commit
2021-08-13 12:51:30 -06:00
44ff395ec8
move tempo map memento binder into .cc and actuall implement the RCU version
2021-08-13 12:51:30 -06:00
ed016dd4e6
fix TempoMap memento command binder
2021-08-13 12:51:30 -06:00
09d877004d
add a MementoCommand binder for TempoMap
2021-08-13 12:51:30 -06:00
79763893b3
remove/hide Session::tempo_map() and use TempoMap::use() instead (thread local shared ptr)
2021-08-13 12:51:30 -06:00
60d1c5f722
remove tempo map from Session
2021-08-13 12:51:30 -06:00
9f866a6bbe
consolidate some TempoMap modifier methods
2021-08-13 12:51:30 -06:00
dade9994d8
collect together modifying TempoMap methods, and make ::apply_with_metrics() more clearly const
2021-08-13 12:51:30 -06:00
c434289973
remove lock, _dirty and _generation nonsense from TempoMap (pre-RCU management)
2021-08-13 12:51:30 -06:00
1098b27b35
new tempo map API for almost all of the GUI now
2021-08-13 12:51:30 -06:00
f7ff656619
add convenience methods to access tempo & meter
2021-08-13 12:51:30 -06:00
5150e856b0
add to enums list for libtemporal
2021-08-13 12:51:29 -06:00
bf318aacb5
add missing file
2021-08-13 12:51:29 -06:00
e7d84a7c47
get further at runtime
2021-08-13 12:51:29 -06:00
534c08074d
changes to get program to actually run (missing symbols)
...
Still crashes at startup due to static initialization of initial tempo map.
2021-08-13 12:51:29 -06:00
cdab3a5e8f
fix a bunch of missing symbols related to temporal
2021-08-13 12:51:29 -06:00
749a49c278
incorporating new tempo map API
2021-08-13 12:51:29 -06:00
f67029bd02
random commit to facilitate trivial move of work from laptop back to main system
2021-08-13 12:51:29 -06:00
768ce21d9f
Temporal: new files, likely to be removed in the final version
2021-08-13 12:51:29 -06:00
b5c945e211
Temporal: another useful static method
2021-08-13 12:51:29 -06:00
8fb70885ec
changes needed to get audio_clock.cc to work
2021-08-13 12:51:29 -06:00
169bbf3b08
temporal: more API tweaks as conversions continue in libardour
2021-08-13 12:51:29 -06:00
bca8e2e8cc
libtemporal: changes derived from converting libardour
2021-08-13 12:51:28 -06:00
e111123b54
Temporal: fix test2.cc now that operator int64_t is private
2021-08-13 12:51:28 -06:00
ddac0f7651
Temporal: what was that comment about not being able to disambiguate samples and superclocks?
2021-08-13 12:51:28 -06:00
f06e2dd6d1
Temporal: remove constructors accepting scalar values from timepos_t/timecnt_t and force use of factory methods
...
This allows us to differentiate between superclock_t and samplepos_t (and related types) which are all typedef'ed to the
same underlying primitive C++ type. Without this, it would be impossible for the compiler or someone reading the code
to know whether a scalar passed to a constructor for a timeline type is in units of samples or superclocks
2021-08-13 12:51:28 -06:00
c75fc64306
Temporal: various changes to int62_t and timeline types based on code review
2021-08-13 12:51:28 -06:00
c192c49b65
Temporal: add std::numeric_limits<> for timecnt_t and comment on these in general
2021-08-13 12:51:28 -06:00
c04b9c2429
Temporal: add Range class from nutempo v1
...
This will replace Evoral::Range which unfathomably was implemented with inclusive bounds
2021-08-13 12:51:28 -06:00
b5bf518a0a
Temporal: fixes, changes, redesigns, extensions to be able to compile ARDOUR::Region with timepos_t/timecnt_t members
2021-08-13 12:51:28 -06:00
5285151d08
Temporal: alter which tests are run by test2
2021-08-13 12:51:28 -06:00
88cf07daa6
Temporal: add standalone compile instruction for test2.cc
2021-08-13 12:51:28 -06:00
3beffbd3ee
Temporal: add test program to evaluate performance of various ways of using int64_t atomically
2021-08-13 12:51:28 -06:00
56795a97a3
changes required to get ardour to start up (missing vars, incorrect values)
2021-08-13 12:51:28 -06:00
f5fad809fb
Temporal: add decl for thread-local tempo map pointer
2021-08-13 12:51:28 -06:00
d47d462182
Temporal: add debug bits declaration
2021-08-13 12:51:28 -06:00
b0a732e636
Temporal: extend timecnt_t API to provide samples() method, using thread-local sample rate
2021-08-13 12:51:28 -06:00
791e76290d
Temporal: extend timepos_t API to provide samples() method, using thread-local sample rate
2021-08-13 12:51:28 -06:00
4c6d6b14e5
Temporal: add new TempoMap implementation source
2021-08-13 12:51:28 -06:00
f42bd3fe47
add per-thread sample rate variable and libardour method to update it
2021-08-13 12:51:28 -06:00
1f0d9159a7
Temporal: use, don't fetch tempo map pointer
2021-08-13 12:51:28 -06:00
8ec81c2308
Temporal: correctly construct return timepos_t for * and /
2021-08-13 12:51:28 -06:00
e89d727939
Temporal: remove the final #warning from timeline.cc
2021-08-13 12:51:28 -06:00
b87c855240
Temporal: add string_to/to_string methods for timecnt_t
2021-08-13 12:51:28 -06:00
974196b7d2
Temporal: add timeline.cc
2021-08-13 12:51:28 -06:00
5a0969a5c2
Temporal: remove last bit of floating point API from timepos_t
2021-08-13 12:51:28 -06:00
9fe9658e8a
Temporal: add clarifying comment
2021-08-13 12:51:28 -06:00
ead17ed35c
Temporal: add ratio_t type (currently boost::rational<int64_T>
2021-08-13 12:51:28 -06:00
b1271a491e
Temporal: add TempoMap::use() which returns the per-thread ptr-to-tempo-map without updating the pointer
2021-08-13 12:51:28 -06:00
7446de72b1
Temporal: improve timepos_t::distance() implementations
2021-08-13 12:51:28 -06:00
2c69a1425f
Temporal: fundamental changes to get timeline.cc to compile
2021-08-13 12:51:28 -06:00
35d0519109
make superclock_t signed, to match signedness of int62_t
2021-08-13 12:51:28 -06:00
f4490f54c5
change Timecode::BBT_Time to use Temporal namespace, plus a couple of other minor changes to enable compilation
...
This still uses the tempo map object in libs/ardour, not the new one in libs/temporal, and isn't likely to be functional
(though it could be)
2021-08-13 12:51:28 -06:00
9abf90c9d5
add the new timepos_t/timecnt_t header
2021-08-13 12:51:28 -06:00
a80960468d
first pass at integrating nutempo v1 with new 64 bit superclock/ticks representation
...
This compiles libtemporal, but nothing more
2021-08-13 12:51:28 -06:00
e0b5b12129
basic work on a Tempo object that avoids (almost) all floating point arithmetic
...
Basic conversions between superclock and Beats are provided
2021-08-13 12:51:28 -06:00
4dc048b28a
update Temporal::Beats to merge master/nutempo versions, notably with private from-double constructor
...
This is the libraries-only edition. It still features liberal use of Beats::from_double() but this is now
explicit and will be easier to locate the calls and remove them. Several classes that were using
Beats::to_double() have been (temporarily) made friends of Beats to allow them to keep using it,
pending the much more widespread redesigns of several structures. Once this is done, the friend
relationships can (mostly) be removed. It is expected the ARDOUR::Variant will need to continue
as a friend because it is used to pass beat counts to LV2 as doubles
2021-08-13 12:51:28 -06:00
617fcd660c
add operator% and operator%= to Temporal::Beats (taken from nutempo)
2021-08-13 12:51:27 -06:00
c41c622b37
another BBT comparator fix
2021-08-13 12:51:26 -06:00
be831c6870
fix logic error in BBT_Time::operator>=
2021-08-13 12:51:26 -06:00
Hector Martin
4b9e46f11d
Fix normalization in Temporal::Beats for times between -1 and 0 beats
...
Also fix normalization of times with negative beats and positive ticks
2020-11-18 13:40:31 -07:00
John Emmas
754f9bba0c
Further change needed for 'libtemporal'
2020-05-29 12:28:13 +01:00
John Emmas
1d23e18efe
Initial vcproj changes for building Ardour6 / Mixbus6 with MSVC
2020-05-29 08:33:33 +01:00
70e27e0bf2
fix Beats::operator-()
2020-04-16 21:38:33 -06:00
bca825e515
NO-OP: whitespace
2020-01-14 00:52:24 +01:00
8b3e7fea37
fix Temporal::Beats::operator*
2019-12-18 18:00:53 -07:00
8ec3e5fb54
Fix deprecated-copy warnings
...
It's long been a guideline (and IIRC a Weff-c++ warning) that either all, or
none, of the copy methods should be defined, but this became a standard warning
in GCC9. Presumably to account for a later language change though I'm not sure
which.
I don't remember why the ChanMapping copy constructor can't just be a simple
copy (it's just a map of POD), but figure it's safer to just copy what that
does.
2019-12-09 23:25:59 +01:00
ecc2597870
Fix remaining doxygen warnings (!)
2019-09-30 21:03:29 +02:00
bfec73b8c3
NO-OP: whitespace, indent
2019-09-30 21:03:20 +02:00
0301c47f6b
Update core library GPL boilerplate and (C) from git log
2019-08-03 15:53:17 +02:00
8ed33f1bc7
remove use of hardcoded -fPIC compiler flag, and use compiler flag dict instead
2018-10-14 22:06:11 -04:00
9506a294c7
Adapt our remaining MSVC projects for 'boost::atomic' (in case it later gets extended to the other libs)
...
Stage 1 of 3 (more to follow)
2018-09-30 08:56:12 +01:00
79f01bc889
Initial changes needed for building Mixbus (with MSVC) as version 5
...
(Mixbus itself will probably need extra changes)
2018-09-10 07:14:59 +01:00
b9c9777b9a
When building with MSVC, allow for the fact that Mixbus and Ardour can be using different versions of the SESSION_FILE format
2018-02-15 09:03:32 +00:00
9a20433d98
fix definition of Temporal::Beats::max()
...
Ticks can exceed PPQN, but if beats are already INT32_MAX, ::normalize() will not work correctly
2018-02-12 11:44:37 -06:00
b2032938b1
Accommodate newly added/removed source(s) in our MSVC project (libtemporal)
2017-09-28 12:27:54 +01:00
657ba64ad2
Rename 'libs/temporal/MSVCtemporal/timecode.vcproj' to 'libs/temporal/MSVCtemporal/temporal.vcproj'
2017-09-28 12:27:54 +01:00
2750f7f485
Rename 'libs/temporal/MSVCtimecode' to 'libs/temporal/MSVCtemporal'
2017-09-28 12:27:53 +01:00
61be0990fa
change libtemporal to be versioned like all others
2017-09-25 12:13:54 -04:00
dcb55c508e
additional changes to follow library name change from timecode -> temporal
2017-09-25 12:13:54 -04:00
7db12f6b12
convert codebase to use Temporal for various time types
2017-09-24 12:03:54 -04:00
9283bee867
new header file for audio-based time types
2017-09-24 12:03:13 -04:00
48d402c960
part two of initial libtemporal creation
2017-09-24 10:48:00 -04:00
b62c305f20
change libtimecode to libtemporal, add Evoral::Beats, positional types and superclock headers
2017-09-24 10:47:28 -04:00