Commit graph

16452 commits

Author SHA1 Message Date
Robin Gareus
a2e366ce28
VST3: Release plugin factory before unloading plugin 2020-09-20 22:09:02 +02:00
Robin Gareus
25bd4b8ec7
Setup stdio with -mwindows VST scanners 2020-09-20 20:03:01 +02:00
Robin Gareus
140e03bb7d
Make windows-console setup code re-usable 2020-09-20 19:57:08 +02:00
Robin Gareus
89a0258c31
VST3: MIDI-learn, live input events 2020-09-20 19:19:25 +02:00
Robin Gareus
56b94b3fc4
Mark user-created events as live MIDI 2020-09-20 19:19:16 +02:00
Robin Gareus
f9cdf533ba
Event API consistency; reorder arguments (time, type, payload) 2020-09-20 19:18:09 +02:00
Robin Gareus
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
Robin Gareus
7c37a18b75
Update MIDI buffer implementation to retain EventType 2020-09-20 17:21:21 +02:00
Robin Gareus
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
Robin Gareus
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
Robin Gareus
a4b1277f85
Headless windows VST3 scanner
This re-adds a line that was accidentally removed in fab92d313f
2020-09-18 22:37:13 +02:00
Robin Gareus
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
Robin Gareus
216935f16e
Remove ALSA debug message in optimized builds 2020-09-18 15:40:44 +02:00
Robin Gareus
d90d5c3701
Make gcc-10 happy (missing <string> include) 2020-09-18 15:38:22 +02:00
Robin Gareus
d5496de98a
VST3: use kOffline for freewheeling 2020-09-17 21:06:46 +02:00
Robin Gareus
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
Robin Gareus
7963214710
Use C-compatible isprint() - fixes MSVC builds 2020-09-17 17:29:50 +02:00
Robin Gareus
a8c9bdbbd0
Fix w32 builds (VST stdcall API) 2020-09-17 12:55:18 +02:00
Robin Gareus
fab92d313f
Fix linking vst3 scanner app (Linux-ARM, OSX/PPC, OSX/i386) 2020-09-17 12:20:31 +02:00
Robin Gareus
6b4dc3268f
VST3: Implement plugin-provider 2020-09-17 00:10:17 +02:00
Robin Gareus
15e564c54a
VST3: scanner application 2020-09-16 22:49:20 +02:00
Robin Gareus
2a9795113b
VST3: Plugin discovery 2020-09-16 22:49:20 +02:00
Robin Gareus
84a86fa21a
VST3: Implement host classes 2020-09-16 22:49:20 +02:00
Robin Gareus
9bd8c43693
VST3: Load and instantiate 2020-09-16 22:49:20 +02:00
Robin Gareus
0ca0b4f335
VST3 skeleton 2020-09-16 22:49:19 +02:00
Robin Gareus
9c5f13f3fa
Import VST3 interface 2020-09-16 22:49:19 +02:00
Robin Gareus
c01b7b7842
Detect LV2 categories by URI 2020-09-15 19:32:30 +02:00
Robin Gareus
8dbc16a929
Remove unused LV2 configuration checks 3/3
LV2 has been mandatory since 6.0 (04ccd328dc)
2020-09-15 17:35:09 +02:00
Robin Gareus
c5014d9d9e
Remove unused LV2 ifdef 1/3
LV2 has been mandatory since 6.0 (04ccd328dc)
2020-09-15 17:01:32 +02:00
Robin Gareus
0c10ec3c75
Case-insensitive compare name to detect plugin duplicates
In some cases LV2/VST and VST2/VST3 use slightly different naming
conventions e.g. "MDA ..fx"  vs "mda ..fx".
2020-09-15 16:40:30 +02:00
Robin Gareus
dcea35191c
Consolidate code: use API to print plugin-type 1/2 2020-09-15 16:03:33 +02:00
Robin Gareus
d72423fdc8
Add API to format plugin-type 2020-09-15 16:03:19 +02:00
Robin Gareus
68b23b9f82
Skip presets lookup for empty prest URI 2020-09-14 23:37:22 +02:00
Robin Gareus
e9c90bc1b2
Update Plugin API, extend IOPortDescription c'tor 2020-09-14 23:37:22 +02:00
Robin Gareus
1a50b6b8ea
Update Plugin API to allow timestamped parameter changes
This is in preparation for VST3 automation.
2020-09-14 23:37:21 +02:00
Robin Gareus
04e5ea0f86
Expose PluginInfo index (for VST3 shells) 2020-09-14 23:37:21 +02:00
Paul Davis
b8f883e608 prevent Session range markers from being hidden 2020-09-14 15:07:42 -06:00
Robin Gareus
2ef673b15e
Add convenient Lua binding to query automation 2020-09-13 23:58:23 +02:00
Paul Davis
1f356e2883 CoreAudioSource: print more information in the case of errors 2020-09-09 17:23:02 -06:00
Robin Gareus
1b55648131
Do not report timestamps smaller than zero to plugins
This can happen during pre-roll when buffers are filled
to start audible playback at zero.

