Commit Graph

16446 Commits

Author SHA1 Message Date
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
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
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
d5496de98a
VST3: use kOffline for freewheeling 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
6b4dc3268f
VST3: Implement plugin-provider 2020-09-17 00:10:17 +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
9bd8c43693
VST3: Load and instantiate 2020-09-16 22:49:20 +02:00
0ca0b4f335
VST3 skeleton 2020-09-16 22:49:19 +02:00
9c5f13f3fa
Import VST3 interface 2020-09-16 22:49:19 +02:00
c01b7b7842
Detect LV2 categories by URI 2020-09-15 19:32:30 +02:00
8dbc16a929
Remove unused LV2 configuration checks 3/3
LV2 has been mandatory since 6.0 (04ccd328dc)
2020-09-15 17:35:09 +02:00
c5014d9d9e
Remove unused LV2 ifdef 1/3
LV2 has been mandatory since 6.0 (04ccd328dc)
2020-09-15 17:01:32 +02:00
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
dcea35191c
Consolidate code: use API to print plugin-type 1/2 2020-09-15 16:03:33 +02:00
d72423fdc8
Add API to format plugin-type 2020-09-15 16:03:19 +02:00
68b23b9f82
Skip presets lookup for empty prest URI 2020-09-14 23:37:22 +02:00
e9c90bc1b2
Update Plugin API, extend IOPortDescription c'tor 2020-09-14 23:37:22 +02:00
1a50b6b8ea
Update Plugin API to allow timestamped parameter changes
This is in preparation for VST3 automation.
2020-09-14 23:37:21 +02:00
04e5ea0f86
Expose PluginInfo index (for VST3 shells) 2020-09-14 23:37:21 +02:00
b8f883e608 prevent Session range markers from being hidden 2020-09-14 15:07:42 -06:00
2ef673b15e
Add convenient Lua binding to query automation 2020-09-13 23:58:23 +02:00
1f356e2883 CoreAudioSource: print more information in the case of errors 2020-09-09 17:23:02 -06:00
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
802ddf344a
Remove unused mutex (amend a80064981e) 2020-09-06 05:43:03 +02:00
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
a80064981e
NO-OP: Consolidate PortConnect code into shared parent class 2020-09-05 23:05:57 +02:00
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
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
7a9d4b1f64
Tweak default declick fade length #8341 2020-09-04 01:50:58 +02:00
63a117bf93
And another boost/C++11 fix
This fixes Undefined symbols:
"ArdourSurface::hash_value(ArdourSurface::NodeState const&)", referenced from:
  boost::hash<ArdourSurface::NodeState>::operator()(ArdourSurface::NodeState const&) constin client.cc.1.o
  boost::hash<ArdourSurface::NodeState>::operator()(ArdourSurface::NodeState const&) constin server.cc.1.o
2020-08-31 08:28:50 +02:00
a9c2350e87
Fix yet another C++11ism 2020-08-31 07:52:48 +02:00
39110463f3
Amend cdd48926d1 use ScopedConnectionList directly 2020-08-31 07:41:11 +02:00
b9cfb31205
Fix control-list editing (#8384)
This fixes segfaults as well as corrupt listes when copy/pasting
due to invalid iterators.

::mark_dirty() must be called with WriterLock, and
::rt_safe_earliest_event_linear_unlocked() must not be called
while _events is being modified. The Sequence iterator
(only user of that function) does not ensure this. Only the
sequence read-lock is taken.
2020-08-31 07:39:45 +02:00
883d4ebd31
Fix previous commit (MIDI alignment) 2020-08-31 01:38:04 +02:00
b326b8e462
Fix MIDI Capture alignment
When recording audio, simply not writing to the ringbuffer
offsets the recording accordingly.
When recording MIDI, absolute timestamps are used, so the recording
has to be offset by the accumulated difference.

Previously this went unnoticed because tests using the Dummy
backend the accumulated offset never exceeded 1 cycle.
2020-08-31 01:19:41 +02:00