GUI: JUCE ?

Programming applications for making music on Linux.

Moderators: MattKingUSA, khz

jonetsu
Established Member
Posts: 2036
Joined: Sat Jun 11, 2016 12:05 am
Has thanked: 10 times
Been thanked: 22 times

GUI: JUCE ?

Post by jonetsu »

Just looking for a simple GUI toolkit that's C++ friendly. Doesn't really need to be multiplatform, although if it is it's OK. One that immediately pops up is JUCE. But, from their download page, the free version will always display a "Made with JUCE" splash screen. The paid version at $35/month or $700/one time will not. Hmmm. If OBXD is made using JUCE, does it mean that whoever made OBXD paid that fee ?

From the outlook, paying that much is really out of the question.

What other modern GUI(s) is(are) out there, that is not Qt nor GTK, and is simple to get into ?

Cheers.

UPDATE Found Nana, which seems reasonably good. Not specific to multimedia apps though, but that's OK. Last update in April 2019, so it's active. And supports c++11/17.

Screenshots:
https://github.com/cnjinhao/nana/wiki/U ... using-Nana

Web page:
http://nanapro.org/en-us/
CrocoDuck
Established Member
Posts: 1133
Joined: Sat May 05, 2012 6:12 pm
Been thanked: 17 times

Re: GUI: JUCE ?

Post by CrocoDuck »

If it is for audio plugins, you might run into problems with how it embeds in a DAW. I think GTK is known to have issues, for example, and QT too I think. Take a look at this: http://openavproductions.com/avtk/
jonetsu
Established Member
Posts: 2036
Joined: Sat Jun 11, 2016 12:05 am
Has thanked: 10 times
Been thanked: 22 times

Re: GUI: JUCE ?

Post by jonetsu »

Thanks. I have indeed no idea about what's involved in using a GUI for a plugin eg. what issues there can be. For now, I consider that there should be no problems since the host does not have anything to do with the GUI of the plugin, I think at the moment. I might be very wrong.

And yes, it could be a good thing if it allows for making plugins.

I took a look and it does not 'look' convincing. I mean, if it got that spartan look and feel because of compatibility issues or saying it the other way around, to provide a better incorporation into a host, then what about all and every plugin there are out there that runs very well with such sophisticated GUI ? The more sophisticated, the more problems ? Hmm.

I'll keep the link although so 'far' (in such a short time) I tend to prefer a GUI toolkit/library that openly states its compatibility in principle with specifically C++11/17. I'd be just toying around, no plugin project in sight, for starters.

Cheers.
rghvdberg
Established Member
Posts: 1067
Joined: Mon May 12, 2014 7:11 am
Has thanked: 15 times
Been thanked: 36 times

Re: GUI: JUCE ?

Post by rghvdberg »

If a plugin uses gtk or qt or any other big toolkits it undoubtedly will clash with the daw. Ardour will probably blacklist the plugin for example
My plugin crashed ardour because I linked against aubio 4 and ardour uses aubio 3. Now this is a small library and falktx helped me link it statically. So that was solved

Anyway, check out DPF, that will do what you need and is perfectly safe.
And no nasty tracking / licensing etc ;-)
And made by falkTX of kxstudio fame.

https://github.com/DISTRHO/DPF
CrocoDuck
Established Member
Posts: 1133
Joined: Sat May 05, 2012 6:12 pm
Been thanked: 17 times

Re: GUI: JUCE ?

Post by CrocoDuck »

jonetsu wrote:For now, I consider that there should be no problems since the host does not have anything to do with the GUI of the plugin, I think at the moment. I might be very wrong.
I do not know about the details, but you could check a presentation done by AVTK main developer a few years ago.
jonetsu wrote:I took a look and it does not 'look' convincing. I mean, if it got that spartan look and feel because of compatibility issues or saying it the other way around, to provide a better incorporation into a host, then what about all and every plugin there are out there that runs very well with such sophisticated GUI ? The more sophisticated, the more problems ? Hmm.
It is not about the look itself, but about the underlying implementation. As far as I am aware, many if not most plugin developers end up writing their own mini-kit.
jonetsu
Established Member
Posts: 2036
Joined: Sat Jun 11, 2016 12:05 am
Has thanked: 10 times
Been thanked: 22 times

