Paul Davis
|
6f2fdc2695
|
functioning loading of older tempo map XML data
|
2021-08-13 12:51:35 -06:00 |
|
Paul Davis
|
b84402f4f8
|
intial steps for adding legacy (v0-5) tempo map deserialization support
|
2021-08-13 12:51:35 -06:00 |
|
Paul Davis
|
344dd26788
|
improved DEBUG_TRACE statements for tempo map
|
2021-08-13 12:51:35 -06:00 |
|
Paul Davis
|
cd34695944
|
fix TempoMap::quarters_at_superclock (superclock_t)
|
2021-08-13 12:51:35 -06:00 |
|
Paul Davis
|
74ff3b22b8
|
fix TempoPoint::superclock_at(Beats)
|
2021-08-13 12:51:35 -06:00 |
|
Paul Davis
|
216945a89c
|
move TempoMap::write_copy() into .cc file instead of .h
|
2021-08-13 12:51:35 -06:00 |
|
Paul Davis
|
ce3fb0507c
|
change return type of Tempo::set_{ramped,clamped} and fix call sites
|
2021-08-13 12:51:35 -06:00 |
|
Paul Davis
|
99c8c0b658
|
initial, tentative, untested implementation of TempoMap::remove_time()
|
2021-08-13 12:51:35 -06:00 |
|
Paul Davis
|
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 |
|
Paul Davis
|
0ab2308523
|
reimplement TempoMap::midi_clock_beat_at_or_after()
|
2021-08-13 12:51:35 -06:00 |
|
Paul Davis
|
daad7b74ae
|
libtemporal: rename TempoMap::full_duration_at() to ::convert_duration() and reorder parameters
|
2021-08-13 12:51:34 -06:00 |
|
Paul Davis
|
7773fc5b64
|
libtemporal: TempoMap::full_duration_at() returns correct value for unchanged time domain call
|
2021-08-13 12:51:34 -06:00 |
|
Paul Davis
|
b7bc3b1947
|
libtemporal: expand comment to explain more about what TempoMap::full_duration_at() does
|
2021-08-13 12:51:34 -06:00 |
|
Paul Davis
|
beaa1b3fcb
|
be sure to check the return from the RCU mgr ::update method() inside TempoMap::update()
|
2021-08-13 12:51:34 -06:00 |
|
Paul Davis
|
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 |
|
Paul Davis
|
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 |
|
Paul Davis
|
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 |
|
Paul Davis
|
34a3db7eaa
|
use existing (inline) method for updating thread local tempo map after update (avoid code duplication)
|
2021-08-13 12:51:34 -06:00 |
|
Paul Davis
|
901f593af5
|
avoid unnecessary extra fetch of thread-local tempo map after undo/redo
|
2021-08-13 12:51:34 -06:00 |
|
Paul Davis
|
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 |
|
Paul Davis
|
c2401c3097
|
libtemporal: redesign TempoMap::get_grid() to iterate over _points rather than separated _tempos and _meters
|
2021-08-13 12:51:34 -06:00 |
|
Paul Davis
|
8124bec5a1
|
libtemporal: fix XML node structure for MusicTimePoint
|
2021-08-13 12:51:34 -06:00 |
|
Paul Davis
|
1035f9bd62
|
libtemporal: fix crash caused by thinko
|
2021-08-13 12:51:34 -06:00 |
|
Paul Davis
|
388fa1b894
|
libtemporal: when removing tempos/meters/musictime points, remove them from TempoMap::_points also
|
2021-08-13 12:51:34 -06:00 |
|
Paul Davis
|
982ccec7ab
|
libtemporal: when adding tempos/meters/musictime points, add them to TempoMap::_points also
|
2021-08-13 12:51:34 -06:00 |
|
Paul Davis
|
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 |
|
Paul Davis
|
d6d0eb0d9e
|
libtemporal: MusicTimePoint now IS-A Point,Tempo and Meter, all at once
|
2021-08-13 12:51:34 -06:00 |
|
Paul Davis
|
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 |
|
Paul Davis
|
c9d3381935
|
libtemporal: increase DEBUG_TRACE utility for ::get_grid() and related matters
|
2021-08-13 12:51:33 -06:00 |
|
Paul Davis
|
bd1b6dcda3
|
libtemporal: start making tempo map work with non-monotonic BBT "bar times" present
|
2021-08-13 12:51:33 -06:00 |
|
Paul Davis
|
97a3469972
|
use new Tempo API in two places where Tempo is explicitly constructed
|
2021-08-13 12:51:33 -06:00 |
|
Paul Davis
|
c32de2355e
|
extra DEBUG_TRACE statement in tempo map grid computation
|
2021-08-13 12:51:33 -06:00 |
|
Paul Davis
|
eccfc1db10
|
libtemporal: fix grid generation if we pass additional markers before reaching the end
|
2021-08-13 12:51:32 -06:00 |
|
Paul Davis
|
3017cd0c1f
|
libtemporal: remove unnecessary debug output
|
2021-08-13 12:51:32 -06:00 |
|
Paul Davis
|
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 |
|
Paul Davis
|
7f19f13ea9
|
libtemporal: superclocks_per_bar/grid() do not need a sample rate argument, so remove it
|
2021-08-13 12:51:32 -06:00 |
|
Paul Davis
|
e187752771
|
libtemporal: use DEBUG::Grid inside TempoMap::get_grid() for slightly easier debugging
|
2021-08-13 12:51:32 -06:00 |
|
Paul Davis
|
7ec5af0b60
|
libtemporal: fix/improve TempoMap::move_meter() for audio-time case
|
2021-08-13 12:51:32 -06:00 |
|
Paul Davis
|
84f53e3dc9
|
libtemporal: return value from function
|
2021-08-13 12:51:32 -06:00 |
|
Paul Davis
|
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 |
|
Paul Davis
|
68f6bff258
|
libtemporal: improve implementation/accuracy of Meter::round_to_bar()
|
2021-08-13 12:51:32 -06:00 |
|
Paul Davis
|
be0a68c610
|
libtemporal: the TempoMap::_points list serves no purpose, so remove it
|
2021-08-13 12:51:32 -06:00 |
|
Paul Davis
|
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 |
|
Paul Davis
|
9a2ec93a74
|
libtemporal: fix bug with placement of new MeterPoint
|
2021-08-13 12:51:32 -06:00 |
|
Paul Davis
|
d5bfbe1cf4
|
libtemporal: provide API to abort TempoMap RCU update step
|
2021-08-13 12:51:32 -06:00 |
|
Paul Davis
|
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 |
|
Paul Davis
|
37399f7d50
|
libtemporal: move TempoMap::update() into .cc, add debug output and emit relevant signal at end
|
2021-08-13 12:51:32 -06:00 |
|
Paul Davis
|
364fffd458
|
temporal: TempoMap::Changed is now a static member named TempoMap::MapChanged
|
2021-08-13 12:51:32 -06:00 |
|
Paul Davis
|
657350455e
|
temporal: implement copy operator and operator= for TempoMap
|
2021-08-13 12:51:32 -06:00 |
|
Paul Davis
|
146b432c51
|
temporal: extend debug output
|
2021-08-13 12:51:32 -06:00 |
|