LV2 Dynamic Manifest

Programming applications for making music on Linux.

Moderators: MattKingUSA, khz

Post Reply
User avatar
peter.semiletov
Established Member
Posts: 119
Joined: Thu May 11, 2023 1:09 pm
Has thanked: 25 times
Been thanked: 82 times
Contact:

LV2 Dynamic Manifest

Post by peter.semiletov »

Hello!
I'm trying to find anything (working example, etc) about the subject, but alas! ( I found only https://lv2plug.in/c/html/group__dynmanifest.html
The thing is, if a can fill dynamically lv2:portProperty lv2:enumeration, I'll make Drumrox usable without it famous GTK-based GUI at any LV2 host.

tramp
Established Member
Posts: 2348
Joined: Mon Jul 01, 2013 8:13 am
Has thanked: 9 times
Been thanked: 468 times

Re: LV2 Dynamic Manifest

Post by tramp »

Be aware that those extension have nothing to do with "create dynamic ports or port values or enum entry's". Those is a extension which allow to create virtual manifest.ttl files during world.load(). By the way most hosts I'm aware of disabled this extension because it tend to lead to crash the host during plugin scan.

What you are looking for is the use of atom parameters. Those allow you to recreate the entry's of a enum or the range of a controller during run time and dismiss the need to fill the lv2:portProperty lv2:enumeration at all.
There is no magic done by GTK in that regard.
If you want to have a look at some source which recreate enum controller entry's during runtime, check out Fluida, for example. It recreate a combobox with entry's each time you load a new soundfont to cover the loaded soundfont. In the ttl file just the parameter is announced, no range, no entry's. I guess that's what you are after.

On the road again.
User avatar
peter.semiletov
Established Member
Posts: 119
Joined: Thu May 11, 2023 1:09 pm
Has thanked: 25 times
Been thanked: 82 times
Contact:

Re: LV2 Dynamic Manifest

Post by peter.semiletov »

tramp wrote: Tue Jul 11, 2023 6:28 pm

If you want to have a look at some source which recreate enum controller entry's during runtime, check out Fluida, for example. It recreate a combobox with entry's each time you load a new soundfont to cover the loaded soundfont. In the ttl file just the parameter is announced, no range, no entry's. I guess that's what you are after.

Yes, thanks a lot!!!
Also, to drop GTK, I'm trying libxputty.

tramp
Established Member
Posts: 2348
Joined: Mon Jul 01, 2013 8:13 am
Has thanked: 9 times
Been thanked: 468 times

Re: LV2 Dynamic Manifest

Post by tramp »

peter.semiletov wrote: Tue Jul 11, 2023 7:34 pm

Also, to drop GTK, I'm trying libxputty.

Ha, I've done libxputty to have a replacement for the guitarix LV2 GTK UI's. :)
If something becomes unclear while using it, just ask, I guess I could help you out then.

On the road again.
User avatar
peter.semiletov
Established Member
Posts: 119
Joined: Thu May 11, 2023 1:09 pm
Has thanked: 25 times
Been thanked: 82 times
Contact:

Re: LV2 Dynamic Manifest

Post by peter.semiletov »

tramp wrote: Wed Jul 12, 2023 9:39 am

Ha, I've done libxputty to have a replacement for the guitarix LV2 GTK UI's. :)
If something becomes unclear while using it, just ask, I guess I could help you out then.

Oh, I didn't know that libxputty is your creation! Cool )
Yes, I have some questions. How is better to use it with CMake? Am I need to link static or dynamically? To include libxputty to the source tree or depend on "external" install? (for example, I found libxputty at AUR, but how it spreaded over other distros?)

tramp
Established Member
Posts: 2348
Joined: Mon Jul 01, 2013 8:13 am
Has thanked: 9 times
Been thanked: 468 times

Re: LV2 Dynamic Manifest

Post by tramp »

peter.semiletov wrote: Wed Jul 12, 2023 1:04 pm

Yes, I have some questions. How is better to use it with CMake?

Ups, I never used CMake, I always using plain make.

peter.semiletov wrote: Wed Jul 12, 2023 1:04 pm

Am I need to link static or dynamically?

Both is supported, but for plugins I would go for static linking.

peter.semiletov wrote: Wed Jul 12, 2023 1:04 pm

To include libxputty to the source tree or depend on "external" install?

I use it always as a submodule in a git repository. That makes it easy for me to update libxputty when needed.

Code: Select all

git submodule add https://github.com/brummer10/libxputty.git
git submodule update --init

when you checked Fluida, there is a makefile in the top directory which ensure that libxputty was build before the other source get build, so static linking will work flawless.
in the makefile for the project I then could set the path to libxputty.a and the needed include files.
https://github.com/brummer10/Fluida.lv2 ... kefile#L37
and set the needed linker flags
https://github.com/brummer10/Fluida.lv2 ... kefile#L48

On the road again.
User avatar
peter.semiletov
Established Member
Posts: 119
Joined: Thu May 11, 2023 1:09 pm
Has thanked: 25 times
Been thanked: 82 times
Contact:

Re: LV2 Dynamic Manifest

Post by peter.semiletov »

tramp wrote: Wed Jul 12, 2023 1:34 pm

I use it always as a submodule in a git repository. That makes it easy for me to update libxputty when needed.

Thank you for an answer, I'll try!

Post Reply