13
0
Commit Graph

38627 Commits

Author SHA1 Message Date
9cc966120c
Consolidate internal bus checks (2/2) 2024-01-06 20:21:54 +01:00
3de600625f
Consolidate internal bus checks (1/2) 2024-01-06 20:21:51 +01:00
9bb4d0dcf8
Vapor: Add surround types/enum 2024-01-06 20:21:25 +01:00
c7772c220e
Vapor: Bootstrap Atmosphere plugin 2024-01-06 20:21:13 +01:00
0ada2df2e6
Implement [surround] LUFS meter 2024-01-06 20:21:06 +01:00
88c796c8f2
Add dedicated Exception for Plugin/Processor errors 2024-01-06 20:21:00 +01:00
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
66ad0ebb03
Region groups: do not group multiple takes on a single track 2024-01-06 20:20:30 +01:00
bcfa591ed2
Fix crash (or stuck solo) when removing tracks 2024-01-06 20:20:00 +01:00
49256a37e8
NO-OP: clarify source-tree structure 2024-01-06 14:23:47 +01:00
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
e8a902d875
Remove debug message 2024-01-06 04:19:20 +01:00
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
128278c75f
AAF Import CLI: fix media location, use new libAAF API 2023-12-26 14:36:44 +01:00
c5db23a15c
Update libAAF (upstream v0.5-2-g4dfb754) 2023-12-26 14:35:14 +01:00
agfline
f5689f37b6
Prepare libAAF update 2023-12-26 14:34:11 +01:00
agfline
156563a36f
allow to update libaaf from a local directory 2023-12-26 14:26:53 +01:00
1f689cac42
Replace deprecated g_basename() 2023-12-26 14:24:52 +01:00
46a2b45443
Tweak translatable strings
* add spaces around "->"
* consistently use "time domain" (instead of "timebase")
* remove "Edit ->" from "Preferences" (on macOS Prefs
  are not in the edit menu
2023-12-17 20:58:11 +01:00
Edgar Aichinger
eeadd04b14 update german translation (this time for real) 2023-12-17 11:45:15 +01:00
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
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
6c5d15a1e6 Ignore clangd cached index files 2023-12-13 19:12:30 +01:00
1434c624ff
Fix ffmpeg-5+ encoding drop-frame framerates 2023-12-13 17:41:44 +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
92d6cb9933
Fix alloc-dealloc-mismatch (video image) 2023-12-12 20:36:55 +01:00
Nil Geisweiller
5d73567ce2
Add Lua script to reverse MIDI
LUA EditorAction script to chronologically reverse MIDI notes
of selected MIDI regions, alongside MIDI region positions.
 * The positions of the MIDI regions are reversed as well, meaning regions
   at the end appear at the beginning and so on.
 * Individual notes are reversed so the ending of a note corresponds to its
   beginning. Thus notes should be quantized for this effect to yield good
   results.
 * Note that only MIDI notes are reversed. Other MIDI events such as CC or
   SYSEX are left unchanged.
2023-12-12 18:14:36 +01:00
George Witt
aa610fbfa5
Fix GM2 Drum Kit ProgramChange values
The GM 2 Percussion Sound Set specifies that PC #1 corresponds with a value of 00h
2023-12-12 18:10:43 +01:00
634aa9900d
UF8 for everyone 2023-12-12 03:38:50 +01:00
f184acfb9d prevent crash in AudioPlaylist::write() due to lossy time domain convert 2023-12-11 16:52:25 -07:00
e7cc096d19
Fix location list order (amend 7ee5a3f24) 2023-12-11 15:54:30 +01:00
9f5f7edc5b
Add debug message to check if yabridge is detected 2023-12-10 22:13:38 +01:00
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
f191d8ba94
Further consolidate locations signal emissions 2023-12-10 04:10:45 +01:00
fa0d1d98f9
Update Section list (once) in the background
This can accumulate multiple signal emissions into a
single idle update.
2023-12-10 04:10:01 +01:00
bdfee53d1f
Fix signal emission for Locations::ripple (2/2) 2023-12-10 04:08:55 +01:00
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
fe3827b1d8
Fix crash when session range is created (bug introduced in 7ee5a3f) 2023-12-10 01:48:13 +01:00
f407d4e3b7 ensure that MidiStreamView calls a color handler for each region
This allows MIDI regions to auto-update during theme editing
2023-12-09 14:07:58 -07:00
7ee5a3f24d
Keep location lists ordered by start-time 2023-12-09 02:26:49 +01:00
1da5c7f389
Fix ordering of locations
There are two lists, one for ranges, and one for
everything else.
2023-12-09 01:43:40 +01:00
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
62f20d126f
Another speedup when multiple locations change
This is mainly relevant for redo, and ripple
when all multiple locations are changed and static signals
are emitted by each Location.
2023-12-08 23:03:38 +01:00
857d8096a9
Revert "Keep Location List ordered by start-time"
This reverts commit 67f6363dcd.

This VERY slow when there are many locations in the session
e.g. with #9568 it can take seconds.
2023-12-08 22:14:04 +01:00
67f6363dcd
Keep Location List ordered by start-time
Now that Location signal(s) are only emitted when the
drag ended, the list can be kept in sync.

This also adds a further optimization to only update the
list once, even when multiple locations have been changed.
2023-12-08 22:03:22 +01:00
067a124fd1
Suspend signal emission of Locations during Drag
This significantly speeds up Location Drag/motion
2023-12-08 21:48:23 +01:00
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
7b1997ffda
Speed up Location changes #9568
Section Markers only need to be updated when an actual
section-marker is modified OR flags change.

This also removes duplicate signal subscriptions and
caches sorted Location list when iterating over section markers.
2023-12-08 17:22:32 +01:00
0c5bbfa62d
Location: add API to use cached sorted location list
Every call to ::next_section() copies the location list
and sorts all the regions.

If the session has a significant amount of Locations and
Section Marker (#9568 has 300+) sorting them each time
when iterating over sections is significant.
2023-12-08 17:22:28 +01:00
ebc887e33d
Continue export-roll to flush buffers
This is required when using plugins to write data.
2023-12-08 17:22:24 +01:00