Commit graph

41261 commits

Author SHA1 Message Date
Paul Davis
d20987aba4 get playhead on timeline and in pianorolls to be in sync
We have to convert from audible sample to beats using the global tempo map, then
back to samples using the local tempo map
2025-08-23 22:35:16 -06:00
Paul Davis
7dadddb3dc temporal: provide TempoMap::global_fetch()
This always returns a shared ptr to the global tempo map, without setting the
thread-local pointer
2025-08-23 22:35:16 -06:00
Daniel Appelt
4b5a55546a
Add example Lua script to set color transparency 2025-08-24 00:58:31 +02:00
Daniel Appelt
7fa17f50da
Add support to set color transparency from Lua 2025-08-24 00:58:20 +02:00
Daniel Appelt
d09a972b73
Add example script to create a midi region clone 2025-08-23 21:50:19 +02:00
Daniel Appelt
26c9621aca
Add support to create midi regions from Lua 2025-08-23 21:49:48 +02:00
Robin Gareus
a6e3708a8a
NO-OP: format comment 2025-08-23 21:46:35 +02:00
Robin Gareus
45724aec9d
Expose preference to disable implicit grouping 2025-08-23 10:07:05 +02:00
Robin Gareus
a94dba4ef4
Add preference to disable implicit grouping 2025-08-23 09:59:02 +02:00
Franke Burgarino
faebc7ab35 MCU: show surround master in global/mixer view
only if the controller doesn't have a master fader
2025-08-22 14:47:48 -05:00
Franke Burgarino
a57e3db41c MCU: clean up MackieControlProtocol::get_sorted_stripables logic 2025-08-22 13:58:52 -05:00
Franke Burgarino
d49e44c5c7 MCU: add MackieControlProtocol::is_bus 2025-08-22 13:56:50 -05:00
Franke Burgarino
75f8aa3673 MCU: bring back foldbacks with correct sorting 2025-08-22 13:54:53 -05:00
Paul Davis
bb13bd48b2 several more bbt_delta() unit tests 2025-08-22 10:59:06 -06:00
Paul Davis
27ffd1628d temporal: remove iterative bbt_delta() since unit test shows breakage 2025-08-22 10:51:16 -06:00
Paul Davis
fd53cf87ed temporal: new non-iterative implementation of Meter::bbt_delta() 2025-08-22 10:45:12 -06:00
Paul Davis
26e63fca9b add unit test for Meter::bbt_delta() 2025-08-22 10:45:12 -06:00
Robin Gareus
a6b07256aa
Fix expanding application bar
`on_parent_changed()` which does the layout is
called before ui_actions_ready(). This caused to Lua buttons
to briefly be displayed.
2025-08-22 15:47:52 +02:00
Paul Davis
07b20aa60a kbd automation: no popup immediately after add, 2nd Return/Enter for that
Also, two different bindings for adding a point with and without guard points.
2025-08-21 18:56:00 -06:00
Paul Davis
05210fc7e2 Evoral: add ControlList::has_event_at (timepos_t) 2025-08-21 18:56:00 -06:00
Paul Davis
40b7b0a55c canvas: fix enter notify event handler to work with gtk ungrabs
GTK delivers both window and root coordinates as (0,0) for GDK_CROSSING_GTK_UNGRAB
modes. We need the real coordinates of the pointer to pick the right canvas item
2025-08-21 18:56:00 -06:00
Paul Davis
5d58ff7ebf tag regions captured inside Ardour with tempo and meter from timeline 2025-08-21 18:56:00 -06:00
Robin Gareus
fe731cb9ab
Add shortcut for spectrum analyzer window 2025-08-22 00:19:12 +02:00
Franke Burgarino
fd13fdb1bf MCU: fix pan values for mixbus 2025-08-21 16:57:42 -05:00
Robin Gareus
b933e7f1b4
Fix previous commit 2025-08-21 22:36:37 +02:00
Robin Gareus
4926f673bd
Fix crash when setting up toolbar without session (sync button) 2025-08-21 22:32:24 +02:00
Robin Gareus
59989eed3a
Consolidate PI type flags across projects
This is to prevent future conflicts of flags..
2025-08-21 18:28:23 +02:00
Paul Davis
25cc456c73 tweaks to the presentation of drag sensitivity in preferences 2025-08-21 07:40:56 -06:00
Robin Gareus
d7af181037
Amend 28c8dbf128, unsubscribe from destroyed signal
This handles another edge case where the Frame is deleted
before the child widget.
2025-08-21 04:41:17 +02:00
Franke Burgarino
e42cea63d5 MCU: work around mixbus initialization issue 2025-08-20 18:49:19 -05:00
Franke Burgarino
d6697cd702 MCU: fix mcpStripableSorter 2025-08-20 18:49:19 -05:00
Paul Davis
56d36d3a41 fix initialization order warning for RegionUISettings 2025-08-20 17:43:56 -06:00
Paul Davis
e9460bb372 temporal: fix unused variable warning in TempoMap::paste() 2025-08-20 17:43:45 -06:00
Paul Davis
de843db102 temporal: lots more DEBUG_TRACE statements for grid debugging 2025-08-20 17:43:34 -06:00
Paul Davis
607f3577bd temporal: in the event of the most common logic failure, provide more info
TEMPORAL_MAP_ASSERT() doesn't give us any actual values or context.
2025-08-20 17:43:24 -06:00
Paul Davis
5aed12b90e in launchkey 4 code, use new Meter::bbt_delta() not ::bbt_delta 2025-08-20 17:43:15 -06:00
Paul Davis
a8168f826d remove incorrect bbt_delta() in BBT_Time, provide Meter::bbt_delta
There are two implementations here, the more efficient one (commented out) does
not work correctly yet.
2025-08-20 17:43:05 -06:00
Paul Davis
0dab69fe74 check for null ActionGroup in ActionManager::drop_action_group() 2025-08-20 14:54:07 -06:00
Paul Davis
c0fa42a203 EditingContext: don't call drop_action_group() if an action group was not created
Example would be an audio clip editor that does not define MIDI actions
2025-08-20 14:53:49 -06:00
Robin Gareus
d8c10a96bd
Amend c6a49fdd50 drop automation actions
This fixes a crash when showing the same Pianoroll again,
since actions a already present, a NULL reference was pushed
to session_sensitive_actions. Closing a session then crashed
accessing a NULL Action.
2025-08-20 22:25:58 +02:00
Robin Gareus
293100850b
Remove another debug message 2025-08-20 22:09:45 +02:00
Robin Gareus
aba8595342
Don't re-create MIDI Region Editor when it already exists 2025-08-20 22:01:03 +02:00
Robin Gareus
724340ce11
Hide debug messages in optimized builds 2025-08-20 21:42:04 +02:00
Robin Gareus
4b88330c9c
Use main editor for loop-range undo/redo - fix crash
While CueEditor is-a HistoryOwner, session specific
changes such as Location don't belong in EditingContext.

