13
0
Commit Graph

30749 Commits

Author SHA1 Message Date
704d486324
Revert "Add debug messages for Windows VST3 GUI"
This reverts commit 105c358494.
2020-09-23 17:55:33 +02:00
81695b10e4
Take processor-lock to update latency of inactive routes 2020-09-22 23:41:38 +02:00
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
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
105c358494
Add debug messages for Windows VST3 GUI 2020-09-22 22:22:06 +02:00
2288279e57
No-OP: prefer constants from API header 2020-09-22 22:17:09 +02:00
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
bebca37447
Cache the latency of the metronome's port 2020-09-22 21:42:52 +02:00
650b4a6900
Only query MIDI Clock port latency when it changes
Previously there were excessive calls, since MidiClockTicker::reset()
is called in **every** cycle when Mclk is disabled.
2020-09-22 21:15:31 +02:00
ecf4a62082
Fix off-by-one in declick fade allocation #8418
This case is only relevant for large sample-rates for
the fade-in curve. see also 6f755c3c02
2020-09-22 16:44:50 +02:00
John Emmas
f4be03ac8f Move MSVC's declaration of VST3_SUPPORT to the right place
(reverts commit #ae2a1c15fa)
2020-09-22 12:21:20 +01:00
John Emmas
8895d19cd7 Build 'ardour-vst3-scanner.exe' with MSVC 2020-09-22 12:15:09 +01:00
fe73d03809
VST3: explicitly release GUI resources 2020-09-21 21:19:15 +02:00
48037dc545
Prevent concurrent use of VST3X11Runloop
In theory the GUI is single threaded and registration of
events happens only when a plugin GUI is constructed or
destroyed (which happens in the GUI thread).

Except it seems that if a plugin uses reference counting,
un-registration can happen later.
2020-09-21 21:18:50 +02:00
8754090c47
VST3: cleanup component, release resources
This fixes a hang at exit (in FreeLibrary, dlclose) for some
VST3 plugins.
2020-09-20 23:06:27 +02:00
a2e366ce28
VST3: Release plugin factory before unloading plugin 2020-09-20 22:09:02 +02:00
f386d1334a
Use shared windows-console setup code 2020-09-20 20:03:05 +02:00
25bd4b8ec7
Setup stdio with -mwindows VST scanners 2020-09-20 20:03:01 +02:00
140e03bb7d
Make windows-console setup code re-usable 2020-09-20 19:57:08 +02:00
2b21a571b9
Update Lua scripts to use new APIs 2020-09-20 19:20:32 +02:00
89a0258c31
VST3: MIDI-learn, live input events 2020-09-20 19:19:25 +02:00
56b94b3fc4
Mark user-created events as live MIDI 2020-09-20 19:19:16 +02:00
f9cdf533ba
Event API consistency; reorder arguments (time, type, payload) 2020-09-20 19:18:09 +02:00
c5d7ed3015
Update GUI, use new write_immediate_event() API 2020-09-20 19:16:52 +02:00
2f68656679
Update API to send immediate events
This is to allow passing the EventType to the Buffer, using a
consistent {[Time], Type, size, data} API, that is equivalent
for all classes.

This is particularly useful for Lua scripts and plugin UIs
than can call `write_immediate_event()` while being ignorant
where the data is routed to (MIDI tracks, plugins, processors).
2020-09-20 19:16:43 +02:00
7c37a18b75
Update MIDI buffer implementation to retain EventType 2020-09-20 17:21:21 +02:00
472fe2b556
Prepare for distinct live-midi event type
The motivation for this is to determine if a given event
originates from a user-controlled live input controller or
from playback from disk or a MIDI file.

This distinction is required for VST3 MIDI learn.
2020-09-20 17:16:53 +02:00
472ce90fab
JACK backend allows to calibrate latency
However, if jackd is running, we should test if jackd is using
a full-duplex device to establish if latency calibration is
possible -- fix 92f54b3e98.
2020-09-20 17:16:01 +02:00
a4b1277f85
Headless windows VST3 scanner
This re-adds a line that was accidentally removed in fab92d313f
2020-09-18 22:37:13 +02:00
a91e9c2d52
Fix windows plugin install location 2020-09-18 21:44:34 +02:00
cce424b695
Mark some menu items insensitive w/o session
When closing a session without loading or creating a new one,
Ardour's main window and menu are accessible.

 Menu > Session > Properties : crash w/o a session
 Menu > Window > Transport Masters : any interaction causes a crash.
2020-09-18 21:03:56 +02:00
57c660836f
VST3: Re-activate plugin when latency changes
This is required. From the "RestartFlags" documentation:

> kLatencyChanged:
>   Latency has changed The plug informs the host that its latency
>   has changed, getLatencySamples should return the new latency after
>   setActive (true) was called The host has to deactivate and reactivate
>   the plug-in, then afterwards the host could ask for the current
>   latency (getLatencySamples) see IAudioProcessor::getLatencySamples
2020-09-18 19:39:50 +02:00
3ed9a712b9
Bundle VST3 scanner with binary packages 2020-09-18 18:54:45 +02:00
216935f16e
Remove ALSA debug message in optimized builds 2020-09-18 15:40:44 +02:00
d90d5c3701
Make gcc-10 happy (missing <string> include) 2020-09-18 15:38:22 +02:00
67b1481c12
VST3: work-around endless/recursive resize requests
Some plugins correct their own size when resized which can lead
to endlessly growing GUIs. In particular this issue exists
if Ardour's plugin-toolbar forces a plugin to grow in size to fill
the allocated space. While the plugin aims for fixed aspect-ratio.

This will need a proper solution involving VST's checkSizeConstraint,
however GTK+2 does not have an appropriate API...
2020-09-18 02:11:25 +02:00
5dc3f2a320
Add toolbar widgets for monitor mute and dim
Another one from Andy's wish-list
http://mixbus.harrisonconsoles.com/forum/thread-8935-page-2.html
2020-09-17 22:57:54 +02:00
d5496de98a
VST3: use kOffline for freewheeling 2020-09-17 21:06:46 +02:00
6612cdf44a
Name new MIDI tracks after instrument plugin 2020-09-17 21:06:46 +02:00
824e54f399
Mark session as dirty when meter-type changes 2020-09-17 21:06:46 +02:00
John Emmas
ae2a1c15fa Add VST3 support for building with MSVC 2020-09-17 18:45:12 +01:00
7963214710
Use C-compatible isprint() - fixes MSVC builds 2020-09-17 17:29:50 +02:00
a8c9bdbbd0
Fix w32 builds (VST stdcall API) 2020-09-17 12:55:18 +02:00
fab92d313f
Fix linking vst3 scanner app (Linux-ARM, OSX/PPC, OSX/i386) 2020-09-17 12:20:31 +02:00
1759ba96b6
VST3: Plugin GUI support 2020-09-17 00:10:21 +02:00
6b4dc3268f
VST3: Implement plugin-provider 2020-09-17 00:10:17 +02:00
05c039629c
VST3: Update Preferences/Plugins/VST 2020-09-16 22:49:20 +02:00
15e564c54a
VST3: scanner application 2020-09-16 22:49:20 +02:00
2a9795113b
VST3: Plugin discovery 2020-09-16 22:49:20 +02:00
84a86fa21a
VST3: Implement host classes 2020-09-16 22:49:20 +02:00