View Issue Details

IDProjectCategoryView StatusLast Update
0004688ardourbugspublic2012-02-06 18:27
Reporternettings Assigned To 
Status resolvedResolutionno change required 
Summary0004688: Ardour does not respect lv2:inPlaceBroken and fails silently
DescriptionAny plugin that assumes its input buffer(s) will remain intact for the duration of the run() callback, and which has set the lv2:inPlaceBroken property accordingly, will fail silently as its input buffer is overwritten by the output it generates, creating corrupt output.

instead, ardour should either provide intact buffers, or, if that is too intrusive, refuse to load the plugin with an appropriate error message.
Steps To Reproducethe attached plugin is a first-order ambisonic panner, which defines lv2:inPlaceBroken. install it into a track with one input and four outputs, and feed it a test signal.

now check the "focus" slider. it should crossfade between "all output in the first channel" and "all output in the other three channels". first channel only works, but when you fade to other three channels, they are moving towards zero as the input buffer gets overwritten by the first output buffer.
Additional Informationi don't have a LADSPA testcase right now, but i remember very clearly that the same applies to the LADSPA_PROPERTY_INPLACE_BROKEN flag.
TagsNo tags attached.



2012-02-06 18:27

manager   ~0012761

turns out this is due to a bug in the lv2 example plugin eg-amp.lv2, which i used as a template. it uses the non-existing lv2:property.

the correct way for plugins to specify they are not inplace-safe is
@prefix lv2: <>.
lv2:requiredFeature lv2:inPlaceBroken;

if the ttl includes this line, ardour3 will fail to load the plugin with an appropriate error message.

Issue History

Date Modified Username Field Change
2012-02-06 16:37 nettings New Issue
2012-02-06 16:37 nettings cost => 0.00
2012-02-06 18:27 nettings Note Added: 0012761
2012-02-06 18:27 nettings Status new => resolved
2012-02-06 18:27 nettings Resolution open => no change required