Commit graph

41590 commits

Author SHA1 Message Date
Paul Davis
7c9b9ceb7e temporal: show BBT marker point names in operator<< 2025-08-19 10:53:06 -06:00
Paul Davis
2aad1ac5f5 temporal: fix TempoMap::paste() to pass unit test
the BBT times of the newly inserted points during paste() are meaningless until
we recompute them using ::reset_starting_at(). So don't try to compute some
sort of likely value, just use the value from the cut buffer, and call
reset_starting_at() after every point inserted.
2025-08-19 10:53:06 -06:00
Paul Davis
ee6356d9df remove crashing assert() when rendering scroomer
Too hard to get a floating point assert correct, but I think this is still a little
incorrect because we do not scale the kbd size when rendering it.
2025-08-19 10:53:06 -06:00
Paul Davis
66dde32a1b no more BBT_Time round/round_up methods (GUI edition) 2025-08-19 10:53:06 -06:00
Paul Davis
f0111bcea5 temporal: BBT_Time cannot have any round_to_*() or round_up_to_*() methods
A meter (time signature) is required to do the math correctly for any operation that may
cross or reach the next bar boundary, which round_to_*() and round_up_to_*() may do.
2025-08-19 10:53:06 -06:00
Robin Gareus
d2512c814a
Use short labels for grid and beat-div dropdown 2025-08-19 18:24:22 +02:00
Robin Gareus
4859e4e57e
ArdourDropdown: use action's short-label for display text 2025-08-19 18:18:41 +02:00
Robin Gareus
e74dbf6ef7
Pianoroll: the return of the draw box (amend 8ffd45c3c) 2025-08-19 15:36:44 +02:00
Robin Gareus
8ffd45c3c0
Don't expand GUI as much on first load
The editor-toolbar still needs a major cleanup, it's
very busy
2025-08-19 15:25:24 +02:00
Robin Gareus
44ceb91e52
Use new YTKMM API instead of ytk+ 2025-08-19 14:40:49 +02:00
Robin Gareus
5f12554b56
YTKMM: expose ytk_set_child_packing 2025-08-19 14:20:39 +02:00
Robin Gareus
07dc5c0fc0
Remove cruft 2025-08-19 14:04:13 +02:00
Robin Gareus
936f8734b4
Tweak editor bottom pane packing, never unpack the property box 2025-08-19 14:03:19 +02:00
Robin Gareus
f9cdaf698c
Never unpack the selection-property-box
This is used to for all selection: route, plugins,
time and region and slot selection.

Only re-pack it with different expand option when
the pianoroll is also visible
2025-08-19 13:28:51 +02:00
Robin Gareus
014d231d13
Fix preference enum - see 4826a90796 2025-08-19 04:48:45 +02:00
Robin Gareus
32f162ec9a
Fix invalid markup (scene name) 2025-08-19 03:24:20 +02:00
Paul Davis
4826a90796 prefs editing widgets for region-edit-disposition 2025-08-18 19:04:05 -06:00
Paul Davis
368189c4f6 an initial guess at using the new region-edit-disposition parameter
No editing of the parameter yet
2025-08-18 18:26:10 -06:00
Paul Davis
1817aa5c2d add a new UI prefs variable/type for region edit disposition
i.e. where to edit a selected or specifically chosen region
2025-08-18 17:08:23 -06:00
Paul Davis
a48ffdf998 refinements to SMF type0 import logic 2025-08-18 16:46:26 -06:00
Paul Davis
4303b77441 MIDI regions attempt to get their tempo & meter from their source file 2025-08-18 16:35:42 -06:00
Paul Davis
c49f607ce6 slightly refine SMF::is_meta() to differentiate realtime system reset 2025-08-18 16:35:41 -06:00
Paul Davis
79da488132 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-18 16:35:41 -06:00
Paul Davis
48cd807e6a 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-18 16:35:41 -06:00
Paul Davis
586ac7e447 add SMFSource::end_track() to provide source-level access to SMF method 2025-08-18 16:35:41 -06:00
Paul Davis
73065f814a 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-18 16:35:41 -06:00
Paul Davis
b60702e014 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-18 16:35:41 -06:00
Paul Davis
785047bf47 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-18 16:35:41 -06:00
Paul Davis
e703cf2d73 use nullptr instead of zero in initializer 2025-08-18 16:35:41 -06:00
Robin Gareus
017ad176ad
Expand route properties on cue page when strip is selected
This is currently only for Mixbus' benefit, showing
the channelstrip and plugin(s); but may become relevant
for Ardour sometime.
2025-08-18 23:27:03 +02:00
Robin Gareus
8dfd116b58
Properly hide cue editors (unmap macOS GLCanvas views) 2025-08-18 23:25:44 +02:00
Robin Gareus
06a2b174dd
Fix crash at session close
see also 6672db97. in theory re-assigning a sigc::connection
should disconnect the previous connection, but for yet
unknown reasons this does no happen here.
2025-08-18 23:25:43 +02:00
Paul Davis
a22a84cbee SMF: return meta events, with size set to event size, but return value of zero 2025-08-18 12:47:26 -06:00
Paul Davis
bd34f1744d add window geometry to region UI settings, and save after changes
Changes are detected in Pianoroll::canvas_allocate(), which is a proxy for window
geometry. Since Pianoroll doesn't own a window, this is not necessarily ideal, but it
works.
2025-08-18 12:47:25 -06:00
Edgar Aichinger
66599dac36
update german (gtk2_ardour only for now) translation 2025-08-17 17:47:35 +02:00
Robin Gareus
bdc4d6fb60
Potential fix for MSVC builds 2025-08-17 17:30:22 +02:00
Robin Gareus
6672db9794
Fix crash at session close - fix use-after-free
Pianoroll::maybe_update() was able to use _session
after session was already unset.
2025-08-17 06:34:31 +02:00
Robin Gareus
a91aa6ee9d
Except pianoroll CC metabuttons (w/submenu) from scrolling 2025-08-17 06:30:35 +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
6b79d4ab98
Add option to hide rendered UI instructions #9975 2025-08-17 00:34:53 +02:00
Robin Gareus
a270ae2aa3
Fix VST3 spec link 2025-08-16 23:11:19 +02:00
Robin Gareus
d35faf052e
Add popup dialog when MMCSS threads are exhausted 2025-08-16 23:11:19 +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
Paul Davis
cf14fe75f2 add some debugging info to help diagnose a crash 2025-08-16 12:01:20 -06: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
Robin Gareus
648e8f9f00
Fix use-after free, and double-packing of proc-box (amend 844d45896) 2025-08-15 18:53:19 +02:00
Paul Davis
192c7a2f9a fix for a subtle bug that led to track headers not expanding as intended
now that we use action-as-state, there was no way to look up the old
mouse mode when changing into or out of internal editing. this
prevented us from queuing the redisplay of trackviews that allows the track
headers to expand when appropriate.
2025-08-14 18:48:04 -06:00
Paul Davis
e467ee77f8 just rename a variable for more clarity when reading code 2025-08-14 14:55:37 -06:00