Paul Davis
88a035b000
temporal: changes in API to better support BBT markers
2022-06-03 13:19:56 -06:00
Paul Davis
531db75a27
temporal: when dragging tempo/meter, move in points list as well
...
We spliced the point back into the tempo and meter lists correctly, but failed
to do the same thing for the same object's position in the points list.
2022-06-03 10:53:01 -06:00
Paul Davis
7dadb1407b
temporal: when copying points between TempoMaps do not double-count MusicTimePoints
...
They were counted as tempos, and meters, and bartimes individually, which
generated new tempo and meter points in the map, which is incorrect.
2022-06-03 10:53:01 -06:00
Paul Davis
1b904285be
temporal: improve utility of TempoMap::dump() output
2022-06-03 10:53:01 -06:00
Paul Davis
192b2fd839
temporal: fixes for TempoMap::move_meter()
2022-05-30 21:14:57 -06:00
Paul Davis
710cca9ccf
change logic for memory management when adding tempo,meter,bartime points
...
Because a bartime point IS-A tempo point and IS-A meter point, we cannot just delete the tempo
point passed into core_add_tempo() if the new point replaces an existing one. Ditto for meter.
So, leave that logic up to the caller
2022-05-29 15:01:54 -06:00
Paul Davis
03649dc32a
temporal: fix bug in TempoMap::get_grid() when next point (eg. BBT) is not on grid
2022-05-27 18:46:06 -06:00
Paul Davis
30c073f669
temporal: fix double negative causing semantic confusing and crashing
2022-05-25 21:53:27 -06:00
Paul Davis
540a15efa0
temporal: remove debug output
2022-05-24 18:08:31 -06:00
Paul Davis
a7ee848f70
temporal: improve accuracy of a comment/XXX item
2022-05-24 17:21:18 -06:00
Mads Kiilerich
2f5f917df2
libs/temporal: clarify superclocks-per-second usage comment
2022-05-24 17:15:37 -06:00
Paul Davis
25dc926f24
temporal: improve handling of MusicTimePoints and related matters
2022-05-24 17:10:25 -06:00
Paul Davis
d48ee3df0e
temporal: improve debug output when ::superclock_at() returns < 0
2022-05-24 17:10:25 -06:00
Paul Davis
8ee7dc35f4
temporal: improve operator<< for MusicTimePoint
2022-05-24 17:10:25 -06:00
Paul Davis
735835dff3
temporal: improve output of TempoMap::dump()
2022-05-24 17:10:25 -06:00
Paul Davis
c48430f502
temporal: refactor methods to add tempo/meter points
2022-05-24 17:10:25 -06:00
Paul Davis
e3501a05f8
temporal: remove the concept of a time domain for the tempo map
...
TempoPoint and MeterPoint always have their position set in musical time; MusicTimePoint (BBT)
always has a position in audio time. It's that simple
2022-05-24 17:10:25 -06:00
Paul Davis
7f5a576f66
temporal: fix continuing tempo section's tempo after end-stretch
2022-05-24 17:10:25 -06:00
Paul Davis
e7e467264f
temporal: add TempoMap::set_continuing() and make it and set_ramped return bool
2022-05-24 17:10:25 -06:00
Paul Davis
f2a596669e
temporal: set speed *and* tempo when setting tempo
2022-05-24 17:10:25 -06:00
Paul Davis
20d7313e13
temporal: change "clamped" terminology to "continuing" (since that's what the GUI calls it)
2022-05-23 08:07:08 -06:00
Paul Davis
1179b022da
temporal: fix error in TempoMap::previous_tempo()
2022-05-21 18:58:41 -06:00
Paul Davis
8de52a74bb
temporal: better fix for tempo ramp setting during ::reset_starting_at()
2022-05-21 17:28:38 -06:00
Paul Davis
5c8b7519c1
remove debug-only direct-to-output debug info that duplicates a DEBUG_TRACE msg
2022-05-21 16:38:36 -06:00
Paul Davis
c4844b00e3
temporal: when calling TempoMap::reset_starting_at(), fix ramps
...
Even if we start at time T, if the tempo point before T is ramped, we need to
adjust it's omega value based on the beat time of the following tempo point. If
we don't do this, then using that tempo to compute ::superclock_at() for
subsequent points will be incorrect.
Note: there may be an ordering issue here with Tempo/Meter points. We might
need to pass over all tempo points first, then process meters etc. Something
like that.
2022-05-21 16:35:00 -06:00
Paul Davis
029ef88059
temporal: wrap some calls to TempoMap::dump() in appropriate DEBUG stuff
2022-05-21 16:35:00 -06:00
Paul Davis
5476a20fc4
temporal: fix conditional when deciding which log expression to use inside ::superclock_at()
2022-05-20 11:20:39 -06:00
Paul Davis
9dd4931247
temporal: revert changes that created two different omegas; fix computation of ::superclock_at() for decelerando
...
changes in tempo can be negative (decelerando/slowing down), and thus so can _omega. We cannot call log() or its
cousins on negative values, so in this scenario use an alternate expression for "t from b" in the tempo.pdf paper
2022-05-20 09:06:25 -06:00
Paul Davis
7c2cb31b63
temporal: use boost::intrusive ::iterator_to to improve efficiency of ::next/previous_tempo()
2022-05-15 17:49:09 -06:00
Paul Davis
be5c64f737
temporal: NOOP - add blank line
2022-05-13 19:05:13 -06:00
Paul Davis
1ccda17504
temporal: add a new version of tempo twist based on pre-nutempo code
2022-05-13 19:05:13 -06:00
Paul Davis
60159acd33
temporal: slightly change const positioning in definition of ::stretch_tempo()
2022-05-13 19:05:13 -06:00
Paul Davis
b0ff612572
temporal: add DEBUG_TRACE message
2022-05-13 19:05:13 -06:00
Paul Davis
4defa3ae8f
temporal: fix logic bug in TempoMap::reset_starting_at()
2022-05-13 19:05:13 -06:00
Paul Davis
c9b7f012e4
temporal: helpful comment for future readers
2022-05-13 19:05:13 -06:00
Paul Davis
f0f8f15cce
temporal: missing change from 072a7b17a22f
2022-05-13 19:05:13 -06:00
Paul Davis
51980b15cd
temporal: split _omega into two values, for each time domain
...
omega can be computed from Beat or superclock duration. This gives rise to
different units for omega, and we must use the correct value in a given
context.
This commit also changes the way that the audio time omega is computed during
TempoMap::reset_starting_at()
2022-05-13 19:05:13 -06:00
Paul Davis
f679cd6eab
temporal: remove Rampable, change name of method to set end note types per minute
...
Rampable only existed to provide exclusive access to ::set_end() for the
TempoMap. More idiomatic C++ but now that _type has also gone away, so has
::set_ramped() and it really was not worth keeping it around.
2022-05-13 19:05:13 -06:00
Paul Davis
8770df611c
temporal: remove TempoMap::_type concept
...
Ramped/Constant is really a function of start/end note_types_per_minute. Having
a separate member is really just caching it and leads to errors or risk thereof.
2022-05-13 19:05:13 -06:00
Paul Davis
43b3ec005f
temporal: use new debug bit for debug output in reset_starting_at()
2022-05-13 19:05:13 -06:00
Paul Davis
45de3694cc
temporal: add reimplemented version of 6.x's TempoMap::gui_stretch_tempo()
2022-05-13 19:05:13 -06:00
Paul Davis
db9cc04230
temporal: remove debug output from TempoMap::reset_starting_at()
2022-05-13 19:05:13 -06:00
Paul Davis
a57f4fbce6
temporal: after changing a tempo point, reset the map starting at that point
2022-05-10 09:46:08 -06:00
Robin Gareus
46117303da
Fix some potentially uninitialized variables
2022-05-07 04:19:09 +02:00
Paul Davis
b5487415ec
editing: a partiaally implemented version of TempoTwistDrag, to be completed.
2022-05-02 16:47:23 -06:00
Paul Davis
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
Paul Davis
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
Paul Davis
7fd8544e31
temporal: fix copy-n-paste error in TempoCommand cosntructor
2022-04-08 11:58:04 -06:00
Paul Davis
e466736e2d
temporal: remove MementoBinder API for tempo map undo/redo
2022-04-08 11:58:04 -06:00
Paul Davis
a806ede94d
temporal: add TempoCommand, a Command-derived structure for managing undo/redo w.r.t TempoMap
2022-04-08 11:58:04 -06:00