[LV2] self automating plugins - RFC

Hanspeter Portner ventosus at airpost.net
Sun Feb 21 02:32:35 PST 2016


On 20.02.2016 12:44, Robin Gareus wrote:
> 0) user initiates analysis mode (either via a standard control or a
> dedicated plugin specific GUI)
>
> 1) The plugin tells the host that it entered analysis mode by sending:
> 
>   atom:Object a auto:setup;
>
> 2) the first time a plugin "touches" a parameter it sends
> 
>   atom:Object a auto:start; auto:parameter <int> ;
> 
> This is to allow the host to add guard-points. it's like to a user
> touching a control-knob on a touch-sensitive control-surface.
>
> 3) plugin sends a sequence of
> 
>   a auto:event; auto:parameter <int> ; auto:value <float> ;
> 
> 4) The plugin releases touch on a parameter by sending
> 
>   atom:Object a auto:end; auto:parameter <int> ;
> 
> 5) the plugin may go back to step 2 anytime or tell the host to complete
> the process (usually user initiated) by sending
> 
>   atom:Object a auto:finalize;

Thanks, I too have an application in mind that could profit from such a flow, e.g. training neural nets on events and/or
audio.

* Points 0, 5 make sense to me.
* Are points 2, 4 really necessary? Can't the host figure this out by itself as it knowns to have entered analysis mode?
* Point 3 is only needed because you seem to base your RFC on lv2:ControlPort|lv2:InputPort which are write-only by host
and read-only by plugin.

Why not use lv2:Parameter in the first place? They are read-write by both host and plugin (via patch:Get and patch:Set
messages). There would be no need for additional message types apart from the already existing patch:Set.

e.g. simpler flow based on lv2:Parameter and patch:Set

1) the plugin tells the host that it entered analysis mode

   a patch:Set;
   patch:property <auto:analysis>;
   patch:value true .

2) the plugin sends a sequence of

   a patch:Set;
   patch:property <myplugin:parameterX>;
   patch:value
     a atom:Int|Long|Float|Double|Bool|... .

3) the plugin may go back to step 2 anytime or tell the host to complete the process

   a patch:Set;
   patch:property <auto:analysis>;
   patch:value false .


More information about the Devel mailing list