LV2 support in Ardour 2.8.3

I’m currently porting my JACK client plugins to LV2 since the inclusion of externalUI support in ardour 2.8.3 now makes it look like this is a viable option. I have a working prototype of the EQ - but one or two aspects of the LV2 behaviour in ardour are making it difficult to wrap this thing up - I wonder if anyone can shed any light on this…

  1. When I load an LV2 plugin, the ‘Instantiate’ function is called as I would expect. Then the ‘Activate’ function is called - however the plugin does not show as activated in Ardour e.g. it does not highlight in red until you click on it with the mouse.

2)When I ‘Delete’ the plugin I get the following sequence of calls:

Deactivate
Activate
Deactivate
Cleanup

I would expect just an optional ‘Deactivate’ if the plugin was active and a mandatory ‘Cleanup’

3)When I ‘Cut’ the plugin - none of these functions get called so the plugin is still resident but ‘untouchable’ - and not shown in the Ardour mixer. If I add it again I now have two running but only one shows in the channel.

4)With regard to externalUI - When I double click the plugin to open the GUI I get UI_instantiate as I would expect followed by ‘show’ as I would also expect. However when I ‘Delete’ the plugin no UI calls are issued e.g. ‘hide’ and the UI Cleanup is never called. So the user interface does not know the plugin has been removed.

  1. Only when I shut down Ardour with the plugin running does ‘hide’ get called.

These last two issues are making it very difficult to shut down or remove the plugin in a clean way without ending up with ‘orphaned’ GUIs after the plugin has been deleted. There are ways around it but it would be easier if the UI ‘hide’ and ‘cleanup’ functions were called at the correct times. Am I misunderstanding this or are there still one or two bugs in LV2 support to clear up?

1: Red Highlighting actually only means that it is selected. If a plugin is bypassed in Ardour, it has parenthesis around it as so…

(LV2) == Bypassed
LV2 == Not Bypassed

I would suspect this is the point of confusion there.

However #3, #4, and thusly #5 sound like bugs, and to be honest fairly large ones that should be fixed in Ardour IIUC. At least that is my guess on these.

     Seablade

Thanks - I guess the confusion over the highlighting was due to the fact that when I initially had the plugin loaded it was not red, and after I activated it (right click->menu) it was then red (because it was selected). At that point I didn’t realise it was already activated after I had loaded it.
The other problems do seem like bugs to me. The strange ‘Deactivate’ ‘Activate’ ‘Deactivate’ behaviour probably doesn’t appear to affect normal LV2 plugins as there will just be a brief and probably un-noticed activation again just before shut down. I noticed it while trying to debug the sequence of calls for various actions so I could find the best method to use to remove the instance of my plugin cleanly when it is removed from the Ardour mixer.
I’m confused as to the use of the ‘Cut’ ‘Delete’ ‘Paste’ ‘Copy’ etc options in the right click menu. Most other DAW applications just have ‘Add’ and ‘Remove’. Obviously I can make a (semi-intelligent) guess at the functionality but without being sure what the intention behind them is I can’t be sure if some of these things are bugs or just that I don’t know how its supposed to work - I believe there is some commendable work being done on the manual but while that remains a ‘work in progress’ I need some sort of guidance about how I should expect it to behave.

linuxDSP,

I realize you are probably about ready to smash your computer or perhaps spray lighter fluid and ignite anything related to LV2 and it’s development toolkit. May I say as a daily user of your excellent work…a huge thanks for making this effort and it would be a dream come true to have linuxDSP appearing in my mixer strips alongside the other recent LV2 offerings (like Invada). Having LV2 plugins of this caliber in the Linux audio world could make the term" VST" a distant antiquated memory. I can’t offer you code, but I do offer thanks and encouragement! I know we’ve discussed the sad economic business model of open-source many times but I would be willing to pay a bounty to see linuxDSP plugins in an LV2 format, in fact I will…who else is up to the challenge? A donation is on it’s way. Thanks again for all your efforts past and present.

GMaq,

