I’m working on an embedded Linux project where a headless system can host VsT plugins.
The host doesn’t use JUCE, but we had to support a plugin written with it. At the moment, it’s possible to build headless standalone Linux apps in JUCE, but X11 & friends are still a dependency for audio plugin clients.
I experimented a little and it turned out that hacking the codebase to remove that dependency was much easier than I thought. Disclaimer: I’m not a JUCE expert at all, so any feedback is welcome!
You can try it out here:
This is still WIP, tested with few plugins and, especially, not integrated with the Projucer. You need to define
JUCE_HEADLESS_PLUGIN_CLIENT=1 to activate the option.
Basically, I just mocked up the relevant methods in
juce_gui_basics/native/, so this is similar to having a separate architecture target. From the plugin POV, it should be equivalent to the situation where the host never shows your UI, so you can instantiate graphic components etc.