JUCE without JUCE window but with own window implementation for GUI. It is possible?

Can I create JUCE audio plugin without use JUCE windowing system and use some external instead? For example GLFW or Windows GUI?

1 Like

Nobody knows?

It’s probably possible in some manner but the question is “why would you want to do it”?

If you really want to be doing a plugin without Juce’s GUI facilities, you could probably just as well not use Juce at all, even for the audio parts. You could for example use the Steinberg VST3 SDK. You would still need to figure out how to interoperate with your GUI solution using it, but you’d need to do that with Juce too. You couldn’t completely avoid using Juce’s GUI code since the plugin formats wrapper code expects the GUI editor to inherit from AudioProcessorEditor which in turn inherits from Component etc.

IPlug2 could be another possibility as a plugin framework, it’s apparently been designed to more easily work with different GUI libraries. It however isn’t “production ready”.

Tahnks for answer.

“why would you want to do it”?

because I know gui framework and want use it in VST development and save time with VST3 SDK alone and use some vst framework for create template.
I am aware of IPlug2, but as you mention, it is not production ready. Maybe I’ll take look on IPlug or another frameworks I found.

There’s a few discussions about the use of React-Native in the Android world, however, I suspect in principle the replacing one GUI for another runs along similar lines. And someone also dropped in a javscript engine to do handle something similar.

Might be worth following up on those discussions.

But it’s probably a bit of work to do it.

For macOS there is UIViewComponent (https://docs.juce.com/master/classUIViewComponent.html) and then you can put whatever native UI you want inside.

There isn’t an equivalent for HWNDs on Windows, however I wrote one up pretty easily. This is odd since there is an AndroidViewComponent and XEmbedComponent. So every platform except Windows gets a JUCE component for embedding native components.

1 Like