Commit Graph

473 Commits

Author SHA1 Message Date
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