Skip to content

External UI extension (example included) #42

@SanderVocke

Description

@SanderVocke

Hi there,

First of all: thanks for this nice library!

I would like to integrate plugin hosting support into my application. To me, a nice "shortcut" to achieve this would be to use livi to load Carla (Carla-Rack) plugin host as a LV2 plugin. Carla can then in turn load one or more plugins of different kinds, achieving broad plugin hosting support.

I already had this working in C++, but moving to Rust (and your library) seems much nicer.

The main extension that Carla needs to work is external UI (https://kx.studio/ns/lv2ext/external-ui).

Rather than forking your repo, I made a barebones example repository using livi with additional code to achieve this ui support: https://github.com/SanderVocke/livi-external-ui/tree/master/livi-external-ui

It is not very complicated and there is an example included (cargo run --example basic) which loads Carla-rack, opens the GUI and processes repeatedly.

For the moment I will continue to build that out to a full hosting solution (possibly with a IPC sandboxing option). But I hope you would consider moving UI support (including this external UI) into your library. If so, my reference implementation could serve as a good example, although you may want to change the API design and architecture. The tricky bit there is that the UI instance may need to communicate back to the plugin instance - ideally this would be hidden to the livi user, but it creates some lifetime, visibility and threading concerns.

I wonder what you think.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions