Commit graph

21240 commits

Author SHA1 Message Date
Robin Gareus
c16e31012b
RegionFX: include plugin tail with pre-fade Fx 2024-08-18 00:54:36 +02:00
Robin Gareus
4bcf1d31c6
RegionFX: implement pre/post region-fade FX 2024-08-18 00:54:29 +02:00
Robin Gareus
8f5d6295b3
RegionFX: fix plugin cycle times 2024-08-18 00:54:09 +02:00
Robin Gareus
d8725ff3c8
RegionFX: fix crash when custom GUI thread sends change requests
This can happen with VST2s (e.g gvst) and some JUCE based plugins.
Previously that lead to a "programming error: no per-thread pool"
when the DR queues a overwrite buffer session-event.
2024-08-17 16:54:53 +02:00
Robin Gareus
76ee3339ac
RegionFX: fix variable I/O channel map 2024-08-17 16:47:53 +02:00
Robin Gareus
74a909e299
RegionFx: allow touch (for "show on touch") 2024-08-17 16:47:45 +02:00
Robin Gareus
d9752bb2c5
RegionFX: fix replicated channels 2024-08-17 16:47:38 +02:00
Robin Gareus
a2a9ceab92
RegionFX: actually activate plugin on load 2024-08-17 16:47:33 +02:00
Robin Gareus
15c7603fdd
Add API to query plugin tail duration
So far only VST3 plugins have an actual implementation.
2024-08-17 16:47:30 +02:00
Robin Gareus
b4fca7bc1c
Refactor API to allow VST2 plugins to callback to I/O and RegionFx 2024-08-17 16:47:26 +02:00
Robin Gareus
8c4819e588
AU: request offline processing 2024-08-17 16:47:21 +02:00
Paul Davis
35cb60c2dc remove "auto-discover" buttom from Mackie GUI
It could never do anything useful anyway, and deadlocked due to bad
lock usage
2024-08-16 13:12:24 -06:00
Robin Gareus
d4b71a7777
VST3: correctly set offline processing 2024-08-15 15:03:42 +02:00
Robin Gareus
8a8ae7069e
Fix edge-case pre-roll required for looping
This is mainly for the benefit of Mixbus, where input_latency
is not propagated upwards from the master bus (no direct
connection).

In Ardour's case _worst_input_latency >= _worst_route_latency
unless a given track with latent plugin is not connected.

Previously looping became out of sync (normal playback was not
affected) when a track had a latent plugin.
2024-08-14 21:50:58 +02:00
Robin Gareus
3bdf378df3
Add some additional Lua bindings 2024-08-12 21:36:55 +02:00
Robin Gareus
58120f75d5
Add API to check if backend was used previously
This is backported from LiveTrax, yet potentially handy
for future auto-connect policy in Ardour as well.
2024-08-12 21:26:42 +02:00
Robin Gareus
84506a041c
Move Mute automation with region(s) #9762
Mute and Panner are the only automatable Route owned controls
(that are not managed by a processor). So they need special
casing to be moved when moving a region.
2024-08-09 16:03:39 +02:00
Robin Gareus
15912fea77
Remove outdated monitor-modes PDF, refer to the manual 2024-08-07 01:16:57 +02:00
Robin Gareus
b121ee157e
Update Auto-Input meter policy
This replaces rule #17, 27, 43 and 59 on
https://manual.ardour.org/appendix/monitor-modes/

"Meter (What you see)" changes to 'Disk (Audio)'
aka "what you hear" in those cases.

This way "what you see" is always "what you hear".
Monitoring inputs is more conveniently done using
the Recorder Page.
2024-08-07 01:15:50 +02:00
Robin Gareus
76b25163bd
Fix YTK filemanager recently-used (Windows, macOS)
g_get_user_data_dir() folder does not exist on macOS
compare to gtkfilechoosersettings.c which creates
g_get_user_config_dir().
2024-08-06 20:51:56 +02:00
Robin Gareus
558e32e639
VST3: handle offline FX processing callbacks
This fixes potential deadlocks, when not using rt
process threads.
2024-08-06 20:51:55 +02:00
Paul Davis
3f1486fa12 coreselection: fix thinko
The core selection can be (a) stripables (b) automation controls (c) possibly a combination of both

Any given selection op might pass (a) or (b) or (c), so we need to handle the
case where (a) is null.
2024-08-05 20:14:28 -06:00
Robin Gareus
c2bf45a033
Fix triggerbox cues when looping
This correctly handles the case when a cue marker is at the
same position as loop-end. Previously the cue was triggered
even though transport looped
2024-08-03 20:21:53 +02:00
Robin Gareus
dc5753118c
Fix LTC TC master for incoming 30fps LTC
By default timecode.rate = 30. When 30fps LTC is received,
::detect_ltc_fps() never returned true (FPS changed), and
the TransportMaster never entered "locked" stage.
2024-08-02 23:29:13 +02:00
Paul Davis
b21dd1212e redesign API and internals of CoreSelection for more universality
We now have two basic methods for CoreSelection

* when selecting a stripable, use ::select_stripable_and_maybe_group() with
  appropriate arguments to cover the group selection aspects.

* when selecting an automation control that is part of a stripable, call
  ::select_stripable_with_control()

The old, more simply named methods (set/add/toggle etc.) have all been
made private, and their internal implementations changed somewhat.

