XUiDesigner v0.5 released

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: 2335
Joined: Mon Jul 01, 2013 8:13 am
Has thanked: 9 times
Been thanked: 454 times

Re: XUiDesigner v0.5 released

Post by tramp »

LinMusGuy wrote: Mon Sep 12, 2022 9:11 am Do you happen to know whether there exists a free online LV2-host (maybe as part of another online program) that also works for Windows users?
I'm not, sorry. There was a server running from moddevices but that one is currently offline. Anyway, running a LV2 plug in a server needs some special treatment when building the plug, and requires a special UI. UI's generated by XUiDesigner wouldn't be able to run in a server.
On the road again.
User avatar
LinMusGuy
Established Member
Posts: 551
Joined: Wed Feb 27, 2019 9:33 pm
Has thanked: 22 times
Been thanked: 2 times

Re: XUiDesigner v0.5 released

Post by LinMusGuy »

Maybe there is a DAW than that has a Windows version that accepts LV2 plugins?
tramp
Established Member
Posts: 2335
Joined: Mon Jul 01, 2013 8:13 am
Has thanked: 9 times
Been thanked: 454 times

Re: XUiDesigner v0.5 released

Post by tramp »

Yes, there is reaper, ardour and Ildaeil (by falktx) to name a few. Falktx provide binary's for linux macos and windows here:
https://github.com/DISTRHO/Ildaeil/releases/tag/v1.0
the others been easy to find by web search.
On the road again.
tramp
Established Member
Posts: 2335
Joined: Mon Jul 01, 2013 8:13 am
Has thanked: 9 times
Been thanked: 454 times

XUiDesigner v0.7 released

Post by tramp »

XUiDesigner v0.7 released

A easy to use tool to generator/design X11 based LV2 plugins.
Beside that XUiDesigner allow to generate and install GUI's for existing LV2 plugins, it support as well to generate LV2 plugins from scratch.
Special support is implemented for FAUST dsp files, which allow you to generate a LV2 plugin with X11 based UI by just drag'n'drop a FAUST dsp file into the XUiDesigner interface. This works now as well for MIDI capable faust modules.
In any way, you don't need to interference with any of the annoying LV2 implementations. XUiDesigner handle that all for you.
The very same is true when you like to implement your own dsp (C or C++) into a LV2 plugin. You could create the GUI interface, save the plugin bundle, and implement the needed calls to init, activate and run your dsp.
This release comes with a couple of Bug-fixes and aims to be nearly stable.
Here is a introduction Wiki entry to show the first steps.

New in this release:
implement interim save format (json)

(Allow to load and rework the generated UI in XUiDesigner at any time)

Project page:

https://github.com/brummer10/XUiDesigner


Download Release:

https://github.com/brummer10/XUiDesigne ... 0.7.tar.gz

Enjoy anyway.
On the road again.
User avatar
LinMusGuy
Established Member
Posts: 551
Joined: Wed Feb 27, 2019 9:33 pm
Has thanked: 22 times
Been thanked: 2 times

Re: XUiDesigner v0.5 released

Post by LinMusGuy »

Some more testing (on Linux Mint):

- FunnyLoop1 works with its XUiDesigner made GUI in Carla.
- FunnyLoop1 works with its XUiDesigner made GUI in Jalv.
- FunnyLoop1 works in Reaper, but there is no GUI.

FunnyLoop1 appears in the LV2 list of Reaper, but not in the LV2i list. Could that be the problem?
tramp
Established Member
Posts: 2335
Joined: Mon Jul 01, 2013 8:13 am
Has thanked: 9 times
Been thanked: 454 times

Re: XUiDesigner v0.5 released

Post by tramp »

I just did a quick test in reaper and it works here:
Image

I really didn't know, it may be that reaper didn't like additional UI's, means in a separated package. It's still LV2 standard to do so, but, as far I remember reaper implemented there own LV2 parser so it may fail between the lines.
So you may try what happen when you parse your faust file directly within XUiDesigner and generate the complete package at once instead create a extra GUI package. (Still you could rework the UI later by load the json file)
In case you didn't like the polyphony controller, just delete it from the UI before save first time. That didn't harm.
On more plus doing it this way is that the ttl descriptor provide the correct information about controllers in case you switch the controller (toggle button to simple button for example) so that the generic UI provided by reaper could display the correct controller for that port.
One more point in doing it this way is, when I implemented support for display a virtual keyboard on the plugin UI, the complete plugin must be in one package, because it requires a additional port which cant be added afterwards.
On the road again.
User avatar
LinMusGuy
Established Member
Posts: 551
Joined: Wed Feb 27, 2019 9:33 pm
Has thanked: 22 times
Been thanked: 2 times

Re: XUiDesigner v0.5 released

