fafc891ca6
add ripple option API for TempoMap::cut()
2023-05-04 18:49:06 -06:00
b3a127d318
temporal: TempoMap::paste(), TempoMapCutBuffer::dump() and cut/copy fixes
2023-05-04 17:09:19 -06:00
a8424e8617
temporal: implement (maybe) cut-copy for tempo map
2023-05-04 15:45:09 -06:00
f7ba9af6b2
temporal: stub API for tempo map cut/copy/paste
2023-05-04 15:10:56 -06:00
b3040a31fc
temporal: a basic data structure to hold the result of a TempoMap cut/copy operation
2023-05-04 15:10:56 -06:00
912f9e5ea3
provide functions for both linear and ramped tempo-twists
2023-05-04 09:22:28 -05:00
b936fd12cd
temporal: reset the tempo map in sections bounded by BBT markers (if any)
...
This avoids total SNAFUs caused by the impossibility of globally ordering
by BBT time.
2023-05-03 21:55:23 -06:00
faac648502
temporal: add TempoMap::{next,previous_}meter()
2023-05-03 21:55:23 -06:00
0ddacb8ea2
when abort()-ing due to a failed assert in tempo map code, dump the map
2023-04-28 15:57:42 -06:00
907d3f82a7
temporal: fix grid generation in the presence of MusicTimePoints
2023-04-27 19:54:44 -06:00
e7f4c9dcb5
temporal: fix removal (and thus moving) MusicTimePoints
2023-04-27 19:54:14 -06:00
d66f3e7c9d
temporal: factor out twist iteration, add debug output
2023-04-16 10:33:37 -06:00
f29557348e
remove debug output
2023-04-13 17:47:32 -06:00
b362d2b6ba
temporal: don't abort() for illegal omega value, just leave it as it was
2023-04-13 10:57:12 -06:00
295dbd8e1e
Make RCU reader return a const pointer (omnibus commit)
2023-04-08 00:15:37 +02:00
e9f71824a1
temporal: change API for TempoMap::stretch_tempo()
...
This will likely be modified because it is actually impossible to do
what this code is attempting to do.
2023-04-07 12:56:57 -06:00
151fceea54
Add missing include
...
This fixes "error: ‘isfinite’ was not declared in this scope"
2023-03-30 01:10:23 +02:00
393929a55b
tempo twisting: various fixes and improvements to core logic
2023-03-24 14:19:16 -06:00
7040ad1b74
temporal: API changes and implementation to support new twist operation
...
this includes using two different omega members for tempo objects,
a change that likely will not persist beyond the merge back to master.
2023-03-24 14:19:16 -06:00
b36a0493df
tempomap: use muldiv_round() not int_div_round to avoid errors
2023-03-24 14:19:16 -06:00
45490bf43f
more functional tempo mapping
2023-03-24 14:19:16 -06:00
d513653912
API development for time domain flipping
2023-03-24 14:19:15 -06:00
27205c7639
midi clock: provide option to quantize incoming BPM values
2023-02-23 12:15:26 -07:00
c1c913be9d
Fix MClk generator position
2023-02-19 18:08:58 +01:00
5b6bc3f358
Revert "tempo map: use lookup tables to speed up time conversions"
...
This reverts commit 644ebe37a8
.
Adding entries to the lookup table is (a) not thread safe (b) not appropriate
from RT context.
2023-02-16 18:25:23 -07:00
a59059c15e
temporal: map used for ::reftime() must be the one pointed at by TempoMetric
2023-02-15 18:36:23 -07:00
644ebe37a8
tempo map: use lookup tables to speed up time conversions
2023-02-15 16:02:56 -07:00
6f095b91ce
tempo map: add data structure and methods for (fast?) lookup tables
...
As of this commit, none of the data structures are used.
2023-02-15 16:02:56 -07:00
92bd8461ca
tempomap: provide improved reftime() method for TempoMetric
...
This now looks backwards in time for a BBT_Marker or the start of the
tempo map, whichever comes first.
2023-02-15 16:02:56 -07:00
259499fc5f
require use of BBT_Argument as both parameter and return type from most methods (libs edition)
2023-02-15 16:02:56 -07:00
43c8fae709
initial addition and use of BBT_Argument
...
Currently this is interchangeable with BBT_Time, but soon will
be handled differently
2023-02-15 16:02:56 -07:00
62d4e0789a
tempo map: fix error in TempoMap::copy_points() that fails to reset _map ptr
...
This left the _map ptr of all points in a copy of a map pointing
to an old/dead TempoMap.
2023-02-14 10:14:55 -07:00
34e12a5d78
Fix grid when tempo marker is not on a mod_bar/beat_div
...
Previously the current iterator bbt was moved to p->bbt().
From then on, no grid line is reached if the point p is not on
a bar and mod_bar != 0 or the point is not on an expected beat_div.
e.g. when using bbt += mod_bar, and a tempo-change is at 5|2|0.
iterations continues 6|2|0 7|2|0 is_bar() is always false
and no more grid-lines were added.
Rather than trying
bbt = round-up-to-next-grid-mod-div
and then finding the metric for that position, this
approach only does the latter using the already incremented
BBT position.
2023-01-11 00:25:23 +01:00
b0a679a1af
Fix grid after last tempo-marker when showing bars
...
This is a copy/paste bug, compare to d77db816de
2023-01-11 00:06:43 +01:00
ac30964d67
remove debug output
2022-12-26 14:03:32 -06:00
b2a6fb70b4
remove debug output
2022-12-20 22:01:41 -07:00
818c30a98d
temporal: add optional with_reset arg to all map ::remove_*() methods
2022-12-20 21:54:05 -07:00
0ee0226776
temporal: no stretching a tempo that is the last one or precedes a BBT marker
2022-12-20 21:33:13 -07:00
d3dd865093
temporal: NOOP - add helpful comment
2022-12-20 21:31:31 -07:00
ae36f8e445
temporal: provide TempoMap::replace_tempo()
2022-12-20 21:31:02 -07:00
033b4c5152
temporal: fix implementation of TempoMap::copy_points()
...
This could re-order the map in the presence of BBT markers
2022-12-20 21:29:44 -07:00
39c324b620
temporal: fix ::get_grid() crash condition
...
We cannot call TempoMetric::superclock_at (BBT_Time) if the BBT time is beyond
the range of the current TempoMetric. We must discover that *before* we make
that call, not as part of the test to see if we've exceeded the range.
2022-12-10 22:59:58 -07:00
db3e87a7e4
do nothing gracefully if asked to remove only tempo
2022-12-10 14:14:12 -07:00
c505024a4b
temporal: when resetting the map, position BBT markers in beat time (and stop reset there)
2022-12-05 10:01:49 -07:00
12b672492e
tempomap: fix and improve efficiency and readability in ::get_grid()
2022-12-05 10:01:49 -07:00
d77db816de
temporal: reimplement and tweak API of TempoMap::get_grid()
...
There were many logical errors in the previous implementation. This one is
simpler to read, and appears to work much better.
It also allows the caller to specify the quarter-note subdivision to use when
generating the grid, rather than choosing only between some bar modulo or
quarter notes.
2022-11-29 10:09:39 -07:00
a124062fa2
temporal: move_tempo() must use beats (timesig dependent) not quarters
2022-11-29 10:09:39 -07:00
1f4717d93b
temporal: reset map requires a BBT-sorted map, not audio time
2022-11-29 10:09:39 -07:00
a817142676
NO-OP: extend debug trace output in superclock_at (BBT_Time)
2022-11-29 10:09:39 -07:00
8299778d26
temporal: slightly change internal API for omega (ramp) computation
2022-11-29 10:09:39 -07:00