XUIDesigner v0.2

Discuss anything new and newsworthy! See http://planet.linuxaudio.org and https://libreav.org/news for more Linux Audio News!

Announcements of proprietary software may fit better in the Marketplace.


Moderators: raboof, MattKingUSA, khz

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

XUIDesigner v0.2

Post by tramp »

This is the first (beta) release of XUIDesigner.

Provide a easy to use GUI generator tool to create LV2 plug bundles.
Control widgets could be created and moved freely around in the top Window, or, a grid could be displayed and widgets could snap to grid (left, right, Center) to order them easily. Control widgets could be grouped in a frame or a tab box and then the complete group could be moved to the final position in the Window. Any control widget could be replaced with a other control widget, so for example a Toggle Button could be replaced with a ComboBox, or a Knob could be replaced with a slider, or . . You could set the range for a controller, and it's default value, You could create enums for a ComboBox, . .
The project settings window allow to setup the specs (like Author name, URI, Audio/Midi ports, etc.) for your plugin. XUIDesigner save the bundle in a git repository format, contain a working LV2 plugin bundle with all needed resources (ttl files, converted C files from used images, etc.) and build files to build, install and run it. All you need to do to finish your plug is, implement your DSP part.


project page:

https://github.com/brummer10/XUiDesigner

Release:

https://github.com/brummer10/XUiDesigne ... s/tag/v0.2


regards

hermann
On the road again.
sjaehn
Established Member
Posts: 138
Joined: Fri May 03, 2019 6:05 pm
Has thanked: 29 times
Been thanked: 61 times

Re: XUIDesigner v0.2

Post by sjaehn »

Wow, cool. The UI is one of the hurdles for making LV2 plugins. I think that this tool will facilitate this part of creating plugins. I'll take my eyes on it :D
tramp
Established Member
Posts: 2328
Joined: Mon Jul 01, 2013 8:13 am
Has thanked: 9 times
Been thanked: 450 times

Re: XUIDesigner v0.2

Post by tramp »

I hope it will be useful.

I've put some work in it, and now, in the git version we are able to create a UI-Bundle which is able to provide/replace a UI for a existing LV2 plug without any further editing needed. Just create, save, make and make install.
On the road again.
Rodney
Established Member
Posts: 231
Joined: Mon May 28, 2018 3:56 pm
Has thanked: 9 times
Been thanked: 14 times

Re: XUIDesigner v0.2

Post by Rodney »

Brummer you are incredible! Always bringing incredible stuff. I definitely want to create my own plugins using already existing gx's. Just bundle them in one package.

Definitely checking it out

Thanks a bunch!
tramp
Established Member
Posts: 2328
Joined: Mon Jul 01, 2013 8:13 am
Has thanked: 9 times
Been thanked: 450 times

Re: XUIDesigner v0.2

Post by tramp »

Here is a little, working example I made for my own use:
Image
It is plainly generated by XUiDesigner, I just load some images for the background and the knob, arrange the controller a little by drag n' drop and save the UI-Bundle. After install it (make && make install), it just works as if it comes with the LV2 Convolution Mono package.
On the road again.
j_e_f_f_g
Established Member
Posts: 2032
Joined: Fri Aug 10, 2012 10:48 pm
Been thanked: 357 times

Re: XUIDesigner v0.2

Post by j_e_f_f_g »

Just out of curiosity, does it scale the images according to the monitor display resolution? For example, if you use an 8K monitor, does it scale the images larger so that they aren't displayed as tiny controls you need tweezers to operate?

Author of BackupBand at https://sourceforge.net/projects/backupband/files/
My fans show their support by mentioning my name in their signature.

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

Re: XUIDesigner v0.2

Post by tramp »

True, it didn't have SVG support (for now, already had a look into nanosvg ), but you could scale any part of the UI when work in the XUiDesigner, and the resulting LV2 GUI is scalable as well during runtime. So, yes, the images will be scaled to any size you request.
On the road again.
j_e_f_f_g
Established Member
Posts: 2032
Joined: Fri Aug 10, 2012 10:48 pm
Been thanked: 357 times

Re: XUIDesigner v0.2

Post by j_e_f_f_g »

So you're saying that you have to take your target resolution into consideration during the design phase, and manually scale the controls then? After that, the controls don't scale based upon resolution?

If so, that could be a problem with useability if you want to make a GUI that can be operated on a standard VGA resolution, as well as a HD (4K or 8K) resolution monitor.

Author of BackupBand at https://sourceforge.net/projects/backupband/files/
My fans show their support by mentioning my name in their signature.

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

Re: XUIDesigner v0.2

Post by tramp »

j_e_f_f_g wrote: Thu Oct 21, 2021 7:56 pm So you're saying that you have to take your target resolution into consideration during the design phase, and manually scale the controls then? After that, the controls don't scale based upon resolution?

If so, that could be a problem with useability if you want to make a GUI that can be operated on a standard VGA resolution, as well as a HD (4K or 8K) resolution monitor.
As I said, the GUI is full scalable, so you could shrink/expand it at runtime to your needs.
But you are right, this could be done better. So I've now implemented support for LV2_UI__scaleFactor, which will scale the initial plugin UI size to the default given scale factor from the desktop, when the host support that (Ardour does).
On the road again.
sjaehn
Established Member
Posts: 138
Joined: Fri May 03, 2019 6:05 pm
Has thanked: 29 times
Been thanked: 61 times

