I started looking at LV2 plugins and started by compiling and installing the example app plugin. That worked great, after a lot of help on here. A thing to keep in mind with developing in buildroot is that if you edit source code in a local filesystem package it won’t actually get built, unless you bump the version number or wipe the build directory. You could possibly spend some time making changes to source and not seeing any resulting change in the installed package, I know I did.
So all that under my belt I decided that I’d copy the example amp package to a new plugin, ‘my-plugin’. To make it repeatable I made that operation a bash script. I was never going to get it right first time. So my script at present basically copies the example changes the names of the various files and executes ‘sed’ commands to change the names in the files. I manually changed the name of the plugin in the ttl file to ‘XYZ my-plugin’, so that it was easy to find, XYZ
The result is that I can build, and publish to the ModDwarf, and when I search for XYZ it’s there! All that was too good to be true, when I tried to drag the plugin onto the canvas I got a banner on the page saying “Error Adding Effect”.
So obviously my script ain’t 100% right and I’ve missed something in one or other of the files. However my question is about the development process, rather then my ommision. Is what I have done the best way to develop LV2 plugins, as the resulting error message “Error Adding Effect” ain’t exactly helpful to the would be developer. Are there more verbose/descriptive outputs somewhere else on the moddwarf’s web interface or would I be better compiling the plugin for my local laptop and trying to iron out any issues on that platform before targeting the ModDwarf? I’m only thinking in terms of developing. If I was to get an error saying that there’s an issue in file ABC on line 123 it’d be more helpful then what I’m getting from ModDwarf
In case it’s of interest the scipt which I execute from the ‘mod-plugin-builder’ folder is:
cp -r plugins/package/eg-amp-lv2-labs plugins/package/my-plugin mv plugins/package/my-plugin/eg-amp-lv2-labs.mk plugins/package/my-plugin/my-plugin.mk sed -i 's/EG_AMP_LV2_LABS_/MY_PLUGIN_/g' plugins/package/my-plugin/my-plugin.mk sed -i 's/eg-amp/my-plugin/g' plugins/package/my-plugin/my-plugin.mk mv plugins/package/my-plugin/source/amp.c plugins/package/my-plugin/source/plugin.c sed -i 's/eg-amp/my-plugin/g' plugins/package/my-plugin/source/Makefile sed -i 's/amp.c/plugin.c/g' plugins/package/my-plugin/source/Makefile sed -i 's/amp/my-plugin/g' plugins/package/my-plugin/source/Makefile mv plugins/package/my-plugin/source/eg-amp.lv2 plugins/package/my-plugin/source/my-plugin.lv2 mv plugins/package/my-plugin/source/my-plugin.lv2/amp.ttl plugins/package/my-plugin/source/my-plugin.lv2/my-plugin.ttl sed -i 's/amp.ttl/my-plugin.ttl/g' plugins/package/my-plugin/source/my-plugin.lv2/manifest.ttl.in sed -i 's/eg-amp/my-plugin/g' plugins/package/my-plugin/source/my-plugin.lv2/manifest.ttl.in sed -i 's/amp.so/my-plugin.so/g' plugins/package/my-plugin/source/my-plugin.lv2/manifest.ttl.in sed -i 's/amp@/my-plugin@/g' plugins/package/my-plugin/source/my-plugin.lv2/manifest.ttl.in sed -i 's/eg-amp/my-plugin/g' plugins/package/my-plugin/source/my-plugin.lv2/my-plugin.ttl
sed -i ‘s/Simple Amplifier/XYZ my-plugin/g’ plugins/package/my-plugin/source/my-plugin.lv2/my-plugin.ttl
sed -i ‘s/Simple Amp/XYZ my-plugin/g’ plugins/package/my-plugin/source/my-plugin.lv2/my-plugin.ttl