Re: GUI: JUCE ?

Post by jonetsu »

CrocoDuck wrote: It is not about the look itself, but about the underlying implementation. As far as I am aware, many if not most plugin developers end up writing their own mini-kit.
At least that's what they say.
User avatar
Michael Willis
Established Member
Posts: 1450
Joined: Mon Oct 03, 2016 3:27 pm
Location: Rocky Mountains, North America
Has thanked: 68 times
Been thanked: 162 times
Contact:

Re: GUI: JUCE ?

Post by Michael Willis »

rghvdberg wrote: Anyway, check out DPF, that will do what you need and is perfectly safe.
And no nasty tracking / licensing etc ;-)
And made by falkTX of kxstudio fame.

https://github.com/DISTRHO/DPF
DPF is very minimalist and doesn't really come with many GUI elements; it only has some basic things like dials, sliders, images, font rendering, etc. I don't think it has much at all in the way of layout management.

I first considered using Juce for Dragonfly Reverb, but it seemed way more heavyweight and complicated than I wanted to deal with. As a minimalist myself, I find that I really like using DPF for my project. However somebody who wants a GUI toolkit with more features might be dissatisfied.

I believe that there is some way to use an additional graphical toolkit with DPF. I think that's how zyn-fusion is implemented, so you could take a look at that.
User avatar
sadko4u
Established Member
Posts: 986
Joined: Mon Sep 28, 2015 9:03 pm
Has thanked: 2 times
Been thanked: 359 times

Re: GUI: JUCE ?

Post by sadko4u »

The choice of toolkit is very important thing for plugin developers.
For LSP, I've been required to rewrite all my widgets from GTK2 to native X11 implementation.
Around half a year was spent to develop custom controls under GTK. But the time spent for the GTK implementation wasn't so noticeable because the UI evolved with DSP code simultaneously.
The real cost of my wrong decision I was able to estimate only after I've completed the toolkit library with all it's features.
And according my obervations, the full implementation of a toolkit took around a half year, too. So the half of the year was lost only for the UI changes.
LSP (Linux Studio Plugins) Developer and Maintainer.
User avatar
mike@overtonedsp
Established Member
Posts: 145
Joined: Mon Apr 24, 2017 5:26 pm
Location: Oxford, England
Been thanked: 55 times
Contact:

Re: GUI: JUCE ?

Post by mike@overtonedsp »

I built an X11 graphics engine / framework, together with all the control widgets, dialogues, etc (because X doesn't provide any of that) and an openGL renderer on top of it (including all the shaders and everything that goes with that). (I also built my DSP libraries - from the ground up - including 'stock' things like FFT filters etc, because I wanted to keep the code concise and dependencies to a minimum, which is essential if you want your code to run on anyone else's machine other than your own - especially with Linux).

Good luck - building plug-ins is not trivial...
jonetsu
Established Member
Posts: 2036
Joined: Sat Jun 11, 2016 12:05 am
Has thanked: 10 times
Been thanked: 22 times

Re: GUI: JUCE ?

Post by jonetsu »

Thanks for all comments so far. I'm really new to trying to build audio apps and I consider this only as exploration, or fun.

I have read a bit more about JUCE so I can answer a question I've asked: It is possible to avoid the splash screen if the plugin/app is open source. It is also possible to commercially sell plugins/apps without paying for JUCE if the splash screen is shown and if revenues are below 50K. That was commented by Jules in 2017 in a thread in the JUCE forum. OTOH it also seems that the app will be sending stats to JUCE at the same time the splash screen is shown, which is not that nice for users.

This said, since I'm totally new to this I am not contemplating at all building my own toolkit at the moment. If I ever get to the unplanned stage of having a cool plugin/app to share, it'll be very probably open source first.

