eca4c83b7b
temporal: remove concept of inactive tempos
2023-09-11 10:26:54 -06:00
58b667c6c0
temporal: fix crash caused by unsafe use of tempo map iterators
2023-09-06 14:46:24 -06:00
269699c340
temporal: fix get_grid() to work in the presence of "weird" BBT markers
2023-09-04 19:41:25 -06:00
13bdfda81a
temporal: add Meter::round_up_to_beat_div()
...
reimplement round_up_to_beat() in terms of round_up_to_beat_div()
2023-09-04 19:41:25 -06:00
f1f5df7c9a
temporal: add BBT_Time::round_up_to_beat_div()
2023-09-04 19:41:25 -06:00
7c5e7ddf59
temporal: improve operator<<() for MusicTimePoint (BBT markers)
2023-09-04 19:41:25 -06:00
0266d98a3b
temporal: add TempoMap::{max,min}_notes_per_minute() API
2023-08-31 18:23:40 -06:00
cda0d6ce9f
temporal: fix totally broken implementation of TempoMap::shift (timepos...)
2023-08-31 18:22:59 -06:00
c778a6df67
ripple backwards when cutting a section
2023-08-31 18:22:25 -06:00
c4cb8dbda9
arithmetic simplification
2023-08-30 16:07:48 -06:00
6c44dbf9d6
temporal: a guess at how to use BBT markers from within TempoMap::paste()
...
Basically, if the paste position is not zero and not on a bar line, we will a BBT marker there,
using the existing tempo & meter at that position before the paste.
If the end of the paste is not on a bar line, we will place a BBT marker there,
using the tempo & meter that existed before the paste.
TempoMap::paste() now also accepts an optional final argument that if provided is
used to name the BBT markers, if they are created
2023-08-30 15:21:55 -06:00
7aa1863c0f
somewhat working tempo map cut/copy/paste
2023-08-30 14:16:21 -06:00
a5055a2227
various changes related to tempo map copy/cut/paste section
...
Tempo map is currently still excluded from the editor operation
2023-08-30 14:16:21 -06:00
2e08ff01f5
temporal: add TempoMapCutBuffer::empty()
2023-08-30 14:16:21 -06:00
32ef2d5a0f
temporal: add a music-time (BBT) point at the cut site
2023-08-25 17:39:00 -06:00
4d8ba938f1
temporal: during cut(), break out of loop once we pass the end time
2023-08-25 17:39:00 -06:00
e9be3beb2a
add get/set state methods to TimeDomainProvider
...
These are not used yet, because only the Session really acts as a Provider
and it uses the Config::default_time_domain to serialize that state
2023-08-16 16:33:17 -06:00
0227eab138
remove unused source file
2023-08-16 12:33:09 -06:00
076cb86912
next iteration of changes to handle time domain bounces as undoable
2023-08-14 23:42:08 -06:00
47a7a16c43
temporal: move another domain-swapping object to the right header
2023-08-07 16:33:16 -06:00
d87b10037b
temporal: new object to try to make domain swaps undo-able
2023-08-07 16:33:16 -06:00
ada7fc16aa
temporal: another place to ensure that a BBT marker defines a beat position
2023-08-02 15:23:43 -06:00
ca348ce0d9
temporal: add TempoMap::replace_bartime()
2023-08-02 15:23:43 -06:00
7fe3becf2d
temporal: fix TimeDomainProvider::set_time_domain_parent() to unset have_domain
2023-08-02 15:23:42 -06:00
0c9bdd817d
temporal: fix TimeDomainProvider::set_time_domain()
2023-08-02 15:23:42 -06:00
1fce815e2d
temporal: expand TimeDomainProvider API
2023-08-02 15:22:52 -06:00
3b565693c8
objects don't have a time domain, they have a time domain provider (libs)
2023-08-02 15:22:52 -06:00
af2e0e279c
temporal: initial version of a time domain provider object
2023-08-02 15:20:58 -06:00
961fdc9de6
use a more explantory object name
2023-08-02 15:20:20 -06:00
fa225846af
new Temporal API to allow keeping MIDI notes in position after a map-tempo operation
2023-08-02 14:11:06 -06:00
7fbe17c802
BBT markers must define an on-beat position
2023-07-24 16:20:38 -06:00
8a371bcaa2
Fix tempo-map backward compatibility
...
Moving forward tempo-type is saved without `Tempo::`
prefix again.
2023-07-17 00:35:05 +02:00
c31c1906f7
temporal: fix dangling confusion about "omega"
...
Remove all reference to "omega_sc" and rename "omega_beats" as omega
2023-07-15 21:45:11 -06:00
ea2d2b4760
temporal: rename ::get_grid_with_iterator()
...
Because I like polymorphism
2023-07-15 11:23:45 -06:00
422fa7255b
temporal: further extensions to GridIterator API to handle bar_mod/beat_div parameters
...
Also try to comment class definition to add a little clarity
2023-07-15 11:08:45 -06:00
cbaa335946
temporal: some cleanup of the GridIterator API
2023-07-14 21:32:40 -06:00
a857a0af4d
Update Luabindings for new TempoMap API
2023-07-14 23:48:13 +02:00
509efdb290
temporal: refactor ::get_grid() for performance reasons
...
the API now provides the option to call ::get_grid() with an iterator which may
be re-used on subsequent calls. This avoids unbounded O(N) "walks" from the
marker preceding the start point of the grid to the start point.
This commit also includes "fast-path" code for the common case of a single
tempo and single meter
2023-07-14 13:03:36 -06:00
81384537ef
temporal: remove useless _floating member and API from TempoMapPoint
2023-07-14 13:03:36 -06:00
039f2d5d0e
remove TempoMap::count_bars()
...
It's the only place in libtemporal that would require
a TempoMapPoints allocation, and there's no reason to do
this inside the library.
2023-07-14 13:03:36 -06:00
52f1b88749
temporal: remove ill-conceived lookup tables from tempo map (never publically visible)
...
These were not thread safe, and could not be: to be useful, a thread looking up a time
conversion could cache the result, but it would be using the global (shared) copy
of the map (because lookup is read-only, and so no write-copy is required). But
inserting into the lookup table wasn't lock protected (and shouldn't be because otherwise
that defeats the point of RCU).
So just drop it.
2023-07-14 13:03:26 -06:00
20e1b6b287
temporal: add API to clear tempos in various ways
2023-06-30 15:50:25 -06:00
3307dcfcb2
temporal: reference time for BBT_Argument is always superclocks
2023-06-30 12:10:50 -06:00
16c9d91641
temporal: remove impossible get_tempo_and_meter (..., bbt, ...) method
2023-06-30 12:10:50 -06:00
a591fb64a3
temporal: rework ::get_grid() to avoid get_tempo_and_meter (..., bbt, ...)
2023-06-30 12:10:50 -06:00
3513debba8
temporal: NO-OP (tiny variable rename)
2023-06-30 12:10:50 -06:00
bb97ade440
temporal: special case editing of the initial tempo ( #9339 )
2023-06-12 16:46:13 -06:00
50232a23a7
temporal: hide superclock_t variant of TempoMap::metric_at()
...
This fixes several callsites that were passing samplepos_t to get a TempoMetric,
some of them somewhat significant (e.g. VST plugins that want tempo information).
Bad API design on my part, apologies.
This commit combines libs/ and gtk2_ardour because the new private status
of the ::metric_at() call would be a blocking point for git bisect
2023-06-12 12:36:16 -06:00
733d59c65b
temporal: unit testing more like unit testing
...
But still not really.
2023-06-08 14:01:17 -06:00
01b8187cd3
temporal: add rudimentary paste test
2023-06-08 14:01:17 -06:00