Commit graph

420 commits

Author SHA1 Message Date
Robin Gareus
7ce43739e8
Tweak sched priorities use given and 4 levels below. 2021-06-10 14:38:45 +02:00
Robin Gareus
ecb992de64
Remove custom generic plugin UIs (a-eq) 2/2 2021-06-04 01:43:29 +02:00
Robin Gareus
b50a6fbe17
Fix LV2 boolean Atom values size #8558
As per lv2/atom.lv2/atom.h
LV2_Atom_Bool is-a LV2_Atom_Int, which uses int32_t
2021-02-02 22:41:57 +01:00
Robin Gareus
f3e6ca7c1a
Ignore inline-display unless plugin-meta data explicitly mentions it 2020-12-30 18:50:02 +01:00
David Robillard
91f15300b8 Remove support for deprecated LV2 event extension 2020-12-01 11:40:35 +01:00
David Robillard
80a22953b0 Remove support for the long-deprecated LV2 uri-map extension
This has been supplanted by the urid extension.
2020-12-01 11:40:35 +01:00
Robin Gareus
3ac7e11eea
Support lv2:port-props:displayPriority 2020-11-20 06:03:49 +01:00
Robin Gareus
c01b7b7842
Detect LV2 categories by URI 2020-09-15 19:32:30 +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
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
Robin Gareus
baa8cd1b52
Fix LV2 buffersize option interface
https://lv2plug.in/doc/html/group__options.html specifies
a NULL terminated array of options (not a single option).

Since the call is the "instantiation" LV2 threading class, and
a single fixed value is passed with a direct call into the
plugin, using a stack-allocated LV2_Options_Option is sufficient.
2020-07-16 15:57:42 +02:00
Robin Gareus
a3e30f72f0
Fix copy/paste mistake 2020-06-30 17:01:25 +02:00
Robin Gareus
1ecaffa642
Expose some more theme options to LV2 plugin UIs 2020-06-30 16:45:14 +02:00
Robin Gareus
6d83e47860
Fix Plugin-preset saving when preset exists
Previously the GUI explicitly called remove_preset() before
saving a plugin-preset. This functionality is now moved
into the backend.

This fixes a case when a user tries to save/replace factory presets
and works around https://github.com/lv2/lilv/issues/37
2020-06-24 23:59:09 +02:00
Robin Gareus
c313b006cf
LV2: keep track of supported properties
Register all plugin props that we may be interested in
to _property_values, and later intercept all messages for
registered properties (not just atom_Path).
2020-06-23 20:48:50 +02:00
Robin Gareus
452607711b
Invalidate LV2 state on any property change
This amends 417c780d4, LV2 property changes to intercept messages
from custom UIs
2020-06-22 18:52:44 +02:00
Robin Gareus
417c780d44
Mark session as modified when LV2 properties are changed 2020-06-21 17:37:00 +02:00
Robin Gareus
1674261f89
On plugin internal-state change, mark preset as modified 2020-06-21 17:36:01 +02:00
Robin Gareus
76c6aab7d1
Fix a memory leak (unsupported LV2 plugin) 2020-05-16 01:37:22 +02:00
Paul Davis
d4dd756bf6 always use plugin's ::midnam_model() method to provide the name of a custom, plugin provided MIDNAM document 2020-02-06 14:43:58 -07:00
Robin Gareus
6ce1c326a9
Display LV2 plugin-name with errors/warnings 2020-01-21 22:32:59 +01:00
Robin Gareus
3cdde4ffc1
LV2: add state:mapPath as supported feature and sort URIs 2019-12-15 14:06:00 +01:00
Robin Gareus
93180ceea9
Add Inline Control Port Property
This allows to indicate that a control should by default be displayed
inline in the mixer-strip.

Previously that was hard-coded for and enabled for send-level
controls only.
2019-12-14 15:50:56 +01:00
Robin Gareus
c2d44c0f05
Add support for LV2/KX transient-ID option 2019-11-22 20:01:32 +01:00
Robin Gareus
32cfed6253
Relax LV2 time-info re-transmission condition
Allow beat (quarter-note count) to drift by 1/100 beat before re-sync.
This prevents excessive re-transmissions
2019-11-14 21:37:14 +01:00
Robin Gareus
6481437f0a
LV2 extension for host's time-scale vari-speed
Ardour 6 internally always runs at speed 1.0 (or -1.0, or stopped 0.0).
There is no vari-speed that scale "BPM" or "n_sample" time progression
per cycle.

Instead Ardour 6 vari-speed mechanism transparently re-samples I/O.
So process-time is scaled only relative to wall-clock time.

From a plugin's POV this is similar to "freewheeling": The plugin
processes data as if the host plays at speed 1.0. While the host
plays this data at a different rate.

