Commit graph

18433 commits

Author SHA1 Message Date
Robin Gareus
725c00236c
Disambiguate export formats with same loudness but different true-peal
Amend 75829d20f2
2021-04-16 04:29:16 +02:00
Robin Gareus
861417c07c
Disable rec-arm on export
Previously this wasn't the case when latched-record-enable
preference was enabled.
2021-04-16 04:29:12 +02:00
Robin Gareus
63ef60ea93
Fix formatting of `-inf' on some Windows systems
Among others, this fixes tooltip display on aux-send faders
2021-04-14 17:58:30 +02:00
Robin Gareus
f410dc433c
Fix Lua get_processor_param API 2021-04-14 17:53:56 +02:00
Robin Gareus
a1d53c1d2e
Fix linking unit-tests with lld
ld.lld: error: libs/pbd/libpbd.so: undefined reference to dlopen [--no-allow-shlib-undefined]
2021-04-13 23:29:02 +02:00
David Robillard
69e5fd1c99 Fix audiographer normalizer test
Build broken in 75829d20f2.
2021-04-13 14:59:05 -04:00
Robin Gareus
883f818626
Fix C++11ism 2021-04-13 05:35:29 +02:00
Robin Gareus
baf8fe7bc5
Propter may accept current value 2021-04-12 23:16:20 +02:00
Robin Gareus
f0cb8e54c3
Fix taglib error message 2021-04-12 23:15:30 +02:00
Robin Gareus
c4f0393cf9
Keep track of export-limiter redux 2021-04-12 23:15:30 +02:00
Robin Gareus
89a65f76b0
Update analysis duration when post-processing
This prevents the need to re-bin data in case silence is
trimmed at start or end of the export.
2021-04-12 23:15:30 +02:00
Robin Gareus
df47da4e55
Disambiguate export filename early on
When exporting multiple formats with identical filename
extension for the same time-span, the format-name needs
to be added.

Previously that was done internally when starting to export.
The Export-Dialog did not show correct filenames nor
warn of existing files that will be overwritten.
2021-04-12 23:15:30 +02:00
Robin Gareus
75829d20f2
Overhaul export loudness normalization
* Fix exporting multiple formats with different
  normalization settings or demo-noise settings
* Add true-peak limiter (based on x42-limiter dpl.lv2)
* Optionally use a limiter for loudness normalization
* Fall back to short-term loudness when normalizing
  material too short for integrating loudness.
2021-04-12 23:15:30 +02:00
Robin Gareus
8f5c3fcddb
Fix non-layered record-undo
Previously an empty RegionList was used (auto-partition
changes were never collected at rec-stop), furthermore
auto-partitioned regions do not have an old ARDOUR::AutomationList
(fade in/out) property (_have_old is false).
2021-04-12 23:14:13 +02:00
Edgar Aichinger
5d12aa15f5
update german translation 2021-04-11 17:44:17 +02:00
Robin Gareus
5cd6c261b7
Revert "Fix MIDI capture alignment"
This reverts commit 3fe87b9fa1.

This commit incorrectly overcompensated MIDI. The DW already
aligns to _first_recordable_sample.
2021-04-11 15:15:33 +02:00
Robin Gareus
635d83709b
Fix MIDI source write-names
This follows bb50925998,
Prevent leaking "recorder:" into the file-name, and fixes
a related bug setting the "captured for" ID for MIDI
2021-04-11 15:15:29 +02:00
Robin Gareus
8661aa1809
ALSA: Fix swapped systemic latencies
This went unnoticed since measured systemic latency
is equally distributes between input and output.
2021-04-11 15:15:17 +02:00
Robin Gareus
bc1d19ab39
Increase process-thread stack size (same value as jack2) 2021-04-09 22:00:11 +02:00
Robin Gareus
5e01275d0e
Set default master-bus meter-point to output
For master-bus measuring the signal directly at the
output is preferable. This includes the panner, mute,
and loudness gain.
2021-04-08 01:18:09 +02:00
Robin Gareus
72db091619
Fix crash at exit with classic Faderport
FaderPort::~FaderPort () can be called while
FaderPort::map_gain() is called from FaderPort::periodic()

```
Thread 71 Crashed:
0      libardour_faderport.dylib          	0x0000000110539c3a ArdourSurface::FaderPort::map_gain() + 138
1      libardour_faderport.dylib          	0x000000011053996d ArdourSurface::FaderPort::periodic() + 109
2      libglibmm-2.4.1.dylib                  	0x000000010bf21da8 Glib::TimeoutSource::dispatch(sigc::slot_base*) + 56
3      libglibmm-2.4.1.dylib                  	0x000000010bf20c97 Glib::Source::dispatch_vfunc(_GSource*, int (*)(void*), void*) + 39
4      libglib-2.0.0.dylib                      	0x000000010c012496 g_main_context_dispatch + 326
5      libglib-2.0.0.dylib                      	0x000000010c01281a g_main_context_iterate + 474
6      libglib-2.0.0.dylib                      	0x000000010c012b3f g_main_loop_run + 191
7      libpbd.dylib                                    	0x000000010bcee42e BaseUI::main_thread() + 254
8      libglibmm-2.4.1.dylib                  	0x000000010bf16373 (anonymous namespace)::call_thread_entry_slot(void*) + 35
9      libglib-2.0.0.dylib                      	0x000000010c03dd0a g_thread_proxy + 90
10    libsystem_pthread.dylib              	0x00007fff759e42eb _pthread_body + 126
11    libsystem_pthread.dylib              	0x00007fff759e7249 _pthread_start + 66
12    libsystem_pthread.dylib              	0x00007fff759e340d thread_start + 13
```

While the GUI thread has already closed the MIDI ports in ~FaderPort
and proceeded to take down the FP GUI.

```
Thread 0:: Dispatch queue: com.apple.main-thread

47    libgtkmm-2.4.1.dylib                    	0x000000010ca69a56 Gtk::ComboBox::~ComboBox() + 22
48    libardour_faderport.dylib          	0x000000011055a6e5 ArdourSurface::FPGUI::~FPGUI() + 149
49    libardour_faderport.dylib          	0x000000011055a8b5 ArdourSurface::FPGUI::~FPGUI() + 21
50    libardour_faderport.dylib          	0x0000000110551396 ArdourSurface::FaderPort::tear_down_gui() + 70
51    libardour_faderport.dylib          	0x0000000110536507 ArdourSurface::FaderPort::~FaderPort() + 535
52    libardour_faderport.dylib          	0x0000000110536b9e ArdourSurface::FaderPort::~FaderPort() + 14
53    libardour.dylib                              	0x000000010ac13f08 ARDOUR::ControlProtocolManager::drop_protocols() + 168
54    libardour.dylib                              	0x000000010b0ba7e4 ARDOUR::Session::destroy() + 212
55    libardour.dylib                              	0x000000010b0bbe01 ARDOUR::Session::~Session() + 113
56    libardour.dylib                              	0x000000010b0bdb5e ARDOUR::Session::~Session() + 14
2021-04-07 02:25:52 +02:00
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