Commit graph

420 commits

Author SHA1 Message Date
Robin Gareus
e6e7377cd8 API evolution
The Session-reference is only needed to instantiate/load the plugin.
Indexing presets is not supposed to call load() and be const WRT to
PluginInfo
2016-01-09 15:22:16 +01:00
Robin Gareus
ba450aaeaa Leave a ToDo note: distinguish LV2 user and factory presets. 2016-01-09 00:57:53 +01:00
Robin Gareus
2cddd0d81f don't re-activate LV2 plugin before cleanup. 2016-01-07 18:11:35 +01:00
Robin Gareus
deb6884a53 LV2 - query presets without instantiating the plugin 2016-01-07 17:23:39 +01:00
Robin Gareus
d9eb5e00c5 cont'd work on plugin-state templates - #6709
Refactor and consolidate code and re-use it for session-templates.
This avoids recursive copying of the plugin-dir()
2015-12-19 14:46:15 +01:00
Robin Gareus
3eb04c3c23 save/restore plugin state with track-template 2015-12-18 14:27:15 +01:00
Robin Gareus
7b6ef41f0c leave some todo-notes #6709 (track templates & state) 2015-12-17 23:48:06 +01:00
Robin Gareus
f05afd973b update URI (see lv2-dev email list) 2015-12-15 09:07:00 +01:00
Robin Gareus
03ed30ac9b update LV2 URI 2015-12-13 18:29:44 +01:00
Robin Gareus
5630332797 fix LV2 plugin state for copied plugins. 2015-12-10 19:31:00 +01:00
Robin Gareus
699f9b097d LV2 specific instrument-plugin check 2015-12-10 17:20:08 +01:00
Robin Gareus
065d7c852a outline a "NoSampleAccurateControl" LV2 feature:
Since control-ports have a fixed value for the current process-block,
Ardour splits a plugin's run() process cycle on every automation event
to facilitate sample-accurate automation.

Since automation is interpolated between events, this ensures that each
explicit automation point is reached (not interpolated).

Plugins where this is not required and which favor a fixed block-size,
can now specify an optional Feature: NoSampleAccurateControl.

One example: a convolution plugin with smoothed gain control.
2015-12-06 14:27:24 +01:00
Robin Gareus
9d867cfd87 add dedicated API to check plugin class 2015-11-18 18:11:19 +01:00
Robin Gareus
3e3a5e1cff and another LV2-1.0.0 compat ifdef 2015-10-26 13:32:51 +01:00
Robin Gareus
677531addb amend 311adde (LV2-1.0.0 compat) 2015-10-26 13:24:23 +01:00
Robin Gareus
311adde023 add ifdefs for LV2-1.0.0 compat 2015-10-23 18:58:55 +02:00
John Emmas
3c4f899a4f Fix a small buffer issue which could sometimes prevent sessions from being able to load
In the function 'LV2Plugin::add_state()' the snprintf() call can easily print 19 or even 20 bytes - so a 16-byte buffer wasn't large enough.
2015-10-22 16:37:00 +01:00
Robin Gareus
2397429e99 use quotes for in-tree pbd/glib wrapper include 2015-10-05 22:15:18 +02:00
Robin Gareus
22b07e0233 NOOP, remove trailing tabs/whitespace. 2015-10-05 16:17:49 +02:00
Robin Gareus
ed2ce36735 LV2 state cleanup, patch from deva. closes #6607
set _impl->state on session load in order to detect state changes
properly (no not save duplicate states).

+ some small mem-leaks (free state)
2015-09-27 14:07:57 +02:00
Robin Gareus
26fdf99a92 copy LV2 options to heap.
Stack pointer becomes invalid when the array goes out of scope.
Fixes rare crash in suil_wrapper_new() or GUIs iterating over options.
2015-09-25 19:44:30 +02:00
Robin Gareus
7ac691ec82 use pbd's gstdio compatibility wrapper 2015-09-17 14:37:57 +02:00
Robin Gareus
eb998b3264 plug some memory leaks in libs 2015-09-12 20:05:25 +02:00
Robin Gareus
09caf8336f allow LV2 plugins to query current block-size.
This is akin to VST2's audioMasterGetBlockSize.
It returns the current nominal block size (think jack-buffersize).

It's not the only block size that may be used when calling run(), it's
just the normal one. The actual block sizes used may be larger or smaller
and may vary between successive calls of run().

