13
0
Commit Graph

20007 Commits

Author SHA1 Message Date
83d6b87249
VST3: load custom state after setting parameters (#9206)
This broke in b27467157b. Control port changes were
postponed (written to ringbuffer) and only evaluated
at first run.
2023-02-11 13:31:27 +01:00
441a6ec069
Revert "Prefer symbols from plugins"
This reverts commit 102c48d7a1.
This breaks various plugins, notably all JUCE based ones,
during instantiation.
2023-02-09 23:39:34 +01:00
102c48d7a1
Prefer symbols from plugins
Now that we can require glibc 2.3.4, we can use RTLD_DEEPBIND.
This can help with plugins that do no hide symbols for their
contained statically linked libraries, and instead would use
use symbols.

Note: This only works on Linux.
2023-02-09 21:08:36 +01:00
eeaf0bdadc
Fix non-intel arch builds (cpuid.h header) 2023-02-09 20:54:46 +01:00
Ayan Shafqat
bb31125c94
Fix CPUID to detect AVX512F
CPUID is part of x86_64 ISA to query CPU features. In order to determine
AVX512F ISA extension, EAX and ECX needs to be set to 7 and 0
respectively before invoking `cpuid` instruction. This commit also
removes inline assembly for __cpuid in favor of using compiler provided
intrinsic functions. Both GCC and clang provides __cpuid like function
via __cpuid_count intrinsic.

This commit also creates a portable wrapper over compiler intrinsic
functions, __cpuid and __cpuidex. `cpuid' provides base level ISA query
and `cpuidex` provides extra extension information like AVX512F. These
wrappers lean towards MSVC like API.

References:
CPUID Docs: https://en.wikipedia.org/wiki/CPUID

GCC's ``docs" on __cpuid_count:
https://gcc.gnu.org/git/?p=gcc.git;a=blob;f=gcc/config/i386/cpuid.h

Clang's docs on __cpuid_count:
https://clang.llvm.org/doxygen/cpuid_8h.html

MSVC's docs on __cpuid and __cpuidex:
https://learn.microsoft.com/en-us/cpp/intrinsics/cpuid-cpuidex
2023-02-08 23:20:20 +01:00
445e5162fd
VST3: assume left-only is Mono (#9229)
VST3 speaker arrangements (ie port is connected) can distinguish
between left only pin (of stereo pair) and Mono.
2023-02-08 22:53:26 +01:00
4429697799
VST3: deactivate plugin before calling setBusArrangements
This may currently happen from rt-context, further work
may be needed.
2023-02-08 04:42:57 +01:00
515881653d
VST3: debug setBusArrangements 2023-02-08 04:41:42 +01:00
b069b504f6
VST3: add SpeakerArr debug messages 2023-02-08 03:51:42 +01:00
cc7219636f
Ignore Steinberg's non-virtual-d'tor 2023-02-08 02:03:54 +01:00
53ab6cde1b
Add missing diagostics pop 2023-02-08 01:53:42 +01:00
7b3701d1ef
NO-OP: whitespace 2023-02-08 01:35:45 +01:00
58a846325b
Fix another const warning 2023-02-08 01:35:35 +01:00
bf9ed3f470
Fix loading Ardour 2 sessions with external redirects 2023-02-07 18:28:56 +01:00
4796a3643d use C++11 auto iterator 2023-02-06 21:04:17 -07:00
5979647c22
Fix const warning 2023-02-07 03:43:00 +01:00
fbb175df4e
Enable avx512f support for windows builds 2023-02-06 21:36:09 +01:00
5ee7941895 Only use render-group when container is not opaque 2023-02-05 22:34:38 +01:00
Ayan Shafqat
13562d94f4
Add AVX512F test to CPPUNIT 2023-02-05 16:16:59 +01:00
3d62ab1c53
Do not create sidechain ports by default
In many cases optional sidechain inputs are not used.
Previously sidechain ports were created, but remained
unconnected and silence was passed to the plugin's key input.

Plugins can detected if a pin is connected. Some plugins
(e.g. VST3  Waves SSL Comp) activate the sidechain processing
automatically when depending in connection.

It is more common that a user does not want to use an external
sidechain, and if they want they should use the pin-dialog
to connect it. So leaving it off by default is sensible.

see also #9223
2023-02-05 16:06:19 +01:00
55d1b66b72
Connect sidechain pins when adding sidechain [ports]
This is in preparation to allow to skip adding sidechain ports
by default. When a user later adds the SC input ports, it is
convenient to connect the pins just like they are when they
are connected when instantiating the plugin (via reset_map).
2023-02-05 15:55:29 +01:00
64ec70ec20
Fix plugin replication wrt. sidechains
Ignore sidechain pins, when no sidechain ports are present.
Otherwise a plugin with 1 audio input and 1 sidechain input
would match a stereo track when the sidechain port is not present.
2023-02-05 15:46:33 +01:00
Marijn Kruisselbrink
185fe497c6
Fix AutomationListPropertyTest
These tests use reference files that were generated with a particular
value for superclock_ticks_per_second. The default for that has changed
since the last time the reference files were updated though, causing
tests to fail. Rather than updating the reference files for the new
default value, this makes the test not depend on the default value by
hardcoding the value that was used to generate the reference files.
2023-02-04 23:48:13 +01:00
Ayan Shafqat
17b263dfda
Fix comment mistake 2023-02-04 23:07:17 +01:00
Ayan Shafqat
b3a10378cf
Add AVX512 optimized routines
The routines have been profiled using a test fixture.
https://gist.github.com/ashafq/50880bbbf7769f4f307e9ea9c7e71cf9
2023-02-04 23:07:17 +01:00
Ayan Shafqat
6b766e41f4
Integrate AVX512F support into Ardour
The current implementation is just a stub of AVX and is not
utilizing AVX512F.
2023-02-04 23:07:17 +01:00
Ayan Shafqat
bf8fced073
Add CPU detection 2023-02-04 23:07:17 +01:00
Ayan Shafqat
a050d9bf1f
Add newly created functions to libardour API 2023-02-04 23:07:17 +01:00
Ayan Shafqat
6a3ae8ad72
Add placeholder AVX512F functions
This file is just copied over from AVX and changed prefix
of function calls from `x86_sse_avx' to `x86_avx512f`.
2023-02-04 23:07:17 +01:00
pkubaj
387cac0ec5
Fix build on FreeBSD/powerpc64*
Only glibc has __ppc_get_timebase() function. On FreeBSD use the same assembly call that __ppc_get_timebase() actually executes.

This probably should be extended to musl and OpenBSD, but I have no way of checking that.
2023-02-04 22:40:52 +01:00
380005f50f Update preference to set macOS render performance 2023-02-04 22:34:12 +01:00
509504acf2 Add API to set openGL backing scale 2023-02-04 22:25:52 +01:00
ffafa5cfc7 NSGLView: clean up, allow optional scaling 2023-02-04 21:36:01 +01:00
d12dd4015d
Revert canvas debugging
This reverts commit 8359311849.
This reverts commit f377822891.
This reverts commit 859d6ebe4a.
This reverts commit 4cd7de7a6f.
2023-02-04 18:23:18 +01:00
17f2862f96
Emit signal when resampler-quality changes 2023-02-04 03:20:20 +01:00
caec9acf8d
Export: check all channel-configurations before export
This correctly sets up the filename, and lists all existing
files that will be replaced on export.
2023-02-04 00:21:09 +01:00
054e1c3c12
Retain pending state after recovery (#9215)
After recovering from a crash, the user still needs to
retain the option to ignore the changes that were done
just before the crash after investigating them (or save them
into a snapshot).

Previously crash recovery unconditionally overwrote the
session file (see discussion on bug tracker).
2023-02-03 07:50:32 +01:00
1434789103
Allow to profile session-state save (again)
This was removed in
 bf0a525647
 2316df357b

"SaveState" was chosen because "State" prefix overlaps with
"Stateful", and "SessionState" overlaps with "SessionEvent"
debug names. `-DState` or `-DSession` overlap respectively
with unrelated debug output.
2023-02-03 07:32:50 +01:00
dac8feb98b
VST3: fix plugin GUI value notification (#9212)
OnParameterChange uses the plain (not normalized value)
2023-02-03 05:18:34 +01:00
d0a51f017a
VST3: fix manually setting integer ctrls from UI (#9212)
set_parameter_internal() normalizes the value (C++ reference),
when setting a parameter manually (inline control, generic UI)
only the shadow_data is updated (which is supposed to be
normalized).
2023-02-03 04:44:17 +01:00
830dfdda24
Fix assert() when resolving impossible pin match (#9218)
Adding a MIDI only plugin at a point where there is no
MIDI data, and/or additional audio signals results in an
'Impossible' match.

Those are usually resolved by trying to replicate the plugin,
and the fallback is to "Replicate 1 time".

While this is effectively equivalent with ExactMatch (use
1 instance), it is semantically different: Audio sources
will be ignored and if there is no MIDI signal, the MIDI
input remains unconnected.

It is the opposite to "Hide" (plugin has more inputs
of a given type, which can be fed by silence), since it has
fewer inputs of a given type signals are "dropped".

Strictly speaking we should special case this "Replicate 1 time"
case to "Drop" [sic]. which only assert(!reconfigurable_io()).
2023-02-03 04:37:27 +01:00
26270db8ae
Fix EBU-R128 loudness analysis for mono signals
This removes the special case which assumed unity gain
when reproducing mono files on a stereo system.

ITU-R BS.1770 however specifies a channel weight of 0dB for
left, right and centre, regardless of the total channel count.

Tech 3344 6.16 mentions a 3dB attenuation to maintain the
loudness level of a mono audio signal in multi-channel signals,
and Tech 3343-2016 further specifies that "Ideally, a downmix
operation should be loudness-agnostic".
2023-02-02 17:58:46 +01:00
8359311849 debug: allow to profile exposure (revert this later) 2023-02-01 19:41:11 +01:00
7ca7eb0264 NSGLView: upscale when window is on retina screen 2023-02-01 19:40:03 +01:00
b7ac434584 canvas: invalidate scrollgroup, request redraw after scrolling 2023-02-01 02:57:10 +01:00
df3b8efbb9 triggerbox: fix stop-all-cue marker under very specific conditions
If the stop takes effect on a process cycle boundary, do not just blindly pick
the next trigger; instead using the same logic as if the stop was not on the
boundary.
2023-01-31 18:39:57 -07:00
e76b26acf0 triggerbox: disambiguate otherwise identical DEBUG_TRACE messages 2023-01-31 18:39:57 -07:00
902b98588e canvas: profile render time / area 2023-02-01 01:25:27 +01:00
24d8e5de2c NSGLView: implement partial exposure 2023-02-01 01:23:24 +01:00
72995741bb
Adjust resampler quality when sample-rate mismatches
This also ensures that engine/session resampling is possible
when the config `port-resampler-quality` is 0.
2023-01-31 01:07:04 +01:00