Commit graph

16509 commits

Author SHA1 Message Date
Robin Gareus
bbbd6a36ec
VST3: set owner (prepare for context-info extensions) 2020-10-08 15:36:35 +02:00
Robin Gareus
6e6eb4c13e
Fix VST3 scan message (use bundle, not module name) 2020-10-08 15:35:50 +02:00
Robin Gareus
53d406e47d
VST3: Implement ISizeableStream and IStreamAttributes 2020-10-08 04:18:53 +02:00
Robin Gareus
6dc909696f
Allow src/dst MIDI buffer offsets
This is needed for ARDOUR::PluginInsert::automate_and_run
when processing is split on events.
2020-10-08 04:18:50 +02:00
Robin Gareus
9419d6f76f
VST3: implement optional IEditController interfaces 2020-10-08 03:05:09 +02:00
Robin Gareus
fa3051fb24
Better version of previous commit (fa3ae33a1f)
Since the file-modification timestamp of the module-path is used
if the cache is up-to-date, the file must exist.
For macOS/X bundles the mandatory file as per VST3 spec is Info.plist
2020-10-08 00:09:12 +02:00
Robin Gareus
fa3ae33a1f
VST3: relax bundle-name requirement on MacOS 2020-10-07 18:50:39 +02:00
Robin Gareus
c0b4e575d9
VST3: add support for hiding parameters 2020-10-07 17:49:55 +02:00
Robin Gareus
a28b1f548e
Add interface to inform plugins about replicated instances
This allows for asking plugins to synchronize internal state
that isn't visible to the host between plugin instances.
2020-10-06 23:34:25 +02:00
Robin Gareus
7ab664d5a4
Properly emit Plugin::DropReferences (1/2) 2020-10-05 19:57:14 +02:00
Robin Gareus
df55af6483
Fix include path prefix 2020-10-05 19:57:08 +02:00
John Emmas
6155558c76 Add a new #include path to our MSVC project (libardour) 2020-10-03 11:23:54 +01:00
Robin Gareus
ec2eedacc6
Fix C++89 builds, (vst3 interface needs nullptr) 2020-10-02 20:42:40 +02:00
Robin Gareus
c069709939
VST3: do not create persistent view to test has_editor()
This is a better variant of 05d2a0f4a4. Mainly becuase
some plugins crash when view->remove() is called for a
view that was never attached.
2020-10-02 16:45:49 +02:00
Robin Gareus
05d2a0f4a4
VST3: explicitly close and release view
A call to VST3Plugin::has_editor() can create the view of
a plugin. If the GUI is never displayed, the view would
not have been released, which can lead to crashes when
unloading the plugin.
2020-10-02 15:29:04 +02:00
Robin Gareus
3c4801bc96
VST3: common factory instantiating and release
This may address some issues with multiple references
(and incremental releases) of a plugin's factory.
2020-10-02 15:01:01 +02:00
Robin Gareus
6e89df412a
VST3: Fix another potential crash when removing a plugin 2020-10-01 23:39:59 +02:00
Robin Gareus
46e895aaad
Re-brand a-* plugins as Ardour Community Effects (ACE) 2020-09-30 21:59:20 +02:00
Robin Gareus
e4cb7a14e8
VST3: reduce debug output 2020-09-30 17:10:24 +02:00
Robin Gareus
00b5b61a43
VST3: implement some restart component flags
Re-order handling of the flags, do not return early,
and log warnings for unhandled flags.
2020-09-30 17:09:32 +02:00
Robin Gareus
814eca48af
VST3: disable MIDI busses before removing plugin
There is anecdotal evidence that some plugins require this
to exit cleanly.
2020-09-30 16:43:42 +02:00
Robin Gareus
8209b4b948
VST3: handle zero length plugin state 2020-09-30 04:41:59 +02:00
Robin Gareus
5e882afe10
Fix dereferencing empty vectors 2020-09-30 03:18:19 +02:00
Robin Gareus
71212e0c81
Remove debug/profile message in optimized builds 2020-09-29 16:46:29 +02:00
Robin Gareus
dcc14e9f6c
Never write #ifdef'ed code after 4am 2020-09-28 17:23:32 +02:00
Robin Gareus
d4b774e935
VST3: partially revert debcda25b4 implicit notifications to self 2020-09-28 04:35:10 +02:00
Robin Gareus
ff26258461
Fix sloppy typing 2020-09-28 03:41:48 +02:00
Robin Gareus
117184c3bd
Fix 32bit alignment in prev commits
this amends
  f52c5ca3ac
and
  5abe677fea
