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
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).
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.
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.
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.
The state has to be pushed to the manager during initialization,
otherwise channel_config remains unset.
This fixes an issue with files using the same filename
(missing channel name) during stem export.
This is consistent, since after handling the
`SaveSessionRequested` signal the session remains dirty
(which may be a bug). However since the signal is handled
by the GUI, rec-stop only saves the session if there is a GUI.
It is however somewhat dangerous. Record, quit + no-save (or
changing snapshots w/o saving first) will loose any references
to the recorded data (even though it is still on disk).
Note that "remove last capture" still saves the session
(to prevent references to non-existent sources).
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).
This was removed in
bf0a5256472316df357b
"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.
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).
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()).
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".
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.