Post by LinMusGuy »

I don't quite understand what you mean. Should I do the following?:

- Drop the dsp file in XUiDesigner.
- Save as Full Plugin-Bundle.
- Change the GUI if you like to.
- Do "make" and afterwards "make install" in the Command Line from the top directory of FunnyLoop1_ui.
tramp
Established Member
Posts: 2335
Joined: Mon Jul 01, 2013 8:13 am
Has thanked: 9 times
Been thanked: 454 times

Re: XUiDesigner v0.5 released

Post by tramp »

Yes. That allow to create UI and plugin into one single bundle.
Don't forget to declare nvoices in the dsp file when you need midi support.
If you would change a controller to a other type, you best do it before save the first time. The same is true when you would remove a controller. You could do it afterwards, but then, the descriptor in the ttl may not match (not a big problem, but cosmetic).
On the road again.
User avatar
LinMusGuy
Established Member
Posts: 551
Joined: Wed Feb 27, 2019 9:33 pm
Has thanked: 22 times
Been thanked: 2 times

Re: XUiDesigner v0.5 released

Post by LinMusGuy »

For this GUI:
this.png
this.png (18.01 KiB) Viewed 1045 times
I did:
vote.png
vote.png (17.47 KiB) Viewed 1045 times

But then "make" in the Command Line ends in errors:

Code: Select all

FunnyLoop1.cpp:37:17: error: ‘Dsp’ in namespace ‘funnyloop1’ does not name a type
   37 |     funnyloop1::Dsp* plugin;
      |                 ^~~
FunnyLoop1.cpp: In constructor ‘funnyloop1::Xfunnyloop1::Xfunnyloop1()’:
FunnyLoop1.cpp:71:5: error: class ‘funnyloop1::Xfunnyloop1’ does not have any field named ‘plugin’
   71 |     plugin(funnyloop1::plugin()) {};
      |     ^~~~~~
FunnyLoop1.cpp:71:24: error: ‘plugin’ is not a member of ‘funnyloop1’; did you mean ‘FunnyLoop1::plugin’?
   71 |     plugin(funnyloop1::plugin()) {};
      |                        ^~~~~~
