GUI control of plugin params?

Trying to get my head wrapped around this and looking for a little guidance with respect to Elk on the Raspberry Pi. I understand writing a plugin with the Juce framework, compiling it with the Elk Juce fork, and then running it within Sushi. It sounds like one could develop and debug the plugin on the platform of choice, then cross-compile using the Juce fork and then run within Sushi. That all seems to make sense.

What I’m missing is the approach one would take to implement a GUI on the same Raspberry Pi to provide dynamic control of the plugin and audio parameters. From what I’ve read, Elk doesn’t support a Juce-based GUI app to do this. Is there an example of this anywhere? Or is it the case that the intent is that parameter control is all hardware based, i.e. knobs and sliders?


Indeed plugins are by necessity “headless”, they lack a GUI. As is Sushi, our DAW for Elk.

You can control them over gRPC or OSC, from a process which may run either locally on the board, or remotely on a phone/tablet/desktop computer.

We support running a GUI directly on the board, driving a screen attached to it. This could be a screen such as the small one on the Blackboard, or a bigger color touch-screen.

But, the process driving the screen will still be a standalone application, communicating with Sushi and the hosted plugins over the above mentioned protocols.

I’d advise reading some of our tech-blog entries, which are intended to give a high-level introduction to the platform.

Specifically related to your questions, are these two entries:

Ilias of Elk


I tried to connect my elk-pi with Touch OSC on my iPhone, but no success.

Can you explain how to setup (IP adress ? Port ?) ?

Dans l’attente de vous lire.

Bien à vous

Hi @professeur,
please refer to SUSHI documentation here:

(and especially the OSC section).

IP address is the one that gets assigned to your board (or you can try to use “elk-pi.local” if your iPhone recognizes the Avahi / zeroconf advertised domain).

OSC listening port by default is 24024, but can be changed with the -p command-line option in SUSHI.

The OSC paths will depend on your SUSHI configuration since they are dynamically defined depending on which tracks / plugins you specify in the JSON configuration. You can run SUSHI with the --dump-plugins flag to see the OSC paths for a given configuration.