[LV2] LV2 + midnam
Bent Bisballe Nyeng
deva at aasimon.org
Sat Nov 12 07:54:25 PST 2016
On 11/01/16 19:48, Robin Gareus wrote:
> On 10/29/2016 02:56 AM, Robin Gareus wrote:
> [..]
>> The simplest is probably to pass around .midnam files.
>> Since mappings in plugins can change dynamically a LV2 extension:
>> - host asks plugin for the midnam
>> - plugin can ask host to re-read it.
>>
>> The nice part is that most DAWs and sequencers already support midnam.
>>
>
> Here's a first draft (working prototype in ardour-git 5.4-249-ge08c803)
>
> #define LV2_MIDNAM_URI "http://ardour.org/lv2/midnam"
> #define LV2_MIDNAM_PREFIX LV2_MIDNAM_URI "#"
> #define LV2_MIDNAM__interface LV2_MIDNAM_PREFIX "interface"
> #define LV2_MIDNAM__update LV2_MIDNAM_PREFIX "update"
>
> typedef void* LV2_Midnam_Handle;
>
> /** a LV2 Feature provided by the Host to the plugin */
> typedef struct {
> /** Opaque host data */
> LV2_Midnam_Handle handle;
> /** Request from run() that the host should re-read the midnam */
> void (*update)(LV2_Midnam_Handle handle);
> } LV2_Midnam;
>
> typedef struct {
> /** Query midnam document. The plugin
> * is expected to return a null-terminated XML
> * text which is a valid midnam description
> * (or NULL in case of error).
> *
> * The midnam <Model> must be unique and
> * specific for the given plugin-instance.
> */
> char* (*midnam)(LV2_Handle instance);
>
> /** The unique model id used in the midnam,
> * (or NULL).
> */
> char* (*model)(LV2_Handle instance);
>
> /** free allocated strings. The host
> * calls this for every value returned by
> * \ref midnam and \ref model.
> */
> void (*free)(char*);
> } LV2_Midnam_Interface;
First a comment to the proposed extension:
How would a plugin announce to the host that a midnam re-read is needed
(if a new drumkit is loaded for example)?
I think the midnam approach is a bad idea because it is encapsulating an
existing spec into a new one (LV2) but otoh it will ease the adaptation
in existing hosts... on the other hand I would really like to see a
dynamic way of handing over such info to the host without having to
dynamically write files to disk.
I therefore propose two new extensions:
1) A static midnam file to be used with the plugin, described in the ttl.
2) An atom based approach to hand over the attribute list is a 'pure'
LV2 way, without having to transfer xml strings, supporting the plugins
with the need for dynamic note descriptions.
Kind regards
Bent Bisballe Nyeng
More information about the Devel
mailing list