I understand why many seems to make their own toolkit (u-he and Melda for instance, probably everybody else - actually are there 'big time' plugins made with JUCE ?) as they optimize many aspects of the performance, along with providing a signature look and feel.

As for me, I never really did any UI coding, so this is all new. Did one UI once and I liked it a lot, using Perl and Prima, for making a project build app for developers to use in building projects. So I want to keep it simple for starters, as there's so many things to grok.

For this reason I think I would go with JUCE at the moment, to get a good sense of all various components needed to get something (rock and) rolling. The amount of support of all kind that's provided out there is impressive for a newbie.

If I ever reach a point like sadko4u at which I would actually get a real project going on, then I'll reconsider as to not make the same mistake and having to redo the UI part (thanks for the comment).

DPF seems interesting for providing many basic utility audio methods.

Cheers.
User avatar
sadko4u
Established Member
Posts: 986
Joined: Mon Sep 28, 2015 9:03 pm
Has thanked: 2 times
Been thanked: 359 times

Re: GUI: JUCE ?

Post by sadko4u »

If you have problems with UI and you don't worry about it's current portability to MacOS and Windows, you may join the LSP Project.

For most of plugins you don't even need to code your UI stuff. You just declare an XML file and port bindings like this:
https://github.com/sadko4u/lsp-plugins/ ... 6/mono.xml

And you get your UI fully functionable:
https://lsp-plug.in/img/plugins/para_eq ... 6_mono.png

The only thing you need is to write the proper DSP code, declare plugin metadata and build it all together (automatically).
LSP (Linux Studio Plugins) Developer and Maintainer.
jonetsu
Established Member
Posts: 2036
Joined: Sat Jun 11, 2016 12:05 am
Has thanked: 10 times
Been thanked: 22 times

Re: GUI: JUCE ?

Post by jonetsu »

Thanks sadko4u, although my first interest is to get a handle on using a UI toolkit/library with C++ code. Then I thought while at it, I might as well choose such a toolkit that's also known for supporting audio development, like interfacing to jackd for instance. So I will get into exploring UIs and its incorporation into design patterns and as a bonus it will also be audio friendly.

The LSP project is quite interesting regarding software development though, with proven functional aspects. I might take a closer look when I'll get some chops regarding designing with a UI, and be ready for actual audio development.

Meanwhile, are there resources about getting to write DSP code ? Apart from source code such as the one included in LSP. Like, overview and theory ?

UPDATE: Although I read some KVR forum sections, never noticed before that they do have a DSP section with links for beginners.
User avatar
sadko4u
Established Member
Posts: 986
Joined: Mon Sep 28, 2015 9:03 pm
Has thanked: 2 times
Been thanked: 359 times

Re: GUI: JUCE ?

Post by sadko4u »

jonetsu wrote:Meanwhile, are there resources about getting to write DSP code ? Apart from source code such as the one included in LSP. Like, overview and theory ?

UPDATE: Although I read some KVR forum sections, never noticed before that they do have a DSP section with links for beginners.
I think the best book to start with, is DSP book from Steven Smith. Very easy for those who haven't deal with DSP before.
It's available online on the official Steven Smith's site: http://www.dspguide.com/pdfbook.htm

According to the LSP architecture, there's a short description available here:
https://github.com/sadko4u/lsp-plugins/ ... -425574841
LSP (Linux Studio Plugins) Developer and Maintainer.
jonetsu
Established Member
Posts: 2036
Joined: Sat Jun 11, 2016 12:05 am
Has thanked: 10 times
Been thanked: 22 times

Re: GUI: JUCE ?

Post by jonetsu »

Thanks. Looks quite useful and especially the LSP architecture diagrams with its sequence diagrams.

Actually that's really good and concise documentation. Thanks for documenting your project in such a way.

Cheers.
rghvdberg
Established Member
Posts: 1067
Joined: Mon May 12, 2014 7:11 am
Has thanked: 15 times
Been thanked: 36 times

Re: GUI: JUCE ?

Post by rghvdberg »

ftr DPF has a graphics toolkit built in but minimalistic.
Post Reply