I’ve recently started to create some LV2 plugins for my personal use and also to test the usability of the framework. While doing so, I’ve stumbled across some inconveniences. The root of it all is that a complete LV2 plugin isn’t only a shared object, it’s a folder with Turtle configuration files, possibly multiple shared objects and other resources. This means that a LV2 plugin project requires an additional build system apart from the normal Cargo system to assemble all files into a folder and to install them. However, this also makes creating a plugin from scratch a bit more cumbersome than simply creating a new crate. I’ve collected the things I’ve found in a list of user stories:
- I as a plugin creator want to create a new plugin project from scratch to implement my ideas.
- I as a plugin creator want to compile the plugin code and the resources into one folder to test the deployment.
- I as a plugin creator or plugin user want to install a plugin from the source project to run and use it.
- I as a plugin creator or plugin user want to run the plugin from the command line to test it.
- I as a plugin creator want to package my built plugin in order to ship it to other users.
- I as a plugin creator want to automatically insert the name of the shared object in the plugin’s manifest so I don’t have to do it manually for every operating system. (Shared objects have different naming schemes depending on the operating system).
From my point of view, the simplest way to implement these user stories is to create a extension for Cargo, let’s call it
cargo lv2, that does exactly that. There could be sub-commands to create a new project, build it and install it in a certain directory. Some new information would be required, though, which would be stored in the
Cargo.toml. Maybe, if the host framework would become a thing, we could also add a custom
run command that would host the program like
What do you think about that idea? Did I miss any user stories and is there anybody interested in creating such an extension? I don’t know if I will have the time to maintain it, but I would love to contribute!