Re: XUIDesigner v0.2

Post by sjaehn »

tramp wrote: Fri Oct 22, 2021 4:38 am As I said, the GUI is full scalable, so you could shrink/expand it at runtime to your needs.
But you are right, this could be done better. So I've now implemented support for LV2_UI__scaleFactor, which will scale the initial plugin UI size to the default given scale factor from the desktop, when the host support that (Ardour does).
I think that @j_e_f_f_g wants to show the advantage of vectorized UIs (like .svg) over bitmap UIs. Yes, they are fully scalable. And still look good on extreme resolutions without getting pixelated or blurred. But it's a f***ing hard work to create skeuomorphic designs with it. From my POV, bitmap are an acceptable solution for the most scenarios. I also went this way with my B.Widgets.
j_e_f_f_g
Established Member
Posts: 2032
Joined: Fri Aug 10, 2012 10:48 pm
Been thanked: 357 times

Re: XUIDesigner v0.2

Post by j_e_f_f_g »

advantage of vectorized UIs
Yes, vector-based graphics tend to scale more asthetically than bitmaps. But as you point out, they require lots more effort to implement. Frankly, I don't think the effort is worth it for Tramp's purposes. (ie Creating a small UI toolkit for LV2 plugins).

I wasn't concerned about looks. It was all about useability. I'm fine with ugly controls that are easy to read and operate. (see BackupBand) But I can''t use a control that's so small I need a microscope just to determine its current state.

It sounds like tramp has already done what I was going to suggest - just shrink/stretch the bitmap, and damn the asthetics. Good enough. We're linux users. If we cared about looks over function, we'd be using Apple products.

Author of BackupBand at https://sourceforge.net/projects/backupband/files/
My fans show their support by mentioning my name in their signature.

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

Re: XUIDesigner v0.2

Post by tramp »

j_e_f_f_g wrote: Fri Oct 22, 2021 12:31 pm It sounds like tramp has already done what I was going to suggest - just shrink/stretch the bitmap, and damn the asthetics. Good enough. We're linux users.
And, by the way, images are just one way to create the controllers, by default everything is drawn directly (double buffered), respective the scale factor. So, no bluer or pixelate when using the defaults.
When I use images, I tend to use big enough ones, so that they get shrink for default sizes, then when you decrease the size, they are still smaller then the orig size which helps a lot to avoid pixelating. Also, I think cairo does a good job in aspect-less resizing.
But still, when I'm in the mod I'll implement SVG support via nanosvg.
On the road again.
tramp
Established Member
Posts: 2328
Joined: Mon Jul 01, 2013 8:13 am
Has thanked: 9 times
Been thanked: 450 times

Re: XUIDesigner v0.2

Post by tramp »

@sjaehn

I've a short look at BWidgets. Looks to me as if adding support for it in XUiDesigner will be fairly easy.
We just need to write a wrapper class and then could build the UI with BWidgets instead with libxputty.
Seems you've all aboard what is needed. Nice.
It was one of my goals to allow the use of different toolkits to build at least the plugin UI.
On the road again.
sjaehn
Established Member
Posts: 138
Joined: Fri May 03, 2019 6:05 pm
Has thanked: 29 times
Been thanked: 61 times

Re: XUIDesigner v0.2

Post by sjaehn »

tramp wrote: Fri Oct 22, 2021 1:25 pm @sjaehn

I've a short look at BWidgets. Looks to me as if adding support for it in XUiDesigner will be fairly easy.
We just need to write a wrapper class and then could build the UI with BWidgets instead with libxputty.
Seems you've all aboard what is needed. Nice.
It was one of my goals to allow the use of different toolkits to build at least the plugin UI.
Oh, I've never thought about this way. But yes, why not. Sounds rather easy. You aren't necessarily dependent on the TK you use.

I scheduled to take hands on B.Widgets within the next weeks. Although I use it for all my plugins, it still hasn't got an "official" API. This wasn't a problem yet as only I used it. So I'll do a break with tutorial video production within one of the next weeks have to make an official version. I think there won't be major changes in the core (Window, Widget, ...), but in some details (like themes).

Maybe also interesting for you to look at: RobTK (by x42), Redkite (by Iurie Nistor).
tramp
Established Member
Posts: 2328
Joined: Mon Jul 01, 2013 8:13 am
Has thanked: 9 times
Been thanked: 450 times

Re: XUIDesigner v0.2

Post by tramp »

So SVG support is on it's way. I implemented nanosvg into libxputty to add support for SVG images and convert https://github.com/user1095108/cairowidget to C to implement a direct layer from SVG to cairo. Fortunately cairowidget is licensed under the " Unlicense License " so I could use it freely under the BSD 0 License. To allow the inclusion of SVG images into the compiled binary I implement a base64 wrapper. (will push all that shortly)
@sjaehn feel free to use this as well to implement SVG support for BWidgets.
On the road again.
Post Reply