While the position argument is signed for all plugin-standards,
it seems that some do not support negative timestamps before
00:00:00:00. (e.g. https://github.com/falkTX/Carla/issues/1236)

Furthermore TempoMap::bbt_at_sample() returns 0 for all negative
timestamps, but it was possible tthat tempo-map transmission,
as well as beat-position returned negative values.
2020-09-06 16:00:20 +02:00
Edgar Aichinger
dc05230039
Update German translation
Use English verbs as German nouns for edit modes:
https://discourse.ardour.org/t/export-wishes-and-sticking-tracks-together/104476/22
2020-09-06 14:45:07 +02:00
Robin Gareus
802ddf344a
Remove unused mutex (amend a80064981e) 2020-09-06 05:43:03 +02:00
Robin Gareus
b40826792a
Fix port-connection callbacks on engine restart
When the engine is restarted, ports are re-established,
and previously queued port-connections need to be cleared.

This caused a bug:
 * when the engine is stopped all ports are disconnected.
   _port_connection_queue contains all disconnections
 * engine is stopped so _port_connection_queue is not processed
 * engine-restart re-etablishes ports and appends those connections
   to _port_connection_queue
 * process-callback processes the list in **reverse** order
```
   while (!_port_connection_queue.empty ()) {
      _port_connection_queue.pop_back ();
   }
```
 * ARDOUR::PortManager::connect_callback() is first called
   with connected() and the disconnected()
 * All ports are assumed to not be connected
   Port::_externally_connected == 0 for all ports

Result:

 * vari-speed playback resampling does not work (only external
   I/O is reampled), split cycles processing (looping) fails
   since AudioPort::get_audio_buffer() does not apply the
   _global_port_buffer_offset
2020-09-05 23:06:00 +02:00
Robin Gareus
a80064981e
NO-OP: Consolidate PortConnect code into shared parent class 2020-09-05 23:05:57 +02:00
Robin Gareus
17ab174277
Slightly increase vari-speed resampler quality
This also increases i/o delay to 16 samples (was 11)
2020-09-05 23:05:53 +02:00
Robin Gareus
1a3da7e132
Keep processing while locating #8392
Previously when locating process_can_proceed() was set to true,
and routes were not processed while transport states are cleared.
As a result live input was also not processed.

This is no longer needed because the DiskReader handles seeking
directly.
2020-09-05 05:32:22 +02:00
Vincenzo Reale
969a5bf2c1
Italian translation update 2020-09-04 02:19:48 +02:00
Luciano Iam
9c08c058a3
WS: crash bugfix related to missing strip panner
Surface made Ardour crash when a client connected
and some session track was not a VCA nor had a panner,
like MIDI strips.
2020-09-04 01:59:53 +02:00
Robin Gareus
7a9d4b1f64
Tweak default declick fade length #8341 2020-09-04 01:50:58 +02:00