Commit graph

21771 commits

Author SHA1 Message Date
Paul Davis
e4f6eb9190 remove debug output 2025-03-25 12:34:25 -06:00
Paul Davis
f82a9bbdc3 YTK: fix non-namespaced handling of action names in GtkUIManager
GTK+ 2.x only looked up action *names* and ignored the namespacing offered by
action groups. This means that if there are two actions in different groups
with the same name, GtkUIManager may not find the one intended when it is
referenced in a menus definition file.

This commit changes that - if the action name contains a '/' character it is
assumed to contain both the action group name and the action name, and it will
only look for the action within the named group.
2025-03-25 12:22:32 -06:00
Paul Davis
535934dee9 manually revert 119166a17f with a tweak 2025-03-25 11:17:05 -06:00
Robin Gareus
2a7129ef64
Update Luabindings for marker flags 2025-03-24 20:54:44 +01:00
Paul Davis
885a318299 after recording into a trigger slot, revert the box to playback mode 2025-03-24 11:51:52 -06:00
Paul Davis
119166a17f triggerbox: do not signal Captured() on every process cycle (for MIDI) 2025-03-24 11:43:32 -06:00
Robin Gareus
7c31e558a5
Fix duplicate MIDI Clock messages
Notably during realtime export an explicit flush of async
MIDI ports will duplicate port buffer content.

AsyncMIDIPort::cycle_end () calls `flush_output_fifo`,
and `flush_buffers` is called from PortManager::cycle_end.
2025-03-23 16:57:46 +01:00
Paul Davis
91f9561958 no track record enable if triggerbox is rec-enabled 2025-03-22 15:38:59 -06:00
Paul Davis
b2d011442a no slot rec-enabling if the track is rec-enabled 2025-03-21 22:54:25 -06:00
Paul Davis
bb2812f272 a variety of fixes for MIDI clip recording, and extended API to specify capture period 2025-03-21 20:55:36 -06:00
Robin Gareus
62d47d63a6
Hide irrelevant gtk messages from casual users 2025-03-21 23:16:18 +01:00
Paul Davis
5c3bcd608f NO-OP: add some helpful comments 2025-03-20 21:44:52 -06:00
Paul Davis
1911899d15 remove last of the remnants of "ardour-bindings" strings (library edition) 2025-03-19 20:19:24 -06:00
Robin Gareus
7f6f3d64f1
macOS/YDK: Fix crash when resizing windows
_gdk_window_process_updates_recurse() may recurse (duh),
and reenter drawRect. So `needs_display_region` needs
to be unset immediately, not at the end of the method.
2025-03-16 01:57:16 +01:00
Robin Gareus
d8b77aa719
Prepare for single comment-editor per route
Previously every RouteUI would create their own (Editor-mixer,
Mixer, Cue,..). Compare to StripableColorDialog.
2025-03-13 21:30:47 +01:00
Robin Gareus
b46f83a46a
Tweak clearlooks shadow-less frame border to 1px 2025-03-13 20:52:35 +01:00
Robin Gareus
41f0fd20f1
Allow bypassed aux-panners of multi-channel sends 2025-03-13 13:32:46 +01:00
Paul Davis
b403f7b8ed fix typo in a DEBUG_TRACE message 2025-03-12 21:10:24 -06:00
Paul Davis
90d5c82886 do not run ::associate() for bindings used as templates
This needs a better solution than this hack
2025-03-12 17:58:35 -06:00
Paul Davis
bfa39cd57a change the renaming process in Bindings::relativize()
We used to strip the group name from an action name, then prepend the
Bindings object name.

Now we simply prepend the Bindings object name.

So if the named action was Zoom/temporal-zoom-in it becomes, for example,
MidiCueEditorZoom/temporal-zoom-in
2025-03-12 17:58:35 -06:00
John Emmas
a4ee85c4a1 Some new gtkmm2ext functions need to be visible outside of gtkmm2ext 2025-03-12 11:10:47 +00:00
Paul Davis
7d1886b22d provide a copy-constructor for Gtkmm2ext::Bindings
This copies all the binding information for an existing Bindings object,
but then mutates all the action names from foo/bar to name/bar where name
is the given name for the new Bindings object.
2025-03-11 13:45:29 -06:00
Paul Davis
effe0bd879 use Gtkmm2ext::BindingSet inside libgtkmm2ext 2025-03-10 18:48:49 -06:00
Paul Davis
9472ca1a14 introduce API to set widget bindings as a vector of Bindings 2025-03-10 13:02:25 -06:00
Paul Davis
fd890b4891 evoral: add Sequence::channels_present() 2025-03-08 17:56:44 -07:00
Paul Davis
cee0b498e9 NO-OP: braces, please 2025-03-08 17:30:29 -07:00
Ayan Shafqat
19e00c575a
Add optimized NEON implementations for Aarch64
Introduce optimized NEON implementations for audio peak detection,
buffer mixing, scaling, and copy functions on AArch64.

For benchmark results, see ardour-neon-functions [1].

