Paul Davis
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
Paul Davis
460266de13
NOOP: whitespace fix
2023-07-15 11:08:45 -06:00
John Emmas
35c04d0ee7
Add a missing namespace specifier
2023-07-15 12:55:30 +01:00
Paul Davis
cbaa335946
temporal: some cleanup of the GridIterator API
2023-07-14 21:32:40 -06:00
Robin Gareus
a857a0af4d
Update Luabindings for new TempoMap API
2023-07-14 23:48:13 +02:00
Paul Davis
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
Paul Davis
ae5755dbe5
do not mark sections of menu/action paths as translatable, since they are not
2023-07-14 13:03:36 -06:00
Paul Davis
ed869da97e
reserve space for tempo map grid (GUI side)
2023-07-14 13:03:36 -06:00
Paul Davis
81384537ef
temporal: remove useless _floating member and API from TempoMapPoint
2023-07-14 13:03:36 -06:00
Paul Davis
ed43ac3a28
remova Lua version of count_bars() since it is not longer in TempoMap
2023-07-14 13:03:36 -06:00
Paul Davis
f41505a8c6
add Editor::count_bars() after removing it from libtemporal
2023-07-14 13:03:36 -06:00
Paul Davis
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
Paul Davis
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
Paul Davis
df52c39ce0
freehand line drawing: automation & velocity share the same basic code
2023-07-14 13:03:26 -06:00
Robin Gareus
2c48aabe08
Handle race condition when removing route before routeUI
...
This fixes a crash when removing the monitor section.
The monitor route goes away, but the GUI remains. The
IOButton may still process previously queued
cross-thread signals.
In many cases this was not an issue since the route's
memory was not immediately released or shared_ptr
destruction only happened a short time later.
2023-07-14 19:03:32 +02:00
Robin Gareus
bedab69338
Pin Dialog: hide send polarity invert
2023-07-14 16:59:54 +02:00
Albert Graef
37c000c967
Add binding maps for the AKAI APC mini (mk1 and mk2) and the MPK miniplus.
2023-07-12 22:31:27 +02:00
Robin Gareus
f2c5f9da25
Lua: allow to reserve STL vector size
2023-07-12 18:23:51 +02:00
Robin Gareus
72522dd05d
Lua bindings for TempoMap::get_grid
2023-07-11 23:01:09 +02:00
Robin Gareus
fd6d88583f
LV2 MIDI synths: only tx tempo-map if plugin asks for it
...
This is a slight improvement on 8d97db101 to further mitigate
excessive overhead introduce in a591fb64a .
2023-07-11 21:52:58 +02:00
Robin Gareus
8d97db101e
LV2Plugin: do not unconditionally call TempoMap::get_grid
2023-07-11 19:15:40 +02:00
Robin Gareus
8145e92b43
Clarify Control point edit dialog messages, add tooltip
2023-07-11 01:16:58 +02:00
Robin Gareus
4c8b414fb6
Allow to numeric ctrl point edit to apply to all selected points
2023-07-11 00:53:48 +02:00
Paul Davis
ac68fcb880
automation drawing: fix right-to-left free drawing
2023-07-10 14:39:23 -06:00
Paul Davis
f6f1f3393d
automation drawing: fatter line
2023-07-10 14:38:58 -06:00
Paul Davis
d12aa315fc
automation drawn: ensure the right-to-left drawn lines are ordered correctly
2023-07-10 14:23:39 -06:00
Paul Davis
459659d229
ControlList: do not handle mis-ordered OrderedPoints
2023-07-10 14:23:17 -06:00
Paul Davis
9c590c1ed1
syntactic tweak
2023-07-10 14:17:10 -06:00
Paul Davis
9d5b6a78d5
automation drawing: better line color
2023-07-10 14:16:59 -06:00
Paul Davis
64dc7557cf
automation drawing: some code cleanup and thinko fixes for ::editor_add_ordered()
2023-07-10 14:05:27 -06:00
Paul Davis
25d17e857f
when free-drawing straight lines, allow retrograde motion
2023-07-10 13:42:25 -06:00
Paul Davis
57167dafbe
use configurable thinning factor, not a hard-coded constant
2023-07-10 13:42:06 -06:00
Paul Davis
67d9fa885a
use mid-drag key events to allow Alt to force a line break
2023-07-10 12:22:16 -06:00
Paul Davis
a14c534d16
dragging: add possibility of handling key events mid-drag
...
Currently only called from a canvas automation track event handler.
2023-07-10 12:21:27 -06:00
Paul Davis
6453049c0a
automation drawing: add point at grab start & use new ControlList API for speed
2023-07-10 11:20:47 -06:00
Paul Davis
45b02538e6
Evoral: extend ControlList API with ::editor_ordered_points()
...
Much more efficient than adding points 1 by 1
2023-07-10 11:20:47 -06:00
Robin Gareus
76ba032d3c
Fix creating session from template
...
bug was introduced in a36ddb72dd
2023-07-10 16:47:00 +02:00
Paul Davis
7f653de3e2
automation drawing: don't draw staircases when there are no staircases
2023-07-09 22:14:38 -06:00
Paul Davis
c584bfd374
automation drawing: thinning does not work well with snapped-drawn lines
...
Also, adding points to a ControlList can fail and that's OK
2023-07-09 22:10:18 -06:00
Paul Davis
caa278ae55
fix reverse drags and a compiler warning
...
Not quite sure what to do if we fail to add a point, yet
2023-07-09 21:01:22 -06:00
Paul Davis
0a0a882f5a
snapping, straight lines, and merge drawn points to list for auto draw
2023-07-09 20:42:09 -06:00
Paul Davis
de67226c90
provide PolyItem::pop_back()
2023-07-09 20:41:36 -06:00
Paul Davis
e0c24f5bcf
automation drawing: stay in your lane and keep moving in the same direction
2023-07-09 18:12:08 -06:00
Paul Davis
86d5e2472c
automation drawing: we have the squiggly
2023-07-09 17:39:32 -06:00
Paul Davis
78bca64a81
fix (and maybe break) two Drag classes that used the wrong name for setup_pointer_offset()
...
This might have unexplored consequences
2023-07-09 17:39:11 -06:00
Paul Davis
6743c09b4a
change return type from ptr to reference for AutomationTimeAxis::base_item()
2023-07-09 17:37:22 -06:00
Paul Davis
94f413c399
basic empty skeleton for automation draw drag
2023-07-09 16:33:16 -06:00
Paul Davis
0c8fd48d6f
velocity lane: appropriately hide automation controls until we have line automation
2023-07-08 17:18:14 -06:00
Paul Davis
1c54f0e4c0
handle MidiVelocityAutomation in the event type map code
2023-07-08 16:36:50 -06:00
Paul Davis
3b1d4d8fa6
midi: fix playback of notes the start at playhead position (#9398/#9410)
...
The diskreader uses the route's monitoring state when deciding whether or not
to fetch MIDI data for playback. Route::monitoring_state() would determine
whether or not we were already rolling to affect its return value. However,
using Session::transport_rolling() is affected by pre-roll and consequently
returns the wrong value during transport startup. Instead, we now use
::transport_state_rolling() which ignores preroll conditions. This leads to the
DR actually reading MIDI data from the initial playback position, which fixes
this issue.
Note that the bug only occured if the track or the session was rec-enabled. The
monitoring state value was always correct for non-rec-enabled conditions.
2023-07-08 15:25:32 -06:00