This commit includes changes to control surfaces that use CoreSelection directly.
2024-08-02 11:50:21 -06:00
Paul Davis
af5c99dd05 move definition of selection operations in to ARDOUR namespace
This is a rare commit that I think should be done for GUI and libs at the same time
2024-08-02 11:50:21 -06:00
Robin Gareus
5d02970de8
Clarify new session dirty state
New unnamed sessions need to remain dirty so that the GUI
asks to save or delete the session.
2024-08-01 23:26:57 +02:00
Ben Loftis
03971be30d tweak MMC behavior: ffwd should start rolling immediately; but disallow ffwd during active recording 2024-08-01 12:34:58 -05:00
Ben Loftis
ff9a55df97 add a preference for MMC FastWind which allows skipping to markers 2024-08-01 12:34:58 -05:00
Robin Gareus
a76b2ed1bb
Rename JACK to "JACK/Pipewire" on Linux (1/2) 2024-07-31 04:38:01 +02:00
Paul Davis
83984a7884 emit a new signal when a ProcessorElement is added to the selection inside a DnDVBox<ProcessorEntry> 2024-07-29 10:19:52 -06:00
Paul Davis
ad1377abb5 add a new class-static signal for ControlProtocol modules to know when a plugin has been selected 2024-07-29 10:19:52 -06:00
Paul Davis
f3e35cc145 name RF64 files with .wav suffix
In livetrax, where RF64 is one of two file formats, people frequently end up
with files named .rf64 that are actually .wav due to the libsndfile
header file downgrade. We want to avoid this, and this seems like
a more common case than people generating actual RF64 files that
(now) will be named .wav
2024-07-29 10:19:52 -06:00
Paul Davis
4de0189dc4 add rf64 file suffix to list of safe file extensions for audio 2024-07-29 10:19:52 -06:00
Paul Davis
941bc3a4f2 NO-OP: braces, please! 2024-07-29 10:19:52 -06:00
Robin Gareus
4b75ed249e
Unregister ports directly after RCU update
see also 2e23ec4422. This fixes a bug where some ports
remain in used (shared_ptr<Port>) by the RCUManager, even
after the port is removed from the port_map.

This can lead to issues when the port is re-registered later.
2024-07-27 22:25:09 +02:00
Mads Kiilerich
4f2b96dca8 faderport8: Better debug trace when not probing the midi ports
This would have helped former me when trying to use FaderPort with
PulseAudio backend.
2024-07-25 13:50:54 +02:00
Mads Kiilerich
8633e82891 commandline: Allow -D to be specified multiple times
Yes, -D takes a comma separated list, but it is still confusing and
unnecessary that the first -D options were silently ignored.
2024-07-25 13:48:38 +02:00
Paul Davis
46715fec66 locations: extend API for first_mark_{before,after}_flagged to allow returning the found location
Also use newer C++ loop syntax for syntactic sugariness
2024-07-24 19:00:55 -06:00
Robin Gareus
06962c7728
Yet another runtime free() API fix
See also 8c583f8e20
2024-07-24 19:23:50 +02:00
Robin Gareus
12e1a6f73d
Fix runtime error free()ing LV2 event buffers 2024-07-24 17:47:54 +02:00
Paul Davis
3f8d0ddc3d faderport: fix SNAFU caused by switching to Mixbus-style use of user button
User stopped being a modifier but was still being treated as one.
2024-07-23 18:21:43 -06:00
Mads Kiilerich
213812c31c
region: Drop superfluous setting of _type in Region constructor 2024-07-24 01:50:11 +02:00
Mads Kiilerich
ea242254d3
warnings: Remove redundant move in return statement
GCC 14 educates us:

	../libs/ardour/session.cc: In member function ‘std::vector<std::__cxx11::basic_string<char> > ARDOUR::Session::source_search_path(ARDOUR::DataType) const’:
	../libs/ardour/session.cc:6969:25: warning: redundant move in return statement [-Wredundant-move]
	 6969 |         return std::move(sp);
				|                ~~~~~~~~~^~~~
	../libs/ardour/session.cc:6969:25: note: remove ‘std::move’ call
2024-07-24 01:50:11 +02:00
Mads Kiilerich
0352ff8c5e
warnings: Remove redundant/illegal/undefined-behaviour template-id for constructor
GCC 14 educates us:

	In file included from ../libs/ardour/ardour/io.h:44,
									 from ../libs/ardour/ardour/route.h:50,
									 from ../libs/ardour/ardour/session.h:92,
									 from ../libs/ctrl-interface/midi_surface/midi_surface.cc:30:
	../libs/ardour/ardour/port_set.h:92:37: warning: template-id not allowed for constructor in C++20 [-Wtemplate-id-cdtor]
		 92 |                 iterator_base<PS,P>(PS& list, DataType type, size_t index)
				|                                     ^~
	../libs/ardour/ardour/port_set.h:92:37: note: remove the ‘< >’
2024-07-24 01:50:11 +02:00
Robin Gareus
50e5e3bd8f
Consistently ignore punch-in/out without punch-range 2024-07-23 18:56:26 +02:00
Mads Kiilerich
74edf63d01
format: Apply some work-arounds for code that would confuse clang-format 2024-07-23 17:04:14 +02:00
Mads Kiilerich
f063bfef03
format: Improve header robustness against #include reordering 2024-07-23 17:03:56 +02:00
Mads Kiilerich
81ca475b10
format: Protect the special session_configuration_vars.h and its use of CONFIG_VARIABLE 2024-07-23 17:03:56 +02:00
Robin Gareus
9b6039c170
Remove debug message, improve comment 2024-07-23 16:56:25 +02:00