Commit graph

16912 commits

Author SHA1 Message Date
Robin Gareus
c1d98ca3c8
Export analysis: log loudness / time 2021-04-07 01:46:02 +02:00
Robin Gareus
e3a6fab05e
EBU/VAMP: clang-format and reduce scope 2021-04-07 01:45:29 +02:00
Robin Gareus
7390cad25d
Port registration should not mark the session as modified
This fixes dirty session after freewheeling export
or analysis.
2021-04-05 03:29:42 +02:00
Daniel Ceregatti
362b9cb4fa
Maschine Mikro MK2 support 2021-04-01 20:07:55 +02:00
Robin Gareus
723534f430
Further limit size of shaded "+" icon 2021-03-31 01:43:35 +02:00
Robin Gareus
edfcc71bcf
Revert "Fix auto capture alignment when bouncing metronome"
When the metronome is routed through a track, it
will correctly get the downstream playback latency.
Capture Alignment is Capture-Time.

This fixes a case where the metronome is connected to
physical I/O and a track. This can result in ambiguous
latency if the track's output is not connected or
connected via latent master bus.

This reverts commit f08b90f368.
2021-03-30 21:08:31 +02:00
Robin Gareus
ea01ec5988
Correctly detect glib volatile atomic
see also https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1919
2021-03-30 15:29:53 +02:00
Robin Gareus
d87002617e
Implement zero-latency convolver 2021-03-30 01:29:32 +02:00
Robin Gareus
cce1a67e75
zita-convolver: fix hang at when re-loading state
The convolver may be re-activated shortly after initialization
(e.g. session load, switching snapshots, or buffer-size.

In this case not all process threads may have started.
Convproc::stop_process() skips them (their state is still ST_IDLE).
Yet some short time later the thread's main function runs
and changes the state to ST_PROC, and check_stop () waits forever.

This is solved by waiting for all threads to start.
2021-03-30 01:29:28 +02:00
Robin Gareus
f7ab563da0
zita-convolver: prepare for non-power-of-two processing 2021-03-29 15:52:02 +02:00
Robin Gareus
915ce04a44
zita-convolver: remove unused API 2021-03-29 15:49:57 +02:00
Robin Gareus
1b1ef165d3
zita-convolver: add some const'ness 2021-03-29 15:36:09 +02:00
Robin Gareus
a270dc76d6
zita-convolver: always scope branches and loops 2021-03-29 15:34:44 +02:00
Robin Gareus
eebe4e467b
VST3: pass a read-only state stream to the plugin #8642
see also 9e7cfdd880 - this is a workaround for some plugins
that do not use the SDK and seek the stream using absolute
offsets.
2021-03-29 14:48:01 +02:00
Robin Gareus
7ea1b7c3c2
a-delay: BPM is independent of the meter (quarter notes / min) 2021-03-28 18:23:07 +02:00
Robin Gareus
fdc3efda7e
Add Lua binding to rename session 2021-03-27 19:44:00 +01:00
Robin Gareus
c96462f7bb
maschine2: gtk is an indirect dependency of libgtkmm2ext 2021-03-26 18:44:20 +01:00
Robin Gareus
60ff3ef764
Work around ffado port-name idiosyncrasies 2021-03-26 17:18:23 +01:00
Robin Gareus
e6496ab032
Ignore ARDOUR_DATA_PATH env variable on windows
The variable is unset (and unused), windows_search_path()
is used on that platform.

This prevents the "ARDOUR_DATA_PATH not set in environment"
message from being printed.
2021-03-26 17:15:12 +01:00
Robin Gareus
c51c254fae
Do not input-monitor ALSA/JACK MIDI-Through ports 2021-03-26 16:46:15 +01:00
Robin Gareus
ad4e92380a
Add a shaded plus (+) icon 2021-03-26 14:35:51 +01:00
Robin Gareus
fb33b4c2f3
Add convenience API to render icons on signal_expose_event 2021-03-26 14:35:45 +01:00
Robin Gareus
345726e223
Get NI maschine surface to compile again 2021-03-26 01:16:30 +01:00
Robin Gareus
32c7b18f6d
Relax export preparation timeout
This increases timeout granularity and ensure that
rt (TSFM) and butler thread can run to prepare exports.

This may fix an issue some windows users reported
"Cannot prepare transport for export", and increasing
the buffersize to 1024 or 2048 works around the isssue.

This also fixes an edge-case usecs_per_cycle() may return -1
(sleep forever) when the engine dies.
2021-03-25 21:15:13 +01:00
Robin Gareus
b174326228
Fix crash when using exclusive Mixbus listen 2021-03-24 19:16:31 +01:00
Robin Gareus
c1f1cd5b3e
Prepare for foldback bus A/PF Listen 2021-03-24 17:47:53 +01:00
Robin Gareus
bbb244c1c9
Implement replacing events in the immediate queue
This corrects issues introduced in a75c239c0c,
and fixes MIDI playback.
2021-03-24 04:05:35 +01:00
Robin Gareus
cc7b8b1bc5
gcc-11 compat, volatile atomic variables (1/2)
"While 'atomic' has a volatile qualifier, this is a historical
artifact and the pointer passed to it should not be volatile."

Furthermore "It is very important that all accesses to a
particular integer or pointer be performed using only this API"
(from https://developer.gnome.org/glib/2.68/glib-Atomic-Operations.html)

Hence initialization of atomic variables is changed to also use
this API, instead of directly initializing the value.

This also fixes a few cases where atomic variables were
accessed directly.

see also libs/pbd/pbd/g_atomic_compat.h
2021-03-22 15:30:07 +01:00
Robin Gareus
a75c239c0c
Do not accumulate SessionEvent::Overwrite events #8576 2021-03-22 02:54:42 +01:00
Robin Gareus
0fc53d4683
Reduce signal emissions from set_scale_amplitude #8576
Playlist::ContentsChanged() is implicit.

Region::send_change()
-> Playlist::region_changed ()
-> Playlist::notify_contents_changed ()
-> Playlist::ContentsChanged () /* EMIT SIGNAL*/

This cuts the number of signals in half and also
allows to freeze/thaw the playlist to collect the
signals for each playlist into a single signal.
2021-03-22 01:04:01 +01:00
Robin Gareus
6ac8ee41af
Collect Playlist::ContentsChanged() signals #8626
With a large session:

Editor::insert_time()
 -> Playlist::shift()
 -> 4000+ regions are modified
 -> 4k calls to Region::send_change()
 -> --"-- Playlist::region_changed ()
 -> --"-- Playlist::region_bounds_changed ()
 -> --"-- Playlist::notify_contents_changed ()
 -> --"-- ContentsChanged () /* EMIT SIGNAL */
 -> --"-- DiskReader::playlist_modified ()
 -> 4k Session::request_overwrite_buffer events are queued

The butler thread processes them all in the background, but
this also enqueues 4k+ events to the GUI event pool since the
GUI subscribed to Playlist::ContentsChanged ().

However the GUI is inside Editor::insert_time() and cannot handle
events. So they keep accumulating, and eventually hits
"POOL OUT OF MEMORY - RECOMPILE WITH LARGER SIZE!"

-=-
This fixes the issue by collecting blocking ::notify_contents_changed
until all region_changed() events are processed, and a single call
to Playlist::flush_notifications() notifies the UI and disk-reader.
2021-03-21 22:45:57 +01:00
Robin Gareus
d08b9eaa8d
Fix debug message: missing newline 2021-03-21 22:31:40 +01:00
Robin Gareus
e6dcc47d4a
Fix export-analysis true-peak display offset when stripping silence #8578 2021-03-21 14:36:10 +01:00
Robin Gareus
954edb7bd8
Work around jack input monitoring
This works around JACK not allowing to directly access physical
input buffers by creating an explicit connection.

Ardour access input-buffers directly without connection
for input meters and AFL. This work in general since data
on those ports are always read unconditionally at the start of
each process cycle.

 jack_port_get_buffer (jack_port_by_name (c, "system:capture_1"), n);

However with jack this fails if the given port is not connected.
Due to an internal jack optimization collecting input data is
skipped for ports that have no connections.
2021-03-21 00:06:44 +01:00
Robin Gareus
d4a80c18c5
Remove stale comment 2021-03-20 23:42:02 +01:00
Robin Gareus
83618c4667
Silence input-meters when port-buffer is n/a. 2021-03-20 23:09:36 +01:00
Robin Gareus
f361211891
Fix crash when removing custom transients
This fixes the following edge-case:
1. Place a custom transient marker.
2. Use Rhythm Ferret to analyze region.
3. Delete custom marker from (1) while rhythm-ferret
   dialog is still open, and analyzed onset markers are visible.
2021-03-20 19:21:31 +01:00
Robin Gareus
ff275b24c8
Fix analysis chunksize to be multiple of channel-count #8631 2021-03-20 16:20:20 +01:00
Robin Gareus
4bb3a896b4
Potential fix for lost/empty MIDI files when using snapshots #8552
* Copy flags of referenced file
* Do not share model with copied source!
2021-03-19 20:05:42 +01:00
Robin Gareus
4887350e0d
API consistency, prefer typedef'ed event_id_t 2021-03-19 06:29:03 +01:00
John Emmas
a2b1482cad Fix a problem with ASIO buffer sizes on Windows
PortAudio uses what it calls 'default suggested latencies' but in callback streaming mode, they can result in wildly inaccurate buffer sizing (e.g. the user requests a buffer size of 128 but PortAudio actually instructs ASIO to use a much bigger size).

What we do now is to improve PortAudio's suggested latency calculation by basing it on the actual buffer size requested by the user.
2021-03-18 16:12:28 +00:00
Olivier Humbert
cc79bc07ed
Update fr.po 2021-03-17 23:16:48 +01:00
Robin Gareus
01863886b5
Clean up Wself-assign - see also d91374d0db 2021-03-17 21:17:13 +01:00
Robin Gareus
48556cbd3c
Fix session-archive on macOS
By default Apple uses a private TMP folder. While mktemp
returns "/tmp/xxx" the canonical path is "/private/tmp/xxx".
This lead to issues when tmp-prefix is removed when building
the session-archive.

See also e52bdc55ad
2021-03-17 18:05:48 +01:00
Robin Gareus
71f8c8ff38
Fix -Wunused-comparison in for() loop
Fixes potential issues when loading a session where state
and IO port-count mismatches. Not sure if that can ever happen.
2021-03-17 17:59:36 +01:00
Robin Gareus
ee6e7e8a7e
Fix a -Wabsolute-value, use float for gain_t calculation 2021-03-17 17:57:01 +01:00
Robin Gareus
476856a42c
Fix caching gain coefficient for monitor gain 2021-03-17 17:55:59 +01:00
Robin Gareus
d91374d0db
Remove self-assign 2021-03-17 17:54:25 +01:00
Robin Gareus
7ef4a08b5e
No-OP: remove unused variables 2021-03-17 17:53:43 +01:00
Paul Davis
950f0d4c9b change return API for Location::clear_*() methods to indicate if anything was removed 2021-03-16 17:40:06 -06:00