2020-09-28 03:20:14 +02:00
Robin Gareus
f52c5ca3ac
ARM RTMidiBuffer alignment 2020-09-28 03:12:38 +02:00
Robin Gareus
5abe677fea
Fix ARM MIDI buffer alignment
Both TimeType (8byte) and EventType (4byte) are written
in an un-aligned buffer (usually 3 byte MIDI messages).
This caused an Illegal Instruction for 32bit ARM builds
2020-09-28 01:23:02 +02:00
Robin Gareus
7e1ce160e9
ARM 32bit enum alignment (used in MIDIBuffer)
Evoral::EventType is written directly into a uint8_t buffer
by dereferncing a pointer-type:
*(reinterpret_cast<Evoral::EventType*>((uintptr_t)...)
2020-09-28 01:21:43 +02:00
Robin Gareus
37ec50cbf8
Remove C++11ism 2020-09-27 20:42:23 +02:00
Robin Gareus
5cbc5cc52a
VST3: setProcessing, setActive calls are optional 2020-09-27 20:30:44 +02:00
Robin Gareus
debcda25b4
VST3: use a dedicated connection list 2020-09-27 20:29:36 +02:00
Robin Gareus
1d6d4dc7b8
VST3: add set-dirty/state-changed support 2020-09-27 18:01:50 +02:00
Robin Gareus
55df465fb3
VST3: load custom state after restoring port value
This fixes restoring the sate of Spitfire LABS and possibly
other plugins
2020-09-26 21:42:57 +02:00
Robin Gareus
6a780f9cbc
VST3: fix pitchbend range 2020-09-26 21:40:09 +02:00
Robin Gareus
751db481a6
Use linear fades for loop-range cross-fades
The cross-over point of an exponential fade occurs further towards
start of the fade. This increases consistency of cross-fades moving
the cross-over point to the center of the fade.

Also looped material is likely correlated in which a linear fade
is more appropriate.
2020-09-25 17:09:25 +02:00
Robin Gareus
c08298e6d8
Fix loop cross-fade glitch #8420
This fixes an off-by one when assigning `fade_length` and
also solves an edge-case with different fade length for
fade-in/fade-out.
2020-09-25 17:09:25 +02:00
Robin Gareus
929e88aac1
VST3: Prepare to debug plugin bus/channel count 2020-09-24 18:46:03 +02:00
Robin Gareus
86be01c0f9
VST3: Ignore MIDI channel count for a bus
Assume that simply the presence of an Event bus indicates
that MIDI is supported.

This fixes Arturia synths, among others.
see also  https://forum.juce.com/t/vst3-event-bus-channel-count/25051
2020-09-24 18:38:44 +02:00
Robin Gareus
68ee66a4ee
VST3: dedicated blacklist files for each architecture 2020-09-24 17:08:32 +02:00
Robin Gareus
3e209bfd33
VST3: prevent plugin copy-construction 2020-09-24 15:58:06 +02:00
Robin Gareus
c51e3ac7c7
VST3: support non-integer indexed presets 2020-09-24 15:57:14 +02:00
Robin Gareus
a060c0a2ef
Revert "Expose PluginInfo index (for VST3 shells)"
This reverts commit 04e5ea0f86.
2020-09-23 23:40:33 +02:00
Robin Gareus
5a15a33839
VST3: use TUID/FUID, remove numeric index
This fixes an issue with plugin-shells, in particular those
with variable number of plugins (e.g. waves)
2020-09-23 23:39:10 +02:00
Robin Gareus
81695b10e4
Take processor-lock to update latency of inactive routes 2020-09-22 23:41:38 +02:00
Robin Gareus
40439b6cc4
Disconnect plugin-signals on plugin-deletion
Use the plugin-insert itself as ScopedConnectionList, don't
clutter up the Route's List
2020-09-22 23:41:11 +02:00
Robin Gareus
4601507165
Collect and queue processor latency updates
This is only relevant when automating a plugin-bypass, due to
ActiveChanged the following could happen from the realtime thread:

#2 ARDOUR::Session::update_latency_compensation (false, false)
#3 PBD::Signal0<void, PBD::OptionalLastValue<void> >
#4 ARDOUR::AutomationControl::actually_set_value
#5 ARDOUR::PluginInsert::PluginControl::actually_set_value
#6 ARDOUR::PluginInsert::connect_and_run
#7 ARDOUR::PluginInsert::automate_and_run

In this specific case the update_latency_compensation()
is called with process-lock held but the caller lied:
  called_from_backend=false
When a delayline update is needed, this can lead to a deadlock,
since the process-lock is acquired again.

Simply postponing the update is preferable since this also
postpones the change when actively recording.

PS. This may need special casing for freewheel export.
2020-09-22 23:35:48 +02:00
Robin Gareus
2b139ead8d
Cache route's output playback latency
IO::latency iterates over the port-set retrieving the
private_latency_range of each port. The value can cached
since it can only change when connections or latency changes.

see also 40eefeddd6
2020-09-22 21:55:49 +02:00