Commit graph

16436 commits

Author SHA1 Message Date
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
Robin Gareus
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
Robin Gareus
a9c2350e87
Fix yet another C++11ism 2020-08-31 07:52:48 +02:00
Robin Gareus
39110463f3
Amend cdd48926d1 use ScopedConnectionList directly 2020-08-31 07:41:11 +02:00
Robin Gareus
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
Robin Gareus
883d4ebd31
Fix previous commit (MIDI alignment) 2020-08-31 01:38:04 +02:00
Robin Gareus
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
Robin Gareus
cdd48926d1
Remove more libwebsocket C++11isms
* amend previous commit, fix runtime_error implementation
* Do not copy-construct classes that have a PBD::scoped connection list.
  Replace std::map::emplace[C+11], an store shared pointers the std::map.
* Update ArdourMixerStrip is-a ScopedConnectionList (not has-a)
2020-08-30 22:57:43 +02:00
Robin Gareus
8eb4dcb675
Fix websocket C++11ism 2020-08-30 21:15:33 +02:00
Robin Gareus
af79240c81
Namespace libwebsocket surface classes
Using the global names-pace for classes named "Json", "TypedValue",
"ArdourTransport", "ArdourMixerPlugin" etc is not acceptable.
2020-08-30 21:15:07 +02:00
Luciano Iam
665e0686e5
WS: noop use a namespace for JSON utilities
Instead of a class with static methods

Also correct some whitespace to prevent triggering of OCD cycles
2020-08-30 19:29:28 +02:00
Luciano Iam
aa38491b7d
WS: move VCA detection to mixer strip interface
Expose the wrapped Stripable the least as possible
2020-08-30 19:29:28 +02:00
Luciano Iam
e510c0cb75
WS: consistent naming of strip/plugin/param identifiers
Rename all {object}_n variables and arguments to {object}_id

Parts of code were using the former convention, now use the latter everywhere
Another step towards supporting visual position agnostic identifiers in the future
2020-08-30 19:29:28 +02:00
Luciano Iam
c32a5917f3
WS: handle strips and plugins removal 2020-08-30 19:29:27 +02:00
Luciano Iam
a8f917e7e2
WS: prepare for handling object disconnections
Use maps instead of vectors for holding strips and plugins
This allows to deal with "holes" after objects are removed

Also paves the way for a future improved way of identifying
individual strips and plugins
2020-08-30 19:29:27 +02:00
Luciano Iam
7521d8ab6f
WS: add some meaningful error messages 2020-08-30 19:29:27 +02:00
Luciano Iam
3509fe1589
WS: use an object-oriented internal API for the mixer
- This allows to better handle strips & plugins connection lifecycles
- Coherent with the JS client design
2020-08-30 19:29:27 +02:00