Sharing a project with LV2, VST plugins

Many here already know about my orchestra template:

It uses LV2 plugins and one VST plugin.

I had somebody on #ardour IRC report that they tried to use it, it loaded the LV2 plugins but refused to load the VST. We checked that the VST was installed, the VST path used by ardour was correct, scanned for the plugin, and restarted ardour, without any luck.

We noticed that in the project file, the references to the VST looked like this:

Processor id=“49895” name=“LinuxSampler” active=“yes” user-latency=“0” type=“lxvst” unique-id=“1280535920” count=“1” custom=“no”

…while the references to the LV2 plugins looked like this:

Processor id=“638503” name=“Invada Early Reflection Reverb (sum L+R in)” active=“yes” user-latency=“0” type=“lv2” unique-id=“http://invadarecords.com/plugins/lv2/erreverb/sum” count=“1” custom=“no”

I’m curious about the unique-id. The VST id is numeric; the LV2 id is a url string. Is it possible that a different release of a VST plugin might have a different id, even if it is binary compatible?

There is a LinuxSampler LV2 plugin. Would we have better luck if I switched the ardour project template to abandon VST and use only LV2 plugins?

the VST plugin API does use a numeric ID for plugins (*), and developers are encouraged to change it between versions. LV2 uses a URI for IDs, and developers are encouraged to change it between versions.

(*) developers that don’t understand what they are doing tend to think it is 4 character identifier like ‘ABCD’ but it is actually a number.

Did you try omitting the IDs on your own system? If so - what happened?

LV2 uses a URI for IDs, and developers are encouraged to change it between versions
Well, only between incompatible versions. If the URI changes it is a different plugin, not really just a new version. That or I've really misunderstood something.

Isn’t that kind of true with VSTs as well. They have a Version number, which is a number, and they have an ID, which is a four character string, that can be anything. The ID should not change between versions as it identifies the plugin, but the version should change as it, well, defines the version.

ssj71 is correct. LV2 follows semver.org. The URI must change if and only if there are incompatible changes (which is why LV2 plugins don’t have a major version, see http://lv2plug.in/ns/lv2core/#minorVersion and #microVersion)

As for VST, Ardour only cares about the unique-id (set by the plugin vendor) regardless of the VST variant (WindowsVST, MacVST, LinuxVST). If Ardour on the target system knows about the plugin (Preferences > Plugins > VST … Path/Scan), Ardour will load it. If not the plugin will be replaced by a stub (no-op signal passthrough, plugin-state and automation will not be lost).
Ardour will not attempt to replace/match plugins that may actually be identical but have different Unique IDs.

LV2s use URIs are unique-IDs, VST specifies a 4 byte integer, Audio-unit uses three 4byte triples (vendor, plugin, type), LADSPA uses numeric IDs,…
And yes, we’ve seen VSTs that change their ID between variants (Windows, Mac). I have not yet come across a VSTs that change it between minor versions, though.

It is not possible to answer the question if you’re better off using only LV2s. Both VST and LV2 are just specifications: VST and LV2 plugins can run on the 3 major platforms (Windows, Linux, Mac) and two common architectures (32, 64bit intel). LV2 can also run on other platforms and more CPU archs… Anyway it depends if the plugin vendor in question supports the target system for the plugins that you use.

PS. If all systems involved are running GNU/Linux, then yes: you’ll likely be better off using only LV2 plugins as most of them are packaged on the vast majority of distros and readily available.