Both gRainbow and PianoForte, which I have tried installing in both $HOME/.lv2 and /user/lib/lv2, do not play audio. You can see the routing in mix mode in the screen shot. It doesn’t put the actual plugin in the routing like it does with Reasonable Synth. I am new to Ardour so I might be doing something wrong, but the vsts that I have installed work perfectly. I am using Ardour 7.5 and have tried both ALSA and PulseAudio.
Those plugins are not loaded, and since There is no synth plugin, you won’t hear anything.
As for why instantiating those plugins fail, please check Ardour Menu > Window > Log. There might be some information there.
Some plugins only print additional information directly to standard output. You have to run Ardour from a terminal Window to get that (open a terminal and type ardour7 or Ardour7 press enter.)
If I had to guess: those plugins are not installed correctly and/or depend on some external library that is not present on you system).
Sorry, early summer heat going to my head. You would not have seen any terminal output if that was the case.
Do you have a link to where you got the LV2 plugins?
gRainbow, PianoForte.
gRainbow works as a VST3, but I wanted to try the LV2 version to see if it would work with that one. I’m not too concerned with getting PianoForte working though. Can someone send a link to an LV2 that is known to work so I can test it?
I find the same thing with Ardour 8.6 official build and self-built gRainbow plugin:
2024-05-27T18:07:41 [INFO]: gRainbow_Synth_Test-2024-05-27-18-06-26: no history file "/mnt/data/Audio/Projects/GRainbowTest/gRainbow_Synth_Test-2024-05-27-18-06-26/gRainbow_Synth_Test-2024-05-27-18-06-26.history" for this session.
2024-05-27T18:08:13 [ERROR]: LV2: Failed to instantiate plugin file:///plugins/gRainbow
2024-05-27T18:08:13 [WARNING]: Failed to add Synth Plugin to newly created track.
2024-05-27T18:10:26 [ERROR]: LV2: Failed to instantiate plugin file:///plugins/gRainbow
This is printed to the console when Ardour is started from CLI:
lilv_plugin_instantiate(): error: No plugin <file:///plugins/gRainbow> in <file:///home/chris/.lv2/gRainbow.lv2/libgRainbow.so>
I don’t think the LV2 manifest is setup correctly. When I run lv2ls every plugin has a reference which is either https:// or urn: but gRainbow is listed as: file:///plugins/gRainbow
That may not be a problem though, because lv2info doesn’t seem to have any errors:
$ lv2info file:///plugins/gRainbow
file:///plugins/gRainbow
Name: gRainbow
Class: Instrument Plugin
Author: StrangeLoops
Author Email: file:///home/chris/.lv2/gRainbow.lv2/dsp.ttl
Author Homepage: file:///home/chris/.lv2/gRainbow.lv2/dsp.ttl
Has latency: yes, reported by port 4
Bundle: file:///home/chris/.lv2/gRainbow.lv2/
Binary: file:///home/chris/.lv2/gRainbow.lv2/libgRainbow.so
UIs:
file:///plugins/gRainbow:UI
Class: http://lv2plug.in/ns/extensions/ui#X11UI
Binary: file:///home/chris/.lv2/gRainbow.lv2/libgRainbow.so
Bundle: file:///home/chris/.lv2/gRainbow.lv2/
Data URIs: file:///home/chris/.lv2/gRainbow.lv2/dsp.ttl
file:///home/chris/.lv2/gRainbow.lv2/manifest.ttl
Required Features: http://lv2plug.in/ns/ext/buf-size#boundedBlockLength
http://lv2plug.in/ns/ext/urid#map
http://lv2plug.in/ns/ext/options#options
Optional Features: http://lv2plug.in/ns/lv2core#hardRTCapable
Extension Data: http://lv2plug.in/ns/ext/state#interface
Presets:
Port 0:
Type: http://lv2plug.in/ns/lv2core#OutputPort
http://lv2plug.in/ns/lv2core#AudioPort
Symbol: audio_out_1
Name: Audio Out 1
Group: file:///plugins/gRainbow:output_group_1
Designation: http://lv2plug.in/ns/ext/port-groups#left
Port 1:
Type: http://lv2plug.in/ns/lv2core#AudioPort
http://lv2plug.in/ns/lv2core#OutputPort
Symbol: audio_out_2
Name: Audio Out 2
Group: file:///plugins/gRainbow:output_group_1
Designation: http://lv2plug.in/ns/ext/port-groups#right
Port 2:
Type: http://lv2plug.in/ns/ext/atom#AtomPort
http://lv2plug.in/ns/lv2core#InputPort
Symbol: in
Name: In
Designation: http://lv2plug.in/ns/lv2core#control
Port 3:
Type: http://lv2plug.in/ns/lv2core#OutputPort
http://lv2plug.in/ns/ext/atom#AtomPort
Symbol: out
Name: Out
Designation: http://lv2plug.in/ns/lv2core#control
Port 4:
Type: http://lv2plug.in/ns/lv2core#ControlPort
http://lv2plug.in/ns/lv2core#OutputPort
Symbol: latency
Name: Latency
Designation: http://lv2plug.in/ns/lv2core#latency
Properties: http://lv2plug.in/ns/lv2core#reportsLatency
http://lv2plug.in/ns/lv2core#connectionOptional
http://lv2plug.in/ns/ext/port-props#notOnGUI
http://lv2plug.in/ns/lv2core#integer
Port 5:
Type: http://lv2plug.in/ns/lv2core#ControlPort
http://lv2plug.in/ns/lv2core#InputPort
Symbol: freeWheeling
Name: Free Wheeling
Designation: http://lv2plug.in/ns/lv2core#freeWheeling
Minimum: 0.000000
Maximum: 1.000000
Default: 0.000000
Properties: http://lv2plug.in/ns/lv2core#connectionOptional
http://lv2plug.in/ns/ext/port-props#notOnGUI
http://lv2plug.in/ns/lv2core#toggled
Port 6:
Type: http://lv2plug.in/ns/lv2core#ControlPort
http://lv2plug.in/ns/lv2core#InputPort
Symbol: enabled
Name: Enabled
Designation: http://lv2plug.in/ns/lv2core#enabled
Minimum: 0.000000
Maximum: 1.000000
Default: 1.000000
Properties: http://lv2plug.in/ns/ext/port-props#notOnGUI
http://lv2plug.in/ns/lv2core#connectionOptional
http://lv2plug.in/ns/lv2core#toggled
This is the file path which ardour complained about:
$ ls -lh /home/chris/.lv2/gRainbow.lv2/libgRainbow.so
-rwxr-xr-x. 1 chris chris 32M May 27 17:56 /home/chris/.lv2/gRainbow.lv2/libgRainbow.so
So I don’t know. Does not look like all the other plugins in the output of lv2ls, but I don’t know enough about the LV2 specs to know if that is expected to cause this problem or not.
I do. The plugin is dynamically linked and depends on external system-wide libs. That calls for trouble.
I was thinking about detailed info about missing symbols. and I see two potential issues. The plugin was compiled to only work on very recent Linux distros (GLIBC_2.35).
and it does not expose an entry-point. There should be a symbol lv2_descriptor - like:
000000000000ad00 g DF .text 000000000000001f Base lv2_descriptor
Since that is missing, the plugin cannot be instantiated.
I compiled that plugin, so I will check to see if there are options to link statically. I did not see a description of what compilation options the project built binaries use.
I suspect that no lv2_descriptor is probably the main problem, that does not seem like changing configuration options will cure that.
The plugin aippears to use the JUCE framework, I thought that JUCE would provide the necessary framework code for the various plugin formats, but perhaps there was a mistake in the plugin implementation of the JUCE requirements.
A self compiled gRainbow works fine with a self compiled Ardour here.
But after running cmake you have to edit gRainbow_artefacts/JuceLibraryCode/JuceLV2Defines.h and change JucePlugin_LV2URI “/plugins/gRainbow” to JucePlugin_LV2URI “file://plugins/gRainbow”
Cmake even warns about it : CMake Warning at external/JUCE/extras/Build/CMake/JUCEUtils.cmake:981 (message): LV2URI should be well-formed with an ‘http’ prefix. Check the LV2URI argument to juce_add_plugin.
That is part of GTK2, does using that library, even linked statically, cause the same problems referred to when pointing out that GTK and QT should not be used for plugins?