Commit graph

420 commits

Author SHA1 Message Date
Robin Gareus
e398656940
Prevent crashes when copying LV2 plugin state
LV2 plugin state-loading is generally safe to perform concurrently
with running the plugin (as per LV2 spec). However concurrent run()
is not.
2019-03-22 14:09:03 +01:00
Robin Gareus
484e0d0fb2
Remove generic parameter-printer
This has been superseded by value_as_string() along with meta-data
from parameter-descriptor, which is supported by all standards, except VST.
2019-03-11 02:10:50 +01:00
Robin Gareus
4397ec9ce6
Properly copy LV2 plugin instances on replication
This fixes issues for stateful plugins and plugins with
previously loaded preset.
2019-02-28 04:48:32 +01:00
Robin Gareus
2ec28f3ce7
Clean up Latency API (Processor vs Plugin)
Plugins are only a source of Latency (Plugin delay).
The API to query, signal and override Latency is managed
by PluginInsert.
2019-02-17 01:51:49 +01:00
David Robillard
560054dfd6 Use lilv_world_get()
Leaves the now-trivial get_value() helper there since it keeps the call sites
shorter and nicer to read.
2018-12-19 20:08:47 -05:00
David Robillard
79c9c62154 Remove conditional support for ancient versions of Lilv
This updates the dependency to 0.24.2, which was released in January 2017 and
is the most recent version in Debian 9 (stretch).
2018-12-19 20:08:47 -05:00
Robin Gareus
e4304f3bf2
Wouldn't it be nice if plugin presets had a description/comment? 2018-12-18 14:13:15 +01:00
Robin Gareus
0a3fc4a87f
Add LV2 option/extension for plugin thread sched priority
This allows plugins that need threads to process to configure their
thread priority to not interfere with the host's process threads.
2018-12-18 13:30:31 +01:00
Robin Gareus
f795462100 Save LV2 Port Property values locally
This keeps track of lv2:Parameter properties modified with Port:Set,
currently file-paths.
2018-11-22 14:58:44 +01:00
Robin Gareus
cbef72b8a1 Optimize Plugin connect & run API, use const maps 2018-11-04 02:16:34 +01:00
Robin Gareus
333f59a53f Fix lv2-state templates with external files.
This forces liblilv to collect external files in the template-folder
and symlink to the original file instead of re-using the external-file
folder of the session that was used to create the template.
2018-07-10 00:58:18 +02:00
Robin Gareus
59a3b040a3 Hide designated LV2 freewheeling port. 2018-06-09 14:40:46 +02:00
John Emmas
2124fb72ea Make sure that 'libardour-config,h' only gets #included when building with waf (as it only gets generated when building with waf)
When building with MSVC this was getting #included in a few places which had the effect of making my session files get generated in a very old format.
2018-02-03 13:58:22 +00:00
Robin Gareus
b8491014a5 Update plugin classification
* dedicated API for classes (effect, instrument, util)
* prepare for tags (rather than categories)
* prepare removal of per-plugin in_category() API
2018-01-30 01:33:48 +01:00
Robin Gareus
d6a3db1ac7 lv2 compat for liblilv < 1.10.0 2017-10-23 19:22:16 +02:00
Paul Davis
30b087ab3d globally change all use of "frame" to refer to audio into "sample".
Generated by tools/f2s. Some hand-editing will be required in a few places to fix up comments related to timecode
and video in order to keep the legible
2017-09-18 12:39:17 -04:00
Robin Gareus
7872e4033f LV2/midnam tweaks - fix race conditions
* Emit signal once midnam was actually updated
* only re-read midnam if was it changed. This allows idempotent calls to
  read_midnam() - from the same thread.

At session-load a synth-plugin may load a soundfont in the background
and emit midnam_update() after the synth was initialized but before the
GUI thread connects to the signal. By making the call idempotent the
GUI can call read_midnam() after connecting to the signal to catch up.
2017-09-09 03:08:46 +02:00
Robin Gareus
e452ba0fe1 Add LV2 extension to notify host about midi-bank/pgm state. 2017-09-08 23:35:00 +02:00
Robin Gareus
acd73a9bf8 yet another Windows build fix (LV2 preset 89475b2c9) 2017-08-11 17:33:44 +02:00
Robin Gareus
ee839bda3d Fix Windows builds (amend 89475b2c) 2017-08-11 17:19:45 +02:00
Robin Gareus
89475b2c95 Fix LV2 Preset path for window 2017-08-11 16:54:39 +02:00
Johannes Mueller
6663a26755 Signal wish to show inline display in gui by lv2:optionalFeature
... in .ttl file rather than by extension_data() in code. That's more in the
spirit of LV2.
2017-07-31 21:31:23 +02:00
Johannes Mueller
2716ce41e0 Indicate whether to show plugin's inline display in GUI
This is currently done by an extension data similarly to
LV2_INLINEDISPLAY__interface.
2017-07-31 21:31:23 +02:00
Robin Gareus
fde0e293a3 Remove unused "mark" parameter from stop_touch() API 2017-07-24 01:59:18 +02:00
Robin Gareus
f413b83cb9 Fix thinko in dd3f922788 2017-07-01 18:31:55 +02:00
Robin Gareus
dd3f922788 Tweak LV2 float parameter printing 2017-06-30 01:56:49 +02:00
Tim Mayberry
6d35b3c4e4 Remove locale_guard.h from ardour/ardour.h header
Add to source files that use LocaleGuard

