Building GUI without JUCE for plugins

Pedro Nonino's icon

Hello! Me (and I believe everyone else) would like to know if in the future there will be a way to create a custom GUI without JUCE.

It's still very unpractical and it takes a good amount of time (compared to how long it takes to build the RNBO part) to make the GUI using JUCE. Would be amazing if we could ever create our plugins and stuff without having to use it.

Alex Norman's icon

You can export the C++ code generated from your patch and build it into some other framework, but I'm guessing you're hoping for a no-code solution? All we have right now is the sliders setup per your patcher's param specs.

Pedro Nonino's icon

Yeah, exactly! No-coding plugins with a beautiful UI would be a dream for a lot of people coming true! That would probably disrupt the whole plugin industry...

I personally believe that having a way to implement JUCE GUI (something that looks like the GUI Editor on Projucer, but with the option to change colours, styles and etc) natively on RNBO would be an AWESOME feature that would make a lot of people stop using juce and use only RNBO. Just by enabling Max/MSP and Jitter stuff to be rendered inside the JUCE plugin would be awesome! I can't wait to make generative art and sound inside a plugin running on a DAW!

For me personally the goal and reason on why i'm using RNBO is to let JUCE alone and never again have to use it. It is a good framework, but it is absolutely terrible for anyone who is creative and don't want to spend hours and hours on the forum/discord and on their poorly written documentation, tutorials and etc...

Jan Larsson's icon

Almost the same question ... anyone here tried to use the RNBO C++ export code in Apples Xcode templates, using Swift, for building AUv3 with SwiftUI? I am about to try - so any warnings before I make a fool out of myself :-)

Dax's icon

@JanLarsson
Well I had that same idea, which I think is not out of this world. however my knowledge of C++ is, to be honest, not really good. However, I did find some interesting options to do so.
I found different approaches to let swift 'talk' to c++. there seems to be the 'normal' way using:
a Bridging Header file. kinda like what's described here.
https://anuragajwani.medium.com/how-to-consume-c-code-in-swift-b4d64a04e989

it explains the basics and it does work however, it is a lot of work to do it with an exported RNBO project.
and you need to know you way around C++ and ObjectiveC. I am still trying to make this work.

Then I found this interesting feature in swift itself. seemed like the way to go but I didn't get it to work yet. ( again, my knowledge of C++ is nil so perhaps other people might shed some light on this )

https://forums.swift.org/t/swift-and-c-interoperability-workgroup-announcement/54998

which seems the way to go however it is still in the early stage so it might not be stable. I have not yet get it to work but there is tutorial here:

https://github.com/apple/swift/blob/main/docs/CppInteroperability/GettingStartedWithC%2B%2BInterop.md

which I am trying to get working. this means there is no need to create a bridge header and if done correctly one should be able to call the c++ sliders from swift. which seems great.

so in the end, I agree that it would be great to use the exported code from RNBO and use it in a swift project so you can just create a slider in swift, connecting to the exported RNBO slider without the need to use an bridge header in ObjC

So my request would be to the RNBO team to publish a simple template like the JUCE one but using just the saw example with one slider, exported RNBO code, and a simple swift slider connecting to it.

in the meanwhile I am trying to make this, and when I get it to work I will publish this on GitHub and mention is here.

oh and wanted to also point out to this project, however I did not get to compile due to some things in the exported code from RNBO so I did not get it working yet.

https://github.com/scapix-com/scapix

also im sure that someone with more C++ skills and a real programmer background might get it to compile so a bridge will be generated with the correct ObjC code to use in swift.

Dax's icon

@janlarsson
Good news, here is a project template for Swift and RNBO :-)
Great work!
https://github.com/ceammc/SwiftRNBO