Commit graph

21992 commits

Author SHA1 Message Date
Robin Gareus
26ca954574
Allow to scroll though meta-button items #9976 2025-08-17 06:29:31 +02:00
Robin Gareus
a83c83aef6
Overhaul persistent tooltip position #9979
* directly show at correct position
* honor multi-monitor boundaries
* hide on focus-out (e.g. switch desktops with visible
  tooltip left it visible)
* remove unused `set_center_alignment` API
2025-08-17 02:55:25 +02:00
Robin Gareus
92bcddb437
Emit Signal when MCSS Threads are exhausted
By default Windows has limit of 32 MMCSS threads.
Ardour uses MMCSS scheduling for for hardware I/O (audio and MIDI)
as well as for realtime process threads, and a user on a
recent machine may run into this limit.
2025-08-16 23:11:16 +02:00
Robin Gareus
5ffc3aa28b
Use PBD namespace for free CPU functions
Ideally never put methods in the global namespace
to prevent potential conflicts.
2025-08-15 22:10:31 +02:00
Robin Gareus
b1d5f065db
Add API to query max MMCSS threads on Windows
By default Windows limits the number of MMCSS threads to 32.
This can cause problems on modern systems with >= 32 cores,
when Ardour uses many process and I/O threads.

So far this is just a first step (query API)
2025-08-15 22:02:44 +02:00
Franke Burgarino
1ff9bf3e86 MCU: no track selected message
an attempt to select a track specific subview without having a track
selected now spits out a message instead of just doing nothing
2025-08-14 10:20:01 -05:00
Robin Gareus
0f256cc687
FP8: Add new well-known ctrls 2025-08-14 16:30:53 +02:00
Paul Davis
f010133c5f slightly improve a DEBUG_TRACE message for DEBUG::Grid 2025-08-13 10:51:44 -06:00
Paul Davis
46f2dba306 temporal: fix Meter::to_quarters (BBT_Offset)
Because Paul can't do math
2025-08-13 10:51:44 -06:00
John Emmas
ca820d6380 Remove some unneeded DLL export specifiers (and repo some that were in the wrong place) 2025-08-13 11:22:06 +01:00
Paul Davis
b95c29770c initialize scope owner in default TempoMap constructor
This constructor should not really exist, but it does.
2025-08-12 21:44:50 -06:00
Paul Davis
20b984384d NO-OP: move TempoMap destructor in code to be after constructors 2025-08-12 21:44:50 -06:00
Paul Davis
7539c9e9a8 introducing ARDOUR::string_as_value()
This does more or less the opposite of what value_as_string() does.

Functionally is far from complete, but it is useful even in its current form.
2025-08-12 21:44:50 -06:00
Paul Davis
1362c2b85d auto-ify a loop in ARDOUR::value_as_string()
so much more readable!
2025-08-12 21:44:50 -06:00
Franke Burgarino
7d70dc9384 MCU: implement 'available' parameter list in EQSubview 2025-08-12 17:00:56 -05:00
Franke Burgarino
0af47ff755 MCU: add more comp/gate controls 2025-08-12 13:27:19 -05:00
Robin Gareus
b14ce31372
Consolidate rt processor-changed signal emission
Prefer a single signal and bit flags, instead of individual signals.
This allows to call resort_route() at most once (if at all for
certain changes).

Notably Mixbus comp/gate/eq type changes can use NoProcessorChange
to only request a GUI update.
2025-08-12 19:48:28 +02:00
Franke Burgarino
e734acfa6b MCU: fixed dynamics subview scrolling bug
switching to a dyn type with less parameters can no longer place you past the
last parameter
2025-08-12 11:11:05 -05:00
Franke Burgarino
588fbee13b MCU: move creation of dynamics subview 'available' parameters list to seperate function
'available' was being created and deleted every time setup_vpot was
called. now it is only created when making the subview or switching the
dynamics type
2025-08-12 11:11:05 -05:00
Paul Davis
b205c0bc4b scoped tempo maps: logic fixes and some comment-documentation 2025-08-12 07:53:30 -06:00
Paul Davis
2fc669964e Revert "A new class ('ScopedTempoMapOwner') exposes functions which need to be visible outside of libtemporal"
This reverts commit d3a15b11ba.

