Ingen as LV2 in Ardour

I found some time today to make Ingen's support for running as an LV2 more solid. I have posted about this before, but it now works at RT appropriate buffer sizes, and several other bugs have been fixed. Here's the obligatory contrived screenshot:

Ingen in Ardour

People are sometimes confused about how Ingen works as an LV2 (I need to write proper documentation One of These Days): you don't load an "Ingen" plugin so much (it wouldn't do anything), as you save an Ingen graph as an LV2 plugin. The idea is that Ingen is a tool for visually building plugins. Since LV2 does not support dynamically adding ports, it's easiest to do your building as a Jack app, so the basic work flow is something like:

  1. Run Ingen as a Jack app: ingen -eg
  2. Build a graph, adding ports, plugins, etc.
  3. Save the graph to somewhere in your LV2_PATH, e.g. ~/.lv2 (which happens to be the default directory of the save dialog for this reason).
  4. Voila, your graph should now show up in any LV2 host (its URI will simply be its local filesystem path, unless you explicitly set a stable one). You can check with lv2ls.

There is no export or compilation involved, Ingen's native format is LV2 compatible (graphs are always saved in the same format). If you saved a graph elsewhere you can simply copy it to ~/.lv2 to use it as a plugin, though for now you may have to create or fix the symlink to the engine binary manually to do this.

Note that you can edit the graph while it's running as an LV2 plugin, including adding new nodes and connections, you just can't add top-level ports because the host doesn't know about them. There is still some work to be done polishing this up to be ready for prime-time, but for the brave, it's more or less good to go.