Provide a dedicated `aarch64_neon_functions.cc` for Aarch64 target.
provide backwards compatibility with armhf targets with
`arm_neon_fuctions.cc`.

[1] https://github.com/ashafq/ardour-neon-functions
2025-03-07 02:52:52 +01:00
Paul Davis
67fa5282cb Remove Region::absolute_time_to_region_beats()
This method did not do what its name suggested. Replace it with
::absolute_time_to_source_beats() which already existed and
computed the same result.

Also in a NoteCreateDrag, correctly adjust note start
depending on whether we are viewing the whole source or
just the region. This part may be amended later.
2025-03-06 18:12:39 -07:00
Robin Gareus
349a3cf039
Add API to resize Fader widgets 2025-03-06 20:10:20 +01:00
Robin Gareus
f3ec590eb5
Dynamically update ArdourButton indicator
Previously this was semi-random, on_size_request() may be called
in response to some other widget changing size, before a given
ArdourButton DPIReset handler could set _diameter = 0.
2025-03-06 17:02:33 +01:00
Paul Davis
e4b38b33b9 provide an environment variable to disable MIDNAM loading (just for testing purposes) 2025-03-04 11:30:48 -07:00
Robin Gareus
814fbfcb73
Prepare handling note-off for step entry 2025-03-04 16:14:59 +01:00
Robin Gareus
67716bc871
Thread-safe last_capture_sources access 2025-03-02 02:00:42 +01:00
Robin Gareus
c87fa094bd
Remove deprecated API 2025-03-02 02:00:34 +01:00
Robin Gareus
aafb2c8904
Overhaul [get]last_capture API
* Fix copy/edit bug: `get_last_capture_sources` cleared
last capture sources. tagging a take made its removal
impossible.

* `remove_last_capture` also directly modified capture
sources by reference in calling thread.

* get_ prefix violates styleguide #12
2025-03-02 01:23:12 +01:00
Robin Gareus
fe81f8de18
Add signals indicating last-capture-source changes 2025-03-01 23:19:20 +01:00
Robin Gareus
6535d7ed97
Unset last-capture sources when saving session
This prevents accidental deletes of files saved to disk
after the fact. e.g.

* save, delete last capture, quit w/o save.
* save, switch-snapshot, delete last capture.
2025-03-01 18:26:47 +01:00
Robin Gareus
622c27ed74
Add API to unset last capture source(s)
This is in preparation to clear the list when
switching snapshots to prevent destroying references.

https://discourse.ardour.org/t/discard-last-take-impacts-previous-snapshots-is-this-wanted-behaviour/111420/6?u=x42
2025-03-01 17:49:01 +01:00
Paul Davis
5fcc701f27 when creating an SMF source, round up the duration to the nearest bar unless the duration was explicit 2025-02-28 16:50:18 -07:00
Paul Davis
3ce789dc4c add ::duration_is_explicit() to SMF 2025-02-28 16:49:48 -07:00
Paul Davis
efcb26d7c1 add smf_length_is_explicit() to libsmf 2025-02-28 16:49:15 -07:00
Paul Davis
7ded62c37f when loading a region that is longer than its source, automatically fix up the length 2025-02-28 13:39:45 -07:00
Paul Davis
bdc495395b introduce Region::ensure_length_sanity()
This forces the length of AudioRegions to be an integer number of samples. It is intended
to fix a set of bugs that occur when using music time as the session time domain
and carrying out editing operations that would otherwise lead to audio regions
whose length involves fractional samples.

It is perfectly legal to specific audio distances that include fractional samples,
but there is no reason for any audio region to ever have such a length (we think).
2025-02-28 13:39:45 -07:00
Paul Davis
9f3a41b96b manually revert fa376b709d and debef6ab
Quantizing superclocks to samples in libtemporal negates the whole purpose of superclocks,
and breaks a variety of things, not limited to moving forward to markers and the grid
2025-02-28 13:39:45 -07:00
Paul Davis
570289ddc7 Region::set_length_internal() does not need to be virtual 2025-02-28 13:39:45 -07:00
Robin Gareus
a76acf34f8
Fix ATK builds c813ba2b03
extern here is literally C `extern`, not DLL exported functions,
see libs/tk/ztk/ztk/atkversion.h
```
#ifndef _ATK_EXTERN
#define _ATK_EXTERN extern
#endif
```
2025-02-28 21:19:52 +01:00
John Emmas
c813ba2b03 Ensure that 'ztk' will build a working DLL when built with MSVC 2025-02-28 14:36:18 +00:00
Robin Gareus
cdb7c8c4d1
Fix touch-related canvas ptr grab
This fixes an issue when canvas left double button click
pops up a dialog. Focus needs to propagate to the dialog.

see also 05f3ac50cc
2025-02-25 23:30:52 +01:00
Robin Gareus
2b327f97df
use C++11 for VST3 SDK (revert custom cxx98 patch) 2025-02-25 12:46:16 +01:00
Robin Gareus
adffd6f377
micro-optimization, call get_record_enabled() only once
Route::monitoring_state() is called in rt-threads each cycle
so every little bit helps to lower DSP load.
2025-02-25 00:41:46 +01:00