Commit graph

19975 commits

Author SHA1 Message Date
Robin Gareus
ffafa5cfc7 NSGLView: clean up, allow optional scaling 2023-02-04 21:36:01 +01:00
Robin Gareus
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
Robin Gareus
17f2862f96
Emit signal when resampler-quality changes 2023-02-04 03:20:20 +01:00
Robin Gareus
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
Robin Gareus
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
Robin Gareus
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
Robin Gareus
dac8feb98b
VST3: fix plugin GUI value notification (#9212)
OnParameterChange uses the plain (not normalized value)
2023-02-03 05:18:34 +01:00
Robin Gareus
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
Robin Gareus
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
Robin Gareus
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
Robin Gareus
8359311849 debug: allow to profile exposure (revert this later) 2023-02-01 19:41:11 +01:00
Robin Gareus
7ca7eb0264 NSGLView: upscale when window is on retina screen 2023-02-01 19:40:03 +01:00
Robin Gareus
b7ac434584 canvas: invalidate scrollgroup, request redraw after scrolling 2023-02-01 02:57:10 +01:00
Paul Davis
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
Paul Davis
e76b26acf0 triggerbox: disambiguate otherwise identical DEBUG_TRACE messages 2023-01-31 18:39:57 -07:00
Robin Gareus
902b98588e canvas: profile render time / area 2023-02-01 01:25:27 +01:00
Robin Gareus
24d8e5de2c NSGLView: implement partial exposure 2023-02-01 01:23:24 +01:00
Robin Gareus
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
Robin Gareus
d89162745f
Consolidate base and nominal SR
Now that mismatched sample-rates are resampled, there is
no distinction between base and nominal sample-rate.
2023-01-31 00:54:28 +01:00
Robin Gareus
53cfbe9c7f
Add API to update port resampler
Previously resampler ratio could only set when creating
an audio port. This is in preparation for setting resampler
quality when the session rate mismatches.

The session's rate is only known after basic session-setup
is performed. At this time Click-IO already exists.
2023-01-30 23:17:29 +01:00
John Emmas
2ff05d9e9d class 'PBD::Configuration' now needs to be exportable 2023-01-28 17:44:11 +00:00
Robin Gareus
349d25a2d2 Update latency compensation when sends are added or removed
Previously only adding an aux-send triggered a graph-reorder but copying
or deleting sends did nothing.

Adding/removing an aux-send may not even change the graph, but
both upstream/downstream latency can change and delaylines need to be
configured (which is done by calling update_latency_compensation with
force_whole_graph = true).

This fixes an issue with incorrect initial latency compensation after
copying a send (any later change to connections will correctly
recalculate it).
2023-01-27 23:13:52 +01:00
Paul Davis
a4fc52ab55 fixup preferences metadata handling (libs edition) 2023-01-27 15:13:27 -07:00
Paul Davis
68f4c7ce8e add upcase() method; remove upcase version of internationalize() 2023-01-27 15:13:27 -07:00
Paul Davis
7a3b42948d change base class for UIConfigurationBase, because it IS-A Configuration 2023-01-27 15:13:27 -07:00
Paul Davis
3c1c6e7b68 continued work on use of Metadata in various Configuration objects (libs edition) 2023-01-27 15:13:27 -07:00
Paul Davis
f7387a5d77 infrastructure for PBD::Configuration to deliver metadata 2023-01-27 15:13:27 -07:00
Paul Davis
8071a085c4 add concept of a map-of-own-config-variables to RCConfiguration 2023-01-27 15:13:27 -07:00
Paul Davis
f377822891 (temporarily) add nodraw bitflag to avoid gradient fills 2023-01-24 10:01:04 -07:00
Robin Gareus
38c613cd9a Towards arranging sections
This allows to move or copy whole sections of the timline (everything
you hear) to a differnt position on the timeline.

NB. Markers and tempo-map are not yet moved, and interpolated MIDI
events are lost.
2023-01-23 04:07:46 +01:00
Robin Gareus
c24c210cce Use Controllist's time-domain for guard-point delta
This fixes copy/paste of pan automation (amongst other things).
2023-01-23 04:02:08 +01:00
Robin Gareus
efe943c98e Reimplement Route::shift, move all automation 2023-01-23 04:02:08 +01:00
Paul Davis
46a8073ff2 extend ArdourWidgets::Frame to allow no-draw of frame
Associated: disambiguate Frame use where necessary.
2023-01-22 17:41:43 -07:00
Paul Davis
d982507085 move match_search_strings() function from plugin utils to PBD 2023-01-22 17:41:43 -07:00
Robin Gareus
79033d8ee5 Resample when engine and session sample-rates mismatch 2023-01-22 20:51:44 +01:00
Robin Gareus
5130a43d87 Remove direct use of audio-engine rate (1/2)
This is in preparation for sample-rate independence.
2023-01-22 20:06:14 +01:00
Robin Gareus
859d6ebe4a debug: log canvas exposure area 2023-01-21 17:36:22 +01:00
Paul Davis
4cd7de7a6f debugging: allow selection no-draw for canvas fill, outline, text, lineset and waveview 2023-01-20 18:13:12 -07:00
Robin Gareus
a1dee6cba2 Fix printing from Lua DSP context (#9202) 2023-01-21 01:42:33 +01:00
Robin Gareus
a3095162de Prevent auditioner from writing files to disk 2023-01-21 00:37:41 +01:00
Robin Gareus
e6230bfd98 Add enum to configure Apple NSGLView mode 2023-01-20 21:46:11 +01:00
Robin Gareus
2226da1385
VST3: retain I/O from older versions (bump session format)
A VST3 plugin can have additional busses which were not
available in older versions of Ardour. For compatibility
reasons those should remain unconnected. This is achieved
by using a custom I/O config  (same way a user would configure
this).
2023-01-17 22:02:10 +01:00
Robin Gareus
e5e9b477d0
Force rescan of VST3 plugins 2023-01-17 22:02:10 +01:00
Robin Gareus
f221a5e47f
VST3: offer output bus configurations 2023-01-17 22:02:10 +01:00
Robin Gareus
1cbd2d3468
VST3: support VST I/O busses
This unconditionally enable all busses with connected pins.
It does not provide re/configurable I/O (like Audio Unit), nor
implement dynamic Vst::kIoChanged callbacks. But regardless
this allows for plugins with multiple I/O busses (e.g. drum synths).
2023-01-17 22:02:10 +01:00
Robin Gareus
617ec6f54f
Include bus number in IOPortDescription 2023-01-17 22:02:10 +01:00
Robin Gareus
e87b989501
Inform plugins about connected input pins
When not using inplace processing (because I/O pins connections
are not an identity matrix), dedicated inplace-buffers are used.
Those buffers contain silence on unused ports, and hence always
valid to use. However it is still useful for plugins to know
if a plugin-port is actually used. VST3 can disable busses
for unconnected pins.
2023-01-17 22:02:10 +01:00
Robin Gareus
f6eac0f03a
Clarify that plugin replication is exclusive to re-configurable I/O 2023-01-17 22:02:07 +01:00
John Emmas
7433ca7e8b Correct a couple of typos when calling 'g_fopen()' 2023-01-17 10:32:36 +00:00
Robin Gareus
e66a757154
Fix simple export when there is no session range 2023-01-17 00:23:08 +01:00