In file included from FunnyLoop1.cpp:17:
FunnyLoop1.cc:137:6: note: ‘FunnyLoop1::plugin’ declared here
  137 | Dsp *plugin() {
      |      ^~~~~~
FunnyLoop1.cpp: In destructor ‘funnyloop1::Xfunnyloop1::~Xfunnyloop1()’:
FunnyLoop1.cpp:75:5: error: ‘plugin’ was not declared in this scope; did you mean ‘FunnyLoop1::plugin’?
   75 |     plugin->del_instance(plugin);
      |     ^~~~~~
      |     FunnyLoop1::plugin
In file included from FunnyLoop1.cpp:17:
FunnyLoop1.cc:137:6: note: ‘FunnyLoop1::plugin’ declared here
  137 | Dsp *plugin() {
      |      ^~~~~~
FunnyLoop1.cpp: In member function ‘void funnyloop1::Xfunnyloop1::init_dsp_(uint32_t)’:
FunnyLoop1.cpp:82:5: error: ‘plugin’ was not declared in this scope; did you mean ‘FunnyLoop1::plugin’?
   82 |     plugin->init(rate);
      |     ^~~~~~
      |     FunnyLoop1::plugin
In file included from FunnyLoop1.cpp:17:
FunnyLoop1.cc:137:6: note: ‘FunnyLoop1::plugin’ declared here
  137 | Dsp *plugin() {
      |      ^~~~~~
FunnyLoop1.cpp: In member function ‘void funnyloop1::Xfunnyloop1::run_dsp_(uint32_t)’:
FunnyLoop1.cpp:129:9: error: ‘bypass_’ was not declared in this scope; did you mean ‘bypass’?
  129 |     if (bypass_ != static_cast<uint32_t>(*(bypass))) {
      |         ^~~~~~~
      |         bypass
FunnyLoop1.cpp:129:42: error: no match for ‘operator*’ (operand type is ‘PortIndex’)
  129 |     if (bypass_ != static_cast<uint32_t>(*(bypass))) {
      |                                          ^~~~~~~~~
FunnyLoop1.cpp:130:41: error: no match for ‘operator*’ (operand type is ‘PortIndex’)
  130 |         bypass_ = static_cast<uint32_t>(*(bypass));
      |                                         ^~~~~~~~~
FunnyLoop1.cpp:142:9: error: ‘plugin’ was not declared in this scope; did you mean ‘FunnyLoop1::plugin’?
  142 |         plugin->compute(n_samples, output1);
      |         ^~~~~~
      |         FunnyLoop1::plugin
In file included from FunnyLoop1.cpp:17:
FunnyLoop1.cc:137:6: note: ‘FunnyLoop1::plugin’ declared here
  137 | Dsp *plugin() {
      |      ^~~~~~
FunnyLoop1.cpp: In member function ‘void funnyloop1::Xfunnyloop1::connect_all__ports(uint32_t, void*)’:
FunnyLoop1.cpp:154:5: error: ‘plugin’ was not declared in this scope; did you mean ‘FunnyLoop1::plugin’?
  154 |     plugin->connect(port,data);}
      |     ^~~~~~
      |     FunnyLoop1::plugin
In file included from FunnyLoop1.cpp:17:
FunnyLoop1.cc:137:6: note: ‘FunnyLoop1::plugin’ declared here
  137 | Dsp *plugin() {
      |      ^~~~~~
make[1]: *** [makefile:97: FunnyLoop1] Error 1
make[1]: Leaving directory '/home/nameless/Desktop/FunnyLoop1_ui/FunnyLoop1'
make: *** [makefile:13: FunnyLoop1] Error 2
tramp
Established Member
Posts: 2335
Joined: Mon Jul 01, 2013 8:13 am
Has thanked: 9 times
Been thanked: 454 times

Re: XUiDesigner v0.5 released

Post by tramp »

LinMusGuy wrote: Tue Sep 13, 2022 6:12 pm FunnyLoop1.cpp:37:17: error: ‘Dsp’ in namespace ‘funnyloop1’ does not name a type
37 | funnyloop1::Dsp* plugin;
Ah, the issue is in the declared name,
declare name "Funny Loop";
contain a white-space.
rename it to
declare name "funnyloop";
or
declare name "funny_loop";
will make it work.
In the mean time I'll investigate to support white-space in names.
On the road again.
User avatar
LinMusGuy
Established Member
Posts: 551
Joined: Wed Feb 27, 2019 9:33 pm
Has thanked: 22 times
Been thanked: 2 times

Re: XUiDesigner v0.5 released

Post by LinMusGuy »

Changing "Funny Loop" into "funnyloop" doesn't help, "make" still ends in errors.

I'm using this dsp file now:

Code: Select all

declare name "funnyloop";

import("maths.lib");
import("filters.lib");

var    = 10^7*(hslider("variation", 0.20, 0.05, 0.25, 0.001))^4;
vol    = 0.1*(hslider("volume", 0.5, 0, 1, 0.0001))^2;
start  = 0.01*button("start");
pol     = 1 - ( 2 - hslider("sway", 0.25, 0.01, 0.5, 0.0001) )*button("restart");

A = _ , start :> _*-1 : _ ;
B = _ : _*var : atan : pole(pol) : _*var : atan : pole(pol) : _*var : _ ;
C = A~B ;
process = C : atan : _*vol <: _,_ ;
tramp
Established Member
Posts: 2335
Joined: Mon Jul 01, 2013 8:13 am
Has thanked: 9 times
Been thanked: 454 times

Re: XUiDesigner v0.5 released

Post by tramp »

Okay, I've fixed the issue, except the one for the white-space. That will come later.
But, after update, your funnyloop.dsp should work now when dropped on XUiDesigner.

I can confirm that Reaper refuse to load UI's from a extra bundle.
On the road again.
User avatar
LinMusGuy
Established Member
Posts: 551
Joined: Wed Feb 27, 2019 9:33 pm
Has thanked: 22 times
Been thanked: 2 times

Re: XUiDesigner v0.5 released

Post by LinMusGuy »

No - can't get the Full Plugin-Bundle to work properly in Reaper, Carla or Jalv. And the volume knob jumps to 0 when I try to move it.
User avatar
LinMusGuy
Established Member
Posts: 551
Joined: Wed Feb 27, 2019 9:33 pm
Has thanked: 22 times
Been thanked: 2 times

Re: XUiDesigner v0.5 released

Post by LinMusGuy »

I get a fully working FunnyLoop1 plugin complete with the XUiDesigner made GUI in Reaper when I put Ildaeil-Synth in a track on Reaper and load FunnyLoop1 in Ildaeil-Synth. Thus:
Reaper.png
Reaper.png (137.36 KiB) Viewed 966 times
lv2.png
lv2.png (28.49 KiB) Viewed 966 times
User avatar
LinMusGuy
Established Member
Posts: 551
Joined: Wed Feb 27, 2019 9:33 pm
Has thanked: 22 times
Been thanked: 2 times

Re: XUiDesigner v0.5 released

Post by LinMusGuy »

The FunnyLoop1 plugin (in the two maps version) is also working now complete with the XUiDesigner made GUI in LMMS when I open it in Carla Rack in LMMS.

Is the virtual keyboard for XUiDesigner made GUI's already available?
Post Reply