Commit graph

20962 commits

Author SHA1 Message Date
Robin Gareus
32eb9b0520
Add API to define related controls
This is intended to show connected controls that share
automaton state, notably pannables
2024-01-19 02:20:48 +01:00
Robin Gareus
276adf292e
Do not automatically enable surround-send
For Mixbus, the surround-send is not visible.
2024-01-18 21:37:11 +01:00
Robin Gareus
75e8f58952
Fix muting of monitor section when engaging surround 2024-01-18 20:44:01 +01:00
Robin Gareus
8ca4c4a255
Fix Windows build (post 356374b)
Multiple definition of `ARDOUR::MPControl<bool>::set_value`
2024-01-18 18:48:16 +01:00
Robin Gareus
356374bfb3
Vapor: replace output format API with a controllable 2024-01-18 00:18:52 +01:00
Robin Gareus
1b57838e90
Explicitly catch Glib::ConvertError
Local builds are not affected, since
```
ConvertError is-a Glib::Error is-a Glib::Exception
```

However it seems that rethrowing the ConvertError exception
is not handled correctly with glib/g++ of official builds:

https://discourse.ardour.org/t/crashes-on-cd-export-no-toc-or-cue-files/109771
2024-01-15 16:49:34 +01:00
Robin Gareus
37e7fe9963
Escape cue cd-text like toc
Really do what 02852c1980 says, which only fixed toc files.
2024-01-15 16:25:25 +01:00
Robin Gareus
0fd1edd78e
Update well-known ctrl: separate global and per band EQ enum 2024-01-15 15:34:55 +01:00
Robin Gareus
3fc7db08f0
YTK: do no parse gtkrc and theme files 2024-01-14 20:28:43 +01:00
Robin Gareus
a3cd791166
Amend bfb22e2acc, fix generic MIDI signal connection 2024-01-13 18:50:26 +01:00
Robin Gareus
bfb22e2acc
Ctrl Surfaces: update bound controllables
Note: this only affects surfaces that use mapped_controls, and do
not already subscribe to processors_changed/RouteProcessorChange signal.
2024-01-13 17:14:17 +01:00
Robin Gareus
c3ec93997c
Remove old well-known ctrls API 2024-01-13 04:06:29 +01:00
Robin Gareus
048c574b07
Amend 70a0b47ce (add missing file) 2024-01-13 03:59:37 +01:00
Robin Gareus
70a0b47cef
Update Ctrl Surfaces: use new well-known-ctrl API 2024-01-13 03:08:51 +01:00
Robin Gareus
a7e36f77ac
Add enum-based well-known-ctrl API 2024-01-13 03:03:25 +01:00
Robin Gareus
12002e1dc0
FP8: only use visible channelstrip plugins
This is in preparation for multiple Mixbus channelstrip
Plugins.
2024-01-13 03:01:40 +01:00
Robin Gareus
4a9b2cd014
Vapor: set surround bus channel names 2024-01-11 06:47:13 +01:00
Robin Gareus
3c5f9f1450
Add API to set custom IO port channel names 2024-01-11 06:47:06 +01:00
Robin Gareus
db7a67980d
Vapor: allow to toggle 5.1 and 7.1.4 main output 2024-01-11 05:16:21 +01:00
Robin Gareus
a9719f1b35
Vapor: add support to trim surround object level 2024-01-10 01:31:57 +01:00
Ben Loftis
ee6d46d403 Ardour repo should not distinguish between Mixbus variants 2024-01-08 08:25:18 -06:00
Robin Gareus
ad51c7c2ba
Localize stripped down gtk2
This is intended mainly for GNU/Linux distros who will remove
GTK2 support in the near future.
2024-01-06 21:52:48 +01:00
Robin Gareus
6172de3144
Vapor: add Lua bindings 2024-01-06 20:24:37 +01:00
Robin Gareus
b84cd4fb5a
Vapor: Implement Surround Send/Return 2024-01-06 20:24:23 +01:00
Robin Gareus
ec32d22cb3
Vapor: Prototype LV2 export extension 2024-01-06 20:22:39 +01:00
Robin Gareus
3de600625f
Consolidate internal bus checks (1/2) 2024-01-06 20:21:51 +01:00
Robin Gareus
9bb4d0dcf8
Vapor: Add surround types/enum 2024-01-06 20:21:25 +01:00
Robin Gareus
c7772c220e
Vapor: Bootstrap Atmosphere plugin 2024-01-06 20:21:13 +01:00
Robin Gareus
0ada2df2e6
Implement [surround] LUFS meter 2024-01-06 20:21:06 +01:00
Robin Gareus
88c796c8f2
Add dedicated Exception for Plugin/Processor errors 2024-01-06 20:21:00 +01:00
Robin Gareus
5476aa336f
Fix "Ignored automation data for non-automatable parameter"
Do not save automation data for parameters that cannot
be automated.
2024-01-06 20:20:45 +01:00
Robin Gareus
66ad0ebb03
Region groups: do not group multiple takes on a single track 2024-01-06 20:20:30 +01:00
Robin Gareus
bcfa591ed2
Fix crash (or stuck solo) when removing tracks 2024-01-06 20:20:00 +01:00
Robin Gareus
58641d2a35
Fix crash when session-load fails while creating Routes
When loading the state of a Route fails (here
"unknown enumerator SurroundMaster in PBD::EnumWriter"), the
routes which have already been loaded are not added to the
Session's routelist.

