I’m attempting to build and use MOD plugins in Ardour 6 on Raspberry Pi.
Everything is building properly so far and almost everything is usable, as-is, in Ardour. Some (mod-pitchshifter for example) give me issues when scanned in, though. The Ardour log gives an error “[WARNING]: Unsupported required LV2 feature: ‘http://lv2plug.in/ns/ext/buf-size#powerOf2BlockLength’ in ‘Super Capo’.”
One of the first lines in the plugin ttl is “lv2:requiredFeature bsize:fixedBlockLength, bsize:powerOf2BlockLength;”
So I guess the error I’m seeing means the Ardour 6 can’t support the feature the LV2 plugin needs?
(Yes I know using 6 is ill-advised, but it’s the only usable raspi binary I’ve got. It was provided by x42. Honestly, it’s working just fine so far except for this little hiccup.)
Yes, Ardour cannot satisfy the plugin’s requirements, and support for this would need to be added on the plugin side.
Ardour cannot guarantee a fixed block size, nor that the block-size is a power of two.
The block-size is user-configurable, arbitrary and a user can change it at any time.
Furthermore in Ardour internally it is also only an upper-limit. There are various cases where a plugin is called with fewer samples. The most common one are automation events. An example for a 128 fpp cycle: process 37 samples, change parameter value, process remaining 91 samples.
The same can happen when looping (wrap around on loop-point) or during vari-speed playback.
All major plugin standards mandate that a plugin has to be able to handle an arbitrary number of samples – except LV2 has a “lazy developer” option. That allows to specify that a given plugin only works if the number of samples per cycle is fixed at instantiation time, or even more strictly: require it a power of two.
The plugin in question was developed for the MOD, which always has a constant buffersize that is a power of two. A user cannot change this. So it’s perfectly fine in that context. The plugin is however not generally usable in other hosts.
If you follow the link to http://lv2plug.in/ns/ext/buf-size/#powerOf2BlockLength, the documentation says
Note that requiring this feature may severely limit the number of hosts capable of running the plugin.