This change became neccesary after 53e969e9. Some plugins expected 
maxBlockLength to be the /current/ buffer-size and not all-time maxiumum.
Those plugins can now use nominalBlockLength.
2015-09-10 00:55:59 +02:00
Robin Gareus
a46c84d72f update comment regarding lv2 buffersizes 2015-08-17 00:07:32 +02:00
Robin Gareus
a99fa7170c use buf-size.h only with lv2-1.2 or later 2015-08-14 22:42:35 +02:00
Robin Gareus
98e991c939 relax LV2 buffersize restrictions
check only required features, not optional ones.
2015-08-14 19:24:40 +02:00
Robin Gareus
e72c0b81a7 don't even list LV2 plugins that cannot be used. 2015-08-14 18:13:05 +02:00
Robin Gareus
ac1065b43b refuse to load LV2 plugins if buffersize requirements cannot be satisfied. 2015-08-14 17:51:26 +02:00
Robin Gareus
53e969e925 pass complete blocksize range to LV2 plugin. fixes #6498
the buffersize may change anytime (split cycles),
also plugin analysis uses a 4096 sample window.
2015-08-05 00:02:55 +02:00
Robin Gareus
64af6c880c Revert "debug/fix LV2 state loading on OSX 10.5/PPC"
This reverts commit 22bc62ed43.
forwarded upstream: http://dev.drobilla.net/ticket/1073
2015-07-28 18:58:17 +02:00
Robin Gareus
fee54fb155 fix LV2 freewheeling port, explicit cast bool to float.
http://lv2plug.in/ns/lv2core/#freeWheeling mentions "true"
and http://lv2plug.in/ns/lv2core/#toggled defines true as > 0.
false as <= 0.
2015-07-27 19:08:29 +02:00
Robin Gareus
22bc62ed43 debug/fix LV2 state loading on OSX 10.5/PPC 2015-07-27 17:11:52 +02:00
Robin Gareus
e44e0b2c9a LV2: delete existing preset before replacing it 2015-05-22 18:25:07 +02:00
David Robillard
18b54e6a85 Fix deleting and re-saving LV2 presets. 2015-05-22 00:24:37 -04:00
David Robillard
de078a04e2 Fix LV2 preset deletion and clash between plugins.
Before this, LV2 preset deletion in Ardour was doubly broken: the wrong file
was being removed, and removing the correct file would only result in a broken
preset.  This change uses a new version of Lilv which has a more sophisticated
mechanism for preset deletion.

Also, fix "clashing" presets saved with the same name for different plugins, by
prefixing the plugin name to the bundle (this is now a recommendation in the
LV2 preset specification).
2015-03-07 14:54:03 -05:00
David Robillard
429da16b60 Fix sending out of bounds events to LV2 plugins. 2015-02-09 13:45:37 -05:00
Robin Gareus
c11a7a1bd7 allow bundling of lv2core
Don’t statically initiate the lv2 world, use explicit call after 
scanning bundles.


lilv_world_load_specifications() and lilv_world_load_plugin_classes()
are only ever called after lilv_world_load_all(), so we postpone
the call to it.
2015-01-29 02:13:33 +01:00
Ben Loftis
d2fa2450aa use C locale, because POSIX locale is not supported on windows, and operation is undefined. C works on all platforms 2015-01-19 07:29:25 -06:00
David Robillard
0274c93eac Add missing Variant => LV2 Atom case.
(Not likely to actually be used any time soon but fixes warning and does
something reasonable if lossy).
2014-12-31 17:16:28 -05:00
Paul Davis
795c5c16f1 no use of GUI parameters in libardour 2014-12-22 13:39:46 -05:00
Robin Gareus
cf859270e0 fix LV2 default port value. 2014-11-30 15:05:39 +01:00
David Robillard
bb12c750bb Just rename problematic Variant::VOID type. 2014-11-07 17:21:43 -05:00
David Robillard
a54f8141dc Use format string even for units we understand (print Hz units). 2014-11-03 20:52:14 -05:00
David Robillard
6e16f69c26 Add menu to set frequency controls in beats, and half or double current value.
Test with e.g. fomp:cs_phaser1_lfo LFO frequency.
2014-11-03 17:29:11 -05:00
David Robillard
7204702c3f Reduce coupling between Plugin and PluginInsert. 2014-11-03 13:40:50 -05:00
David Robillard
68507badd9 Fix compilation with old LV2. Maybe. 2014-11-03 11:54:35 -05:00
David Robillard
d02d8337a9 Support pretty display of arbitrary plugin parameter units.
Try e.g. fomp:cs_chorus1 which has Hz and ms controls.
2014-11-02 02:10:24 -05:00
David Robillard
47c4929bc2 Display gain and midiNote plugin parameters/properties nicely.
Show fancy values on generic GUI controls, automation lane controls, and automation lane verbose cursor.
Fix text display of midiNote values.
Make bigstep of midiNote parameters 12 (one octave).
Add ARDOUR::value_as_string() as a stateless one-stop-shop for value printing.
2014-11-02 02:10:24 -05:00
David Robillard
8a128b33d3 Automation of LV2 plugin properties.
Work towards ParameterDescriptor being used more universally to describe control characteristics.
2014-11-02 02:10:24 -05:00