Commit graph

20613 commits

Author SHA1 Message Date
Paul Davis
05c6616e32 ControlGroup: fiddle with API for clarity, and add TrimAutomation special case 2023-07-27 13:29:57 -06:00
Paul Davis
7662f9af5b ArdourCtrlBase should pass UseGroup when setting control values
None of the things this is used for right now are ever members of persistent
control groups, but it is useful for selection-as-group
2023-07-27 13:28:02 -06:00
Paul Davis
5e37a320c0 remove use-selection modifier 2023-07-26 18:24:43 -06:00
Paul Davis
f6664570d4 control group: implement ::fill_from_selection and ::size() 2023-07-26 16:41:54 -06:00
Paul Davis
eba8eb07d3 automation control: fix logic for ::pop_group() 2023-07-26 16:41:09 -06:00
Paul Davis
86a5aec276 change "use selection" modifier to Win/Opt (Level4 modifier) 2023-07-26 16:40:34 -06:00
Paul Davis
5f55f32386 control group: add API to push & pop control groups on a control 2023-07-26 13:38:37 -06:00
Paul Davis
29c2b06d0e add a name for a modifier to be used to indicate "use selection" 2023-07-26 13:18:02 -06:00
Paul Davis
3c2112abf5 widgets & GUI: Start/StopGesture signals should pass on GDK event state 2023-07-26 13:11:52 -06:00
Paul Davis
7ddd2a0692 automation control: allow single level of push/pop control group 2023-07-26 13:11:22 -06:00
Paul Davis
7fbe17c802 BBT markers must define an on-beat position 2023-07-24 16:20:38 -06:00
Robin Gareus
86d818e4b9
Revert VST3 kMono arrangement experiment #9418
Apparently kMono is not a flag and implies connection of the first port

This reverts commit 8aebfc45dc.
and  2698b23f82.
2023-07-21 00:39:47 +02:00
Paul Davis
4c845eb2a0 cairo single pixel line offset fix, part 1 2023-07-17 20:54:33 -06:00
Paul Davis
8c479ff425 lv2: if bpm is a double it may as well be a double from the start 2023-07-17 16:46:54 -06:00
Robin Gareus
3ab3ef3b55
Fix lineset drawing (again), apply cairo 0.5px offset
see also f08299ea1e
2023-07-17 23:28:36 +02:00
Robin Gareus
2698b23f82
VST3: try an alternative approach use kMono as flag, not arrangement
See also 920a6a46c3 and 445e5162fd.
2023-07-17 20:48:45 +02:00
Robin Gareus
8aebfc45dc
Revert "VST3: work around UADx crash when in mono configuration"
This reverts commit 920a6a46c3.
2023-07-17 20:45:44 +02:00
Paul Davis
8a5f370994 lv2: correctly compute tempo for tempo markers delivered as position events 2023-07-17 11:39:47 -06:00
Paul Davis
93cbbf57d1 lv2: reserve vector for return values from TempoMap::get_grid() 2023-07-17 11:39:47 -06:00
Paul Davis
9fd0076c93 lv2plugins: correctly compute tempo to be passed to LV2 plugins 2023-07-17 11:39:47 -06:00
Robin Gareus
f08299ea1e
Fix lineset drawing for lines > 1px width
This is a follow up to 248e37ac0c.

A line at 0 with 1px width should draw from 0.5 to 1.5
(cairo pixel offset). The same line with a width of 3px
is -0.5 to 2.5.

The self.intersection code calculates this correctly, subtracting
shift, the drawing code however incorrectly added it.

This fixes MIDI track grid/note offset as well as a bleed
below the track.
2023-07-17 05:05:20 +02:00
Robin Gareus
8a371bcaa2
Fix tempo-map backward compatibility
Moving forward tempo-type is saved without `Tempo::`
prefix again.
2023-07-17 00:35:05 +02:00
Robin Gareus
b61f84e872
Print messages for each possible session-load failure 2023-07-16 16:16:59 +02:00
Paul Davis
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
Paul Davis
2aa7dd42ea lv2: plugins get an iterator to (sometimes|often) speed up ::get_grid() calls 2023-07-15 11:30:40 -06:00
Paul Davis
ea2d2b4760 temporal: rename ::get_grid_with_iterator()
Because I like polymorphism
2023-07-15 11:23:45 -06:00
Paul Davis
b2a57108c3 actually reserve space for click grid points, to void RT memory allocation 2023-07-15 11:08:45 -06:00
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
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
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
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
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
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
64dc7557cf automation drawing: some code cleanup and thinko fixes for ::editor_add_ordered() 2023-07-10 14:05:27 -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
de67226c90 provide PolyItem::pop_back() 2023-07-09 20:41:36 -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
Robin Gareus
920a6a46c3
VST3: work around UADx crash when in mono configuration
When using a UADx plugin on a Mono track in Ardour, the plugin
is configured to be Mono. by calling `setBusArrangements`.
The call succeeds and querying the Bus layout via `getBusArrangement`
as suggested by https://steinbergmedia.github.io/vst3_doc/vstinterfaces/classSteinberg_1_1Vst_1_1IAudioProcessor.html#ad3bc7bac3fd3b194122669be2a1ecc42
confirms this. The plugin acknowledges the speaker layout
for both input and output (Vst::SpeakerArr::kMono = 0x80000)

```
  Input BusArrangements: 0 chan: 1 bits: 80000
  Output BusArrangements: 0 chan: 1 bits: 80000
```

but UADx plugins crash later during process() if any of the lower
bits are unset and the bus is enabled.

PS. The plugin does NOT crash as long as a lower bit
(Vst::SpeakerArr::kSpeakerL or ::kSpeakerR) remains set
in addition to kMono.
2023-07-07 21:32:59 +02:00
Robin Gareus
883a83aca2
Fix windows builds (Lua signal bitset 9b8040a9f4) 2023-07-05 19:36:25 +02:00
Robin Gareus
d01dbcba83 Update minimp3
based on afb604c06b/minimp3.h
This reapplies be4bdb5365.
2023-07-05 18:05:33 +02:00