Commit Graph

444 Commits

Author SHA1 Message Date
David Robillard 98524c9bfb Remove unused URIDs
These also had the wrong case: case is relevant here, classes are uppercase,
other things (properties and instances) are lowercase.  However, they seem to
be entirely unused now, so simply remove them instead of fixing this.
2022-08-04 16:26:58 -04:00
Robin Gareus 191dbf7c34
Connect LV2 Atom ports for latency compute run
This fixes an issue with LV2 plugin that unconditionally
initialize LV2 Atom ports even if they are not connected.
eg. JUCE7 produces LV2s at the time of writing.
2022-07-24 17:38:53 +02:00
Robin Gareus 79f8606b2d
LV2: announce bufz:boundedBlockLength feature (#8942) 2022-07-18 15:42:44 +02:00
Robin Gareus a0810ed608
LV2: pass patch-set messages to replicated plugin instances
This also fixes impulse analysis plugin display
2022-05-22 00:16:22 +02:00
luz paz 1e640563d6
Fix source comment typos in `libs/ardour`
Found via `codespell`
2022-05-11 00:14:28 +02:00
Paul Davis b74fb262fa use a very very slightly more convenient and possibly more correct method for LV2 bpm port 2022-04-28 14:33:39 -06:00
Robin Gareus e603b2e12d
Remove debug messages (1/2) 2022-03-16 17:08:14 +01:00
Robin Gareus 4fa8af3e20
prefer ARDOUR::ui_scale_factor over ARDOUR::ui_scale_factor 2021-12-24 21:58:59 +01:00
Robin Gareus 031b858f47
LV2: check parent class/category -- not child categories 2021-11-21 03:27:43 +01:00
Robin Gareus e1b2a24221
Fix error message (include plugin ID) 2021-11-17 18:46:29 +01:00
Paul Davis 8bada4b5e1 remove public ::bbt_at (INTEGER) methods, because of superclock_t/samplepos_t confusion
libtemporal still needs ::bbt_at (superclock_t) fairly often so retain it as a private method, but public
interfaces take either Beats or timepos_t
2021-08-13 12:51:35 -06:00
Paul Davis 552484978c fix call to ::bbt_at() inside LV2 plugin 2021-08-13 12:51:35 -06:00
Paul Davis 12454f0a96 fix delivery of music time to LV2 plugins 2021-08-13 12:51:34 -06:00
Paul Davis f61ba0ccdc fix up broken passing of tempo grid information to LV2 plugins 2021-08-13 12:51:34 -06:00
Paul Davis f66a6c779e adapt to DoubleableBeats and so forth (libs edition) 2021-08-13 12:51:32 -06:00
Paul Davis c76c61d202 manual fixups after rebase against master 2021-08-13 12:51:31 -06:00
Paul Davis 79763893b3 remove/hide Session::tempo_map() and use TempoMap::use() instead (thread local shared ptr) 2021-08-13 12:51:30 -06:00
Paul Davis 256eb2d1d3 changes for lv2 plugin/new tempo map 2021-08-13 12:51:29 -06:00
Paul Davis f67029bd02 random commit to facilitate trivial move of work from laptop back to main system 2021-08-13 12:51:29 -06:00
Paul Davis eae9d276fe libardour: conversion to use timeline types (mega-commit) 2021-08-13 12:51:29 -06:00
Paul Davis f4490f54c5 change Timecode::BBT_Time to use Temporal namespace, plus a couple of other minor changes to enable compilation
This still uses the tempo map object in libs/ardour, not the new one in libs/temporal, and isn't likely to be functional
(though it could be)
2021-08-13 12:51:28 -06:00
Paul Davis 4dc048b28a update Temporal::Beats to merge master/nutempo versions, notably with private from-double constructor
This is the libraries-only edition. It still features liberal use of Beats::from_double() but this is now
explicit and will be easier to locate the calls and remove them. Several classes that were using
Beats::to_double() have been (temporarily) made friends of Beats to allow them to keep using it,
pending the much more widespread redesigns of several structures. Once this is done, the friend
relationships can (mostly) be removed. It is expected the ARDOUR::Variant will need to continue
as a friend because it is used to pass beat counts to LV2 as doubles
2021-08-13 12:51:28 -06:00
Robin Gareus 16d2915359
LV2: allow multiple atom buffers, ignore CV plugins 2021-07-05 17:57:14 +02:00
Robin Gareus afcea26d14
LV2: scan logs 2021-07-03 19:07:27 +02:00
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