Commit Graph

38804 Commits

Author SHA1 Message Date
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
a13a797600
Ignore "stop at end" when exporting
Exporting a dedicated Range should not be constrained by
session markers. This fixes at least 2 issues:

* export could be cut short when using latent plugins
* exporting a range crossing the session end marker was cut short
2023-12-08 17:22:09 +01:00
963c104cca
Change default sample-rate to 48kHz
44.1kHz is dead; many soundcards do not support it anymore.
2023-12-08 17:21:57 +01:00
004097075a
ControlGroup cannot just create Controls that don't exist
The call as-is can only create route-owned controls, and
even if it would succeed, the created ACs won't necessarily
be controlling anything.
2023-12-06 04:49:16 +01:00
87181710b2
Drop UI shared_ptr references to Transport Masters
This allows ARDOUR::cleanup to unregister ports before
destroying the Audio Engine. This fixes a crash at exist
with JACK since 0786be8.
2023-12-05 04:37:39 +01:00
0786be859d
Retain TransportMaster Ports across sessions
Unloading a session should only remove session-ports.
This fixes Timecode master sync when switching snapshots
or sessions.
2023-12-03 20:38:31 +01:00
4194313e4b
Make Timecode master connection order independent
When a user first connected a port to the Timecode master
input and then disconnected a previous port, the Timecode
master assumed it was not connected.
2023-12-02 23:42:27 +01:00
dacf488c86
Fix callback order of port-dis/connections
Previously the port-engine was a LIFO. Changes were pushed back
and then popped-back. This causes issues when re-connecting
Transport Masters.

The GUI does the following when changing connections:
1. disconnect all
2. connect to new port

which lead to TransportMaster::connection_handler being called
in reverse order: connect, disconnect, and the transport
master was assumed to not be connected.

--

Now connections queue is a FIFO and code was consolidated.

(Note, we cannot use a std::deque because it does not support
memory pre-allocation with ::reserve)
2023-12-02 23:34:58 +01:00
1386b3b73f
Revert s/frame/sample/ for LTC frame 2023-12-02 22:45:33 +01:00
8576db5642
Fix buffer-overflow in power range spectral analysis (#9560) 2023-11-30 19:43:27 +01:00
b376f271c4
AAF import tool: fix windows builds 2023-11-29 05:42:31 +01:00
de7d0a986b
Foldback: fix memory leak 2023-11-29 02:20:09 +01:00
55093b2095
AAF import tool use Ardour style logging, fixes windows builds 2023-11-28 17:38:27 +01:00
a8c26dbfa4
Fix localtime_r check (#9554) 2023-11-28 17:05:03 +01:00
jujudusud
5138d174cb French translations 2023-11-28 01:07:08 +01:00
1306a698a7
Sanitize MIDI track names, remove unprintable chars #9553 2023-11-28 00:29:19 +01:00
02d91a7ff0
Import aaf-session CLI
https://github.com/Ardour/ardour/pull/805
https://github.com/agfline/ardour_aaf_support/tree/aaf
2023-11-27 23:25:19 +01:00
e3128e932c
Compile and install libAAF 2023-11-27 23:25:04 +01:00
7593551e49
Import libAAF into Ardour's source-tree
tools/update_libaaf.sh - libaaf v0.1-85-g3e4c2cd
2023-11-27 23:24:54 +01:00
47e437c2aa
Bootstrap libAAF support 2023-11-27 23:18:22 +01:00
3355e753bf
Keep track of LV2 externalUI visibility
This allows Ardour to re-open previously shown plugins,
and toggle externalUI.

This worked in the distant past, before Ardour 3.3 introduced
the Ardour Window Manager.
2023-11-26 20:07:00 +01:00
73b44532f1
Allow to override visibility tracker
This is in preparation to keep track of external UI plugin UIs
2023-11-26 20:06:35 +01:00
04be971238
Properly stop message emission when closing external UI 2023-11-26 20:06:07 +01:00
282be3d459
Nobody cares about GLIB_2_64 anymore 2023-11-25 13:08:12 +01:00