Thanks for your support - you’re right, LV2 is providing some interesting ‘challenges’ at the moment, but I have a working prototype of the EQ running in Ardour 2.8.3 on my development machine. None of the previously mentioned bugs are causing serious trouble - but I’m just about convinced that all the remaining problems are down to (minor) glitches on the Ardour side of things.
That said, I may well release an early beta version for folks to use (very much at their own risk). In the past I’ve been cautious of releasing prototypes and beta versions (though some may say this is what has happened anyway :slight_smile: - but in this case it may well be the way to go until some of the Ardour glitches can be resolved.

Delete = you realize there shouldn’t be a ring modulator on the vox track

Copy/Paste = you realize the flanger will sound good on the rythm guitar track as well

Cut/Paste = you realize EQ you’ve been spending half an hour tweaking sucks on this track but would sound great on the castanets.

@Peder:

Right, that makes sense - I just wanted to be certain my understanding of it was correct and that I wasn’t chasing bugs that were in fact due to my inability to drive things properly :slight_smile:

I very rarely use the copy - paste / cut - paste options, I’ve normally just used Add and Delete.

Thanks.

@linuxdsp: note that the handling of key strokes and plugins etc. is already much improved in 3.0. You can actually use the delete key, Ctrl-X, Ctrl-v and stuff like that. Just a note.

@Paul: It sounds like 3.0 will bring a lot of new and improved features - I look forward to trying it. So far I’ve not tried building it but I may give it a go soon. I realise it is not for general release / testing yet…

If anyone wants to try the LV2 version of my EQ, then a very early Beta version is available on my website, I stress this is a beta version and there are some known limitations so use entirely at your own risk. If you find any strange bugs in the plugin or have trouble running it, please use the contact details on my site and I will try and help - I don’t want to hijack the Ardour forum for this purpose.

You will need Ardour 2.8.3 for the GUI to function.

Thanks to Nedko Arnaudov for help explaining some of the externalUI functionality.

There is now an updated beta version of my Parametric EQ in LV2 format for download on my site:

http://www.linuxdsp.co.uk

Further tweaks and improvements are still in progress, if this seems like a working design then the other plugins will be ported at some stage. However - this is a HUGE amount of work, so there has to be some indication of support for this. Regrettably the level of financial support so far has been hardly enough to make this venture worth while at all, so unfortunately this will and can only happen if this situation changes.

In the meantime I welcome any feedback on the work done so far.

@linuxdsp: it would be interesting and instructive to hear where all the work has come from. I would have imagined that in theory porting from JACK to LV2 was “relatively” easy. Apparently not …

@linuxdsp:
Thanks so much for doing this!!! The added functionality of the gui is obviously what the whole Mixbus concepit is all about, and for something that gets used as often as eq, this is absolutely the place to start. I will gladly donate after I’ve done some work with the plugin, and look forward to getting more of your plugins in the new format!!

@Paul: Your right, porting the audio processing from jack to LV2 or for that matter to any of the plugin standards is very easy once the code is written - the audio processing ‘engine’ just needs a buffer of samples and some parameters and it does its thing…
The work has been in porting the GUI to a form that can work in LV2. Initially the GUI was written using GTK or more correctly the majority of it used gdk. In order to get it to work in LV2 - hopefully in a way that will be ‘cross-toolkit’ compatible it was necessary to re-code the entire GUI engine in XLib. While gdk is essentially a thin wrapper around XLib, there were several challenges to overcome to make this work reliably.
However - if it continues to work reliably this does now mean that the plugins should work in any host that supports the externalUI extension.
Porting the remaining plugins is now less work than for the original EQ - but there are quite a few of them and a lot of testing still to do. I’m sure you are aware how even the most apparently straight forward task has the potential to consume days of development time.
And of course I am putting this work in the context of having earned almost no money for it - it simply doesn’t make sense to spend significant ammounts of time doing this for no return anymore. Hence my original comment to encourage people to show whatever degree of support they can for this to enable it to happen.

linuxdsp, I really appreciate you porting your jack clients to LV2. I have been using the EQ beta since you released it, and I LOVE IT! I can get the excellent sound I have grown to like about your jack clients, without having to patch them into the signal chain for any given track. I really hope you decide to port them all to LV2. I know I will donate if you port more of your plugins to LV2, as I will be using them more often on my paying projects! Keep up the good work!

@tbonedude: Glad the EQ is working well for you - here’s something else that I’m currently using which I hope to release very soon (apologies for the non-standard theme that Ardour is ‘wearing’ in the screenshot).

http://www.linuxdsp.co.uk/screenshots/pictures/ardour_mx_eq1.png

Is it normal that the LV2FIL plugin takes a long time to appear on the screen? What can I do about this?

@roaldz: I’ve heard other people mention that LV2FIL is slow to load, and I’ve had one or two problems with it myself. It may be slow to load because it uses python to drive the GUI - I’ve not really investigated it since I’m not the developer.

@roaldz: If you’re comfortable using git and compiling yourself try checking out the latest version. That doesn’t depend on liblo and pyliblo anymore and felt reasonably fast to me.

@peder

Thanks for that tip, this is much improved over the prior version!

Thank you, will try that peder!