Robin Gareus
b9da1a5bd5
Expose HW concurrency to LV2 plugins
2024-05-01 03:51:42 +02:00
Robin Gareus
2bb4a9ac4e
Add API to configure plugins for non-realtime offline processing
2024-04-23 21:51:50 +02:00
Robin Gareus
f858316503
Plugins: Ignore offset for scratch/silent buffers
...
This allows to process buffers at an offset, as long
as the number of processed samples is less or equal to the
current buffersize.
2024-04-23 21:51:19 +02:00
Paul Davis
6d29a0e99b
amend b96d556451
by using g_alloca() rather than non-standard variable-size array
2024-04-01 15:11:59 -06:00
Paul Davis
b96d556451
avoid heap allocation by std::vector in realtime context
2024-04-01 15:00:11 -06:00
Robin Gareus
22fef5ab2b
Vapor/LV2: API to pass options to exporter
2024-02-23 15:51:47 +01:00
Robin Gareus
ec32d22cb3
Vapor: Prototype LV2 export extension
2024-01-06 20:22:39 +01:00
Robin Gareus
c7772c220e
Vapor: Bootstrap Atmosphere plugin
2024-01-06 20:21:13 +01:00
Paul Davis
8c479ff425
lv2: if bpm is a double it may as well be a double from the start
2023-07-17 16:46:54 -06:00
Paul Davis
8a5f370994
lv2: correctly compute tempo for tempo markers delivered as position events
2023-07-17 11:39:47 -06:00
Paul Davis
93cbbf57d1
lv2: reserve vector for return values from TempoMap::get_grid()
2023-07-17 11:39:47 -06:00
Paul Davis
9fd0076c93
lv2plugins: correctly compute tempo to be passed to LV2 plugins
2023-07-17 11:39:47 -06:00
Paul Davis
2aa7dd42ea
lv2: plugins get an iterator to (sometimes|often) speed up ::get_grid() calls
2023-07-15 11:30:40 -06:00
Robin Gareus
fd6d88583f
LV2 MIDI synths: only tx tempo-map if plugin asks for it
...
This is a slight improvement on 8d97db101
to further mitigate
excessive overhead introduce in a591fb64a
.
2023-07-11 21:52:58 +02:00
Robin Gareus
8d97db101e
LV2Plugin: do not unconditionally call TempoMap::get_grid
2023-07-11 19:15:40 +02:00
Robin Gareus
d0fe0993a7
LV2: allow to split cycles w/MIDI
...
See also 64e2f16e06
2023-06-30 17:46:05 +02:00
Robin Gareus
64e2f16e06
LV2: apply offset to MIDI events
2023-06-30 17:12:16 +02:00
Paul Davis
50232a23a7
temporal: hide superclock_t variant of TempoMap::metric_at()
...
This fixes several callsites that were passing samplepos_t to get a TempoMetric,
some of them somewhat significant (e.g. VST plugins that want tempo information).
Bad API design on my part, apologies.
This commit combines libs/ and gtk2_ardour because the new private status
of the ::metric_at() call would be a blocking point for git bisect
2023-06-12 12:36:16 -06:00
Robin Gareus
da9ec02662
Fix typo in bf4decbfe
2023-05-06 18:16:49 +02:00
Robin Gareus
bf4decbfe7
Add LV2 header include compatibility (1/2)
...
For whatever reason LV2 changes #include header locations
in a micro version release and disables backwards compatibly
by default.
2023-05-06 16:20:01 +02:00
Paul Davis
b35518e212
switch from boost::{shared,weak}_ptr to std::{shared,weak}_ptr
...
This is mostly a simple lexical search+replace but the absence of operator< for
std::weak_ptr<T> leads to some complications, particularly with Evoral::Sequence
and ExportPortChannel.
2023-03-24 14:19:15 -06:00
Robin Gareus
5130a43d87
Remove direct use of audio-engine rate (1/2)
...
This is in preparation for sample-rate independence.
2023-01-22 20:06:14 +01:00
Robin Gareus
617ec6f54f
Include bus number in IOPortDescription
2023-01-17 22:02:10 +01:00
Robin Gareus
10d12599dd
Sort plugin presets by default
2022-12-19 16:41:41 +01:00
David Robillard
27dfd8a7e3
Fix loading LV2 presets with non-float port values
...
In practice, this mostly means integers when presets leave off the ".0", but we
implement all the numeric types here for good measure.
Also while we're at it, warn about unknown types now so it doesn't take three
people a half an hour to figure out what's going on the next time something
like this happens.
2022-12-13 22:03:48 -05:00
Robin Gareus
6c3a1d98fe
Towards distinguishing user/factory LV2 presets
...
See also https://github.com/lv2/lilv/issues/55
2022-11-15 20:08:24 +01:00
Robin Gareus
949f9e6051
Fix LV2 Atom ringbuffer overflow/corruption
...
Writing partial messages will lead to undefined behavior.
This does not generally happen (LV2 forge prevents overflow
of the Atom buffer itself), however if the GUI is frozen messages
may accumulate in Ardour's Ringbuffer.
2022-11-13 00:24:05 +01:00
Robin Gareus
88ff1fa192
LV2: only load default state if plugin requires it
2022-11-09 09:42:49 +01:00
Robin Gareus
619d523bbe
Fix state version for copy-construction (1/2)
...
In some cases copying an instance requires an explicit
set_state() call (e.g. copy internal plugin state). This is
done by calling `set_state(other->get_state())`.
::get_state() produces XML as matching current_state_version.
(not loading_state_version).
2022-11-04 17:51:09 +01:00
David Robillard
494aa8dba1
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-31 18:50:43 -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