This fixes a heap-use-after-free crash since MementoCommand
was free()ed twice. Once via ARDOUR::Location::~Location
and earlier due to direct Destructible::drop_references
from the History.

This partially reverts 04a8fb1eb6
2025-08-20 21:32:22 +02:00
Franke Burgarino
8bfd8de2f6 MCU: hide phase/solo controls for master 2025-08-20 10:30:05 -05:00
Robin Gareus
28c8dbf128
Handle special case of using unmanaged widgets to Frame
This happens in in Ardour's Preference dialog with
e.g. BufferingOptions:

~OptionEditorContainer deletes the Option, which in turn
deletes the Widget BufferingOptions:_buffering_presets_combo
Since the widget is not managed it is not removed from its
parent.

Later ~OptionEditorContainer disposes the page layout, which
eventually also calls the Frame d'tor, causing a heap-use-after-free.
2025-08-20 16:19:25 +02:00
Robin Gareus
4cd241fab7
Towards clean exit 2025-08-20 16:19:25 +02:00
Paul Davis
2563eb2e1d remove some debug output 2025-08-20 07:04:54 -06:00
Robin Gareus
6589fdf9e8
Always clean up after ourselves.. 2025-08-20 13:28:08 +02:00
Robin Gareus
82dc2a9e54
Add "note" to short grid labels
see also d2512c814a
2025-08-20 13:05:22 +02:00