Paul Davis
06751f64b4
MIDI regions attempt to get their tempo & meter from their source file
2025-08-27 16:47:11 +02:00
Paul Davis
f3fd8d6e40
slightly refine SMF::is_meta() to differentiate realtime system reset
2025-08-27 16:47:11 +02:00
Paul Davis
74851137f9
Reimplement MIDI file import to retain metadata in the files written
...
Previosuly, all meta data was thrown away. Now we retain it, so that MIDI
regions can ask about their source file's tempo & meter.
Significant engineering rework of how this all works, relying on
recently introduced API and API changes in SMF, SMFSource etc.
2025-08-27 16:47:11 +02:00
Paul Davis
fd2fbc7d25
change API of MidiSource::append_event_beats() to allow meta-event legality
...
Because we want a default argument of false, this involved the usual
inline-non-virtual-method-calls-virtual-with-no-default trick.
Also, do NOT append data to a MidiModel or change the length of an SMFSource
unless we know for sure that added that data to the SMF object.
2025-08-27 16:47:11 +02:00
Paul Davis
b559694dca
add SMFSource::end_track() to provide source-level access to SMF method
2025-08-27 16:47:11 +02:00
Paul Davis
35e7080f92
modify API of Evoral::SMF::append_event_beats() to add meta-event legality
...
If the (new) final argument is true, we allow writing SMF meta events to the
underlying libsmf object (which doesn't care one way or another).
2025-08-27 16:47:11 +02:00
Paul Davis
a9dc45a620
add Evoral::SMF::end_track()
...
This changes the assumption that an SMF object only refers to
a single track when being written.
::end_track() is used within begin::write()/end_write() pairs to mark the start
of a new SMF track.
2025-08-27 16:47:11 +02:00
Paul Davis
0126509937
add Evoral::SMF::is_meta() to test for SMF meta events
...
These are not legal in "live" MIDI but are allowed in SMF files.
2025-08-27 16:47:11 +02:00
Paul Davis
f14321213f
use nullptr instead of zero in initializer
2025-08-27 16:47:11 +02:00
Paul Davis
e508fbcdf1
SMF: return meta events, with size set to event size, but return value of zero
2025-08-27 16:47:10 +02:00
Edgar Aichinger
fc7e237352
completing german translation update (libardour)
2025-08-18 09:26:04 +02:00
Robin Gareus
bdc4d6fb60
Potential fix for MSVC builds
2025-08-17 17:30:22 +02:00
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