Monday, February 24, 2014

Linux VST Plug-in for Ardour

I now have a functioning template for a working VST effect in Ardour. I'm still using 2.x format, since my version of Ardour (v3.0) doesn't recognize VST v3.0 (at least not on a Linux platform). The video below is just a screen capture of the plug in in action. The effect algorithm is just a signal-finding method I used at the cosmic ray experiment I worked at during grad school called the Generalized Second Difference (Mariscotti 1995).

Despite the controls going from zero to one, the parameter 'z' really ranges from 0 to 30 and 'm' goes from 1 to 17. The filter kernel will have 3 + 2*m*z elements, so this works well to test the limits of the DSP (it actually performed way better than I expected). 'm' determines the "width" of the filter while 'z' affects the "smoothness".

Some notes:

I compiled everything but the examples in VST3 SDK into a static library. I copy vstplugmain.cpp into whatever project I'm working at and add -I${VST_HOME} to my include flags for compiling. I add the static library directly so the compiler can pull whatever it needs from it when creating the plugin .so file. With that "template", all I really need to use for reference when writing the code for the plugin are the files in public.sdk/sources/vst2.x.

Still can't get my own GUI working. When I try to use Qt, Ardour seg-faults before the recent projects window pops up. When I try skeleton code Ardour crashes when I try to open the controls for the plugin. I presume the latter case occurs because I'm not handling signals from the Host program. But I don't understand what's going on in the first case. I can't run a proper "debugging" environment because I didn't build debugging versions of any of the dependent packages for Ardour. Not saying I can't, just looking at a few day's work to get that going and I feel like the solution probably isn't all that complicated.

No comments:

Post a Comment