This arrived at an awkward time as ScopedTempoMapOwner was being rearranged at
the source level. It will be reapplied in a subsequent commit.
2025-08-12 07:15:17 -06:00
John Emmas
d3a15b11ba A new class ('ScopedTempoMapOwner') exposes functions which need to be visible outside of libtemporal
(and since there's no 'scope.cc', libtemporal itself needs to #include scope.h for those symbols to get exported)
2025-08-12 13:19:24 +01:00
Paul Davis
63f0ddb064 finish registration of region tempo/meter properties 2025-08-11 21:29:21 -06:00
Paul Davis
ec61deaa8a macro to stop local tempo map code from doing anything 2025-08-11 18:05:24 -06:00
Paul Davis
dd41fddcad temporal: fix up some logic relating to scoped tempo maps 2025-08-11 15:41:34 -06:00
Paul Davis
023290b99d temporal: add sanity check to TempoMap::fetch()
Threads should never call ::fetch() if they have a local tempo map in
use.
2025-08-11 15:41:34 -06:00
Paul Davis
1ecbdf164d moved scoped tempo map from GUI to libtemporal 2025-08-11 15:41:34 -06:00
Robin Gareus
582a1e8186
Fix timecode update after locate for demo version
ref. 1d48648a73
2025-08-11 16:00:13 +02:00
Paul Davis
ae6acb7f42 regions can create their own tempo map 2025-08-10 07:55:39 -06:00
Paul Davis
832683cb01 region tempo and meter are optional 2025-08-10 07:55:39 -06:00
Paul Davis
7ff9460d7c actually define Region tempo/meter properties 2025-08-09 20:47:38 -06:00
Paul Davis
95006c085c add set_tempo/set_meter() methods to Region 2025-08-09 20:16:54 -06:00
Paul Davis
89a26e224a add properties for region tempo and meter 2025-08-09 18:41:53 -06:00
Paul Davis
af5ab40bf2 use DEBUG::TempoEstimation 2025-08-08 23:34:31 -06:00
Paul Davis
217890cf85 add DEBUG::TempoEstimation to libardour 2025-08-08 23:29:55 -06:00
Paul Davis
4586b39e8b add a method to compute tempo & meter for an audio source (not used yet) 2025-08-08 23:11:59 -06:00
Paul Davis
577cdd5f61 MIDITrigger::get_segment_descriptor() does something sensible with Region tempo/meter 2025-08-08 22:26:35 -06:00
Paul Davis
be913373cb give MIDIRegion a tempo/meter based on their SMF or the SMF standard (120, 4/4) 2025-08-08 22:26:04 -06:00
Paul Davis
cec3db54f0 refactor AudioTrigger::estimate_tempo() into ARDOUR::estimate_audio_tempo() 2025-08-08 17:52:59 -06:00
Franke Burgarino
c59dddfdae MCU: add scrolling in eq subview 2025-08-08 16:57:49 -05:00
Franke Burgarino
900706320c MCU: change 'Strip::notify_eq_type_changed()' to 'Strip::notify_subview_type_changed()' since it applies to dynamics as well 2025-08-08 16:57:49 -05:00
Franke Burgarino
947223fdfb MCU: rename/reorder dynamics subview controls 2025-08-08 16:57:49 -05:00
Franke Burgarino
c61cbe8b02 MCU: move filter controls from dynamics subview to eq subview 2025-08-08 16:57:49 -05:00
Paul Davis
20269df975 Regions get their own tempo and meter
This defaults to the usual 120bpm 4/4 but is also not used anywhere yet
2025-08-08 15:46:17 -06:00
Robin Gareus
2be15f035d
Fix Lua Bindings (amend 1ca53a99d9)
Already registered classes can be extended as-is.
Deriving them again will override previous bindings.
2025-08-08 12:09:14 +02:00
Franke Burgarino
e3710bd0a2 MCU: allow scrolling to gate controls in the dynamics subview 2025-08-07 16:16:19 -05:00
Franke Burgarino
dfa12dedcd MCU: make dynamics subview show actual values 2025-08-07 16:04:40 -05:00
Paul Davis
b5f1c5b0dd Fix potential infinite loop when iterating over ControlLists
If you have the "wrong" kind of MIDI CC, the interpolation for the list is set
to Linear, which causes interpolation to return audio time stamps instead of
beat time.  Because of the asymmetrical transforms, this causes iterators over
the Sequence to go haywire and create an infinite loop.

This fix changes ControlList behavior to always return times in the time domain
of the list.
2025-08-07 12:49:18 -06:00
Franke Burgarino
7df7f98566 MCU: fix formatting 2025-08-06 17:26:49 -05:00
Franke Burgarino
157031ae71 MCU: make EQ subview show actual values, not just decimal between 0 and 1 2025-08-06 16:09:34 -05:00