Commit graph

41181 commits

Author SHA1 Message Date
Robin Gareus
430b326174 YTKMM: expose ytk_set_child_packing 2025-08-27 16:47:11 +02:00
Robin Gareus
ee1a507c36 Remove cruft 2025-08-27 16:47:11 +02:00
Robin Gareus
f59a512545 Tweak editor bottom pane packing, never unpack the property box 2025-08-27 16:47:11 +02:00
Robin Gareus
7d4350ab25 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-27 16:47:11 +02:00
Robin Gareus
468f890a42 Fix preference enum - see 4826a90796 2025-08-27 16:47:11 +02:00
Robin Gareus
670f546ba5 Fix invalid markup (scene name) 2025-08-27 16:47:11 +02:00
Paul Davis
682c19e57f prefs editing widgets for region-edit-disposition 2025-08-27 16:47:11 +02:00
Paul Davis
34e964b370 an initial guess at using the new region-edit-disposition parameter
No editing of the parameter yet
2025-08-27 16:47:11 +02:00
Paul Davis
5873cf12df add a new UI prefs variable/type for region edit disposition
i.e. where to edit a selected or specifically chosen region
2025-08-27 16:47:11 +02:00
Paul Davis
9430adf4ef refinements to SMF type0 import logic 2025-08-27 16:47:11 +02:00
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
Robin Gareus
977ac537d5 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-27 16:47:11 +02:00
Robin Gareus
5e54ab1293 Properly hide cue editors (unmap macOS GLCanvas views) 2025-08-27 16:47:10 +02:00
Robin Gareus
50f4f3a07d 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-27 16:47:10 +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
Paul Davis
4b94f96ebf 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-27 16:47:10 +02:00
Edgar Aichinger
fc7e237352 completing german translation update (libardour) 2025-08-18 09:26:04 +02: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
Paul Davis
63db3d3736 fix interference between timer-based update in CueEditors and scroll-drag 2025-08-14 14:55:37 -06: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
Robin Gareus
844d458969
Add optional ProcessorBox to Route-Properties (bottom attachment) 2025-08-14 00:11:47 +02:00
Todd Naugle
fbc4156eac Spelling Fix 2025-08-13 17:05:35 -05:00
Paul Davis
5bdb6137ef the other half of the half note half-fix 2025-08-13 11:16:20 -06:00
Paul Davis
dc85f65efa it might be a minim to you, but it's a half note to me 2025-08-13 11:15:39 -06:00
Paul Davis
5c2afa74e1 restore missing 1/8th note option from grid type selector 2025-08-13 11:05:05 -06:00
Paul Davis
f010133c5f slightly improve a DEBUG_TRACE message for DEBUG::Grid 2025-08-13 10:51:44 -06:00