Results in far less recompiling when pbd/locale_guard.h changes
2017-06-22 10:48:38 +10:00
Robin Gareus
7ab15def2b Consolidate ParameterDescriptor settings+ranges 2017-06-21 18:13:26 +02:00
Robin Gareus
cb48bb0e1c remove min/max unbound -- LADSPA special case.
This explicit case should never have existed in the first place.

Plugins can always implicitly exceed the range and are expected to
cope with out-of-range values (e.g. meters when fed with a peaking signal
may return an out-of-bounds value)
2017-06-21 18:12:20 +02:00
Damien Zammit
3d2bbf93ef a-EQ: Tweak knob layout to be less confusing 2017-06-11 16:25:26 +10:00
Tim Mayberry
baa1bff5ec Use PBD::to_string to set state-dir property in LV2Plugin
To prevent issues with numeric grouping with formatting used by string_compose
template/stringstream when global C++ locale != "C"
2017-04-19 09:37:01 +10:00
Tim Mayberry
19f9158dc6 Use PBD::to_string() in LV2Plugin instead of string_compose for state_dir
To prevent issues with numeric grouping with formatting used by string_compose
template/stringstream when global C++ locale != "C"
2017-04-19 09:37:01 +10:00
Tim Mayberry
74301a5063 Use XMLNode::get/set_property in ARDOUR::LV2Plugin 2017-04-19 09:36:49 +10:00
Robin Gareus
a199477cf6 Improve plugin Ccategory consistency somewhat 2017-03-21 22:21:02 +01:00
Robin Gareus
1fe10c0e3e Relax LV2 plugin filter to substring (e.g. "Utility", "MIDI Utility") 2017-03-21 19:44:22 +01:00
Robin Gareus
bdf41b0bf5 Implementations for Plugin-Preset-Load to set automation 2017-02-21 15:24:20 +01:00
Robin Gareus
7617477609 Scale default Atom Ringbuffer size with samplerate
This increases the safe-margin for plugins producing more messages
sent to the plugin GUI (usually fixed ~25Hz updates)
2017-01-19 21:35:22 +01:00
Paul Davis
0a167f5c99 Fix minimum/maximum discovery for integer params (from Hanspeter Portner) 2016-12-19 23:10:36 +00:00
Robin Gareus
3cc644b467 set AtomObject body ID to zero (as per spec when unused) 2016-12-05 15:43:54 +01:00
David Robillard
08fffeffec Remove Evoral::MIDIEvent
It is slightly questionable whether type specific methods like
velocity() belong on Event at all, these may be better off as free
functions.  However the code currently uses them as methods in many
places, and it seems like a step in the right direction, since, for
example, we might some day have events that have a velocity but aren't
stored as MIDI messages (e.g. if Ardour uses an internal musical model
that is more expressive).

In any case, the former inheritance and plethora of sloppy casts is
definitely not the right thing.
2016-12-03 15:18:21 -05:00
Robin Gareus
37137d5b3c fix LV2 state versioning with session-templates 2016-11-14 01:40:57 +01:00
nick_m
33e95a1577 rename Tempo _beats_per_minute to _note_types_per_minute, provide pulse helpers.
- adds quarter_notes_per_minute(), note_divisions_per_minute (double)
	  pulses_per_minute() and frames_per_quarter_note()

	- this should be a no-op except for the use of tempo by
	  the vst callback which definitely uses quarter notes per minute.

	- the XML node for TempoSection named 'beats-per-minute'
	  has been renamed.
2016-11-11 03:37:08 +11:00
nick_m
594137f5cc remove public pulse methods from TempoMap.
- the only object whose musical position is not expressed in
	  quarter notes is MetricSection.
	  there is now no need to expose this.
2016-11-11 03:37:08 +11:00
Robin Gareus
d253d49739 NO-OP, explanatory comments 2016-11-10 01:45:00 +01:00
Robin Gareus
ef3fa314f0 Parse PortGroups into Plugin::IOPortDescription 2016-11-10 01:31:56 +01:00
David Robillard
ea10a896c6 Fix LV2 state:StateChanged URI 2016-11-07 07:10:08 -05:00
Robin Gareus
e08c80370c Fix midnam replacement:
Unloading before update may otherwise reset the patch to
generic midi (when the current patch is no longer available)
2016-10-30 21:24:26 +01:00
Robin Gareus
db2d238cec Update prototype API (3f739738) for windows/dll compat
memory allocated by a .dll must be free()d by the given dll.
2016-10-30 17:39:55 +01:00
Robin Gareus
0ea9270a4b avoid C++11 (and remove debug output) 2016-10-30 04:51:31 +01:00
Robin Gareus
3f73973806 Prototype LV2 extension for plugins to provide Midnams 2016-10-29 19:57:43 +02:00