brummer10 / XUiDesigner

A WYSIWYG LV2 GUI/plugin creator tool
BSD Zero Clause License
100 stars 3 forks source link

Exported LV2 bundle redefines plugin #3

Closed falkTX closed 1 year ago

falkTX commented 2 years ago

Currently exporting an LV2 UI also generates dummy code for its DSP side. Not sure why that is at all, but it makes this unusable as a "ready-to-go" solution.

We can simply have the lv2 bundle provide only the UI, there is no need for an LV2 bundle to define both the plugin and the UI. So like, manifest.ttl would be like:

<http://arcticanaudio.com/plugins/thepilgrim#ExternalUI>
    a guiext:X11UI;
    guiext:binary <The_Pilgrim_ui.so> ;
    rdfs:seeAlso <The_Pilgrim_ui.ttl> .

And then the The_Pilgrim_ui.ttl can include the rest of the UI definitions, like extension data, optional/required features, supported options, etc.

brummer10 commented 2 years ago

Currently exporting an LV2 UI also generates dummy code for its DSP side. Not sure why that is at all, but it makes this unusable as a "ready-to-go" solution.

That depends on what you want to do. For creating a new LV2 plug, this gives you the complete LV2 interface for the UI and the dsp engine side. Means you don't need to write any of the LV2 interaction, but just need to implement your dsp code. So the generated dsp isn't pseudo, but gives a ready to go plugin with inplace procession waiting for the plain math to do..

We can simply have the lv2 bundle provide only the UI,

True, for create a UI for a existing plug, the current generated bundle is suboptimal. Your suggestion is very welcome and I'll try to implement it as a option.

brummer10 commented 2 years ago

Hi So I've added a selector to select between save only the UI bundle, or save the complete LV2 bundle. When installed, the UI bundle could indeed replace the original UI, unfortunately it seems to work only seamless , when the original UI is as well a X11UI. Otherwise the original ttl file needs to be edited.

brummer10 commented 2 years ago

Ah, so I found the correct syntax for the manifest file to make the UI work, even when the original LV2 plug didn't have a UI, or use a other toolkit to provide a UI. So we are now able to create, make and install a replacement UI without any editing is needed. Nice!!

falkTX commented 2 years ago

Yeah LV2 allows this because we can just extend information about objects in the "world" (in the lv2/ttl sense) Sadly we cant modify/add stuff to lv2 plugin ports, because they dont have a global URI

brummer10 commented 1 year ago

This is done since some time, close now.