Already existing routes that have an InternalSend or have
a circular reference:

The Send's `_send_from` holds a shared pointer
`<Route>(shared_from_this())` to the Route, and the
Route's ProcessorList contains the InternalSend.

This leads to various
"SessionHandleRef exists across session deletion" of
IO, Ports, GraphNode, Graph, etc
which causes issues when loading another session.

Session::destroy() cleans calls drop_references for
each route in the RouteList, which breaks the circular
dependency (InternalSend drops reference to Route).
But here the RouteList is empty.

Crash fixed:
 * Load a session that fails to load a Route
  (here a session created on with the vapor branch, on master)
 * Then load another session without restarting Ardour.
2024-01-06 04:19:24 +01:00
Robin Gareus
e8a902d875
Remove debug message 2024-01-06 04:19:20 +01:00
Robin Gareus
986faf42f5
Initialize some uninitialized variables
This is only relevant when session load fails, by throwing
an error, which is caught and calls destroy() before
Session::setup_lua is called.
2024-01-06 04:19:14 +01:00
Robin Gareus
c5db23a15c
Update libAAF (upstream v0.5-2-g4dfb754) 2023-12-26 14:35:14 +01:00
Edgar Aichinger
eeadd04b14 update german translation (this time for real) 2023-12-17 11:45:15 +01:00
Robin Gareus
c3b55240b1
Fix erasing events in MIDIBuffer
When the last event in a MIDI buffer was erased, the whole buffer
was assumed to be empty (bug introduced in 7.5-96-gc5511040ec)
2023-12-15 08:50:10 +01:00
Robin Gareus
066df7cc1a
LV2: fix crash when replicating stateful plugin on copy
When copying a mono LV2 plugin to a stereo track, the
state of the copied mono plugin is copied to the replicated
instance.

However at this point in time PBD::Stateful::ForceIDRegeneration
is still enabled, and the state ID has not been set.

This used to not be an issue. Older versions of liblilv
handle non-existent paths just fine.

However in lilv v0.24.20-10-gdd5e851 `lilv_path_absolute`
was replaced with `zix_canonical_path` which returns NULL
if a state file does not [yet] exist. This lead to a segfault
due to strlen(NULL) in `serd_node_new_file_uri`:

#0 strlen -- SEGV on unknown address 0x000000000000
#1 serd_node_new_file_uri () at /lib/x86_64-linux-gnu/libserd-0.so.0
#2 lilv_state_new_from_file () at /lib/x86_64-linux-gnu/liblilv-0.so.0
#3 ARDOUR::LV2Plugin::set_state(XMLNode const&, int) at ../libs/ardour/lv2_plugin.cc:2320
2023-12-15 04:30:45 +01:00
John Emmas
9f3438b2bc Fix a call to 'access()' by adding a call to 'uriDecodeString()'
For testing - needs to be checked by Adrien and will most likely be needed for other calls to 'access()'
2023-12-13 16:13:11 +00:00
Robin Gareus
92d6cb9933
Fix alloc-dealloc-mismatch (video image) 2023-12-12 20:36:55 +01:00
Robin Gareus
634aa9900d
UF8 for everyone 2023-12-12 03:38:50 +01:00
Paul Davis
f184acfb9d prevent crash in AudioPlaylist::write() due to lossy time domain convert 2023-12-11 16:52:25 -07:00
Robin Gareus
9f5f7edc5b
Add debug message to check if yabridge is detected 2023-12-10 22:13:38 +01:00
Robin Gareus
4402e2a3a8
Add workaround for yabridge threading
* yabridge runs the plugin's process function in a dedicated
  bridged thread. Ardour's process thread is not (it just waits)

* When a plugin calls `restartComponent` from the realtime
  thread. yabridge uses a host notification thread to perform
  the callback.
  Unlike other VST3 implementations that use a notification thread
  (eg. JUCE), yabridge blocks and waits for the notification to
  complete before the realtime thread can continue.

This leads to a deadlock.

However, we know that yabridge always synchronizes the
callback and concurrent calls are prevented by yabridge's design.

https://github.com/robbert-vdh/yabridge/issues/266
2023-12-10 22:08:59 +01:00
Robin Gareus
f191d8ba94
Further consolidate locations signal emissions 2023-12-10 04:10:45 +01:00
Robin Gareus
0f3e3b5243
Fix signal emission for Locations::ripple (1/2)
Locations::ripple can never add/remove markers, hence
Locations::changed is not applicable.

That signal is to indicate when more than one location is
added or removed from the location list.
2023-12-10 04:08:30 +01:00
Robin Gareus
1de91fa0fb
Significantly reduce signal emission for Location undo
Undo sets the state of ALL Locations, which resulted in
at least two signals for each Location (name changed,
start+end changed), even if there was no change.
2023-12-08 23:48:37 +01:00
Robin Gareus
153c7e289d
Add explicit API to copy Locations
This is in preparation to reduce signals during
Location Drag motion (which operates on a copied
Location, that causes [static] signal emissions,
but the location itself is not in any list).
2023-12-08 21:47:03 +01:00