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