Some plugins may like to be informed about the host's actual
playback rate.

Currently this is mainly for the benefit of github.com/x42/repitch.lv2.git
2019-11-14 21:15:30 +01:00
Robin Gareus
3e99856f76
Initialize uninitialized variables
This also ensures that musical-time information is initially
transmitted to a plugin.
2019-11-14 20:03:22 +01:00
Robin Gareus
240e3e8dc0
Fix uninitialized value
ARDOUR::LV2Plugin::init -> lilv_state_restore () -> set_port_value ()
compares new against current value
2019-11-08 21:01:28 +01:00
Rui Nuno Capela
bd46b2df8e
Fixup prev commit (LV2 X11 UI) -- #7837 2019-10-28 17:31:03 +01:00
Robin Gareus
e4601e54e9
Improve 1477bca76, ensure suil supports x11-in-gtk2 2019-10-28 17:24:54 +01:00
Robin Gareus
1477bca76e
Skip X11 LV2UI check on Windows and MacOS 2019-10-28 16:14:30 +01:00
Robin Gareus
86337810fe
NO-OP: whitespace and comments 2019-10-28 16:14:24 +01:00
Rui Nuno Capela
760a7fda81
Prefer X11 Plugin UIs
Let LV2 Plugin UI support (via SUIL) prefer and select a X11 UI whenever
multiple UI type options are provided by LV2 plugins (eg. Vee-One's do
present several but their native Qt5UI should never be raised by Ardour,
on any chance:)).

  Signed-off-by: Rui Nuno Capela <rncbc@rncbc.or
2019-10-28 16:00:48 +01:00
Paul Davis
f470d3e856 remove all use of NO_PLUGIN_STATE #ifdef
We determined several years that we should never ever do this,
and changed the basis for the free/demo copy because of that.
2019-10-02 18:04:40 -06:00
Robin Gareus
e698a1b2fa
Fix LV2 state:loadDefaultState
lilv_state_restore() needs to be called unconditionally (regardless
if a plugin actually has a state-interface) to set port and properties.
It has to be called after ports are enumerated and supported
properties are loaded.
2019-09-18 18:42:34 +02:00
Robin Gareus
2dbeaaffa6
Add sample-rate as float option parameter for LV2 plugins and UIs 2019-08-26 23:30:21 +02:00
Robin Gareus
5e46108e95
Fix LV2 option size 2019-08-26 23:12:46 +02:00
Robin Gareus
80e30ea0d1
LV2 options for UI theme
Inform plugins about host theme (fg, bg colors) and UI scale-factor.
The latter follows an implementation already present in Carla and DPF.
These extension use proposed official URLs.
2019-08-26 18:57:47 +02:00
Robin Gareus
9836bd786f
Some hints for clang static analysis 2019-08-23 05:15:17 +02:00
Ben Loftis
031847f88e
LV2 extension to override strict-i/o per plugin
This allows mono to stereo plugins to override the default
routing and forces both outputs to be connected.
2019-08-19 23:28:04 +02:00
Robin Gareus
a22f918d9d
Update libardour GPL boilerplate and (C) from git log 2019-08-03 15:53:16 +02:00
Robin Gareus
48b960fdef
Notify custom UIs when designated LV2 BPM port changes 2019-05-08 22:04:43 +02:00
Robin Gareus
f08e2b7eb1
Hide designated [lv2] BPM port from GUI 2019-05-08 21:59:22 +02:00
Robin Gareus
8329f55e5f
Extend list of supported LV2 features
* boundedBlockLength is given since ardour sets min/max blocksize
* add non-standard features (inline display, midnam,
  MIDI bank/patch notify)
2019-05-03 20:02:26 +02:00
David Robillard
d465a2b012 Cleanup: Simplify conditionals 2019-04-10 10:24:33 +02:00
David Robillard
30d59c8f6e Remove support for building against LV2 older than 1.2.0
LV2 1.2.0 was released in 2012, over 6 years ago now.
2019-04-10 10:24:33 +02:00
Robin Gareus
7fc7c18a07
LV2: check required feature and options
When discovering LV2 plugins, verify if a plugin's required features
and required options can be be satisfied.

This replaces a previous blacklist with a whitelist of supported
features/options.
2019-04-10 00:22:20 +02:00
Robin Gareus
2f727a6a32
Undo yet more frame/sample replacements 2019-04-08 18:32:09 +02:00
Robin Gareus
aef75f87b7
NO-OP: whitespace, comments 2019-04-08 18:32:03 +02:00
Robin Gareus
46f0b75e12
Undo more incorrect sample/frame replacements 2019-04-08 04:10:04 +02:00