HDMI UI and control interfacing on an Elk Pi

I’m building a bass f/x unit for myself (and possibly for others eventually) and I have a couple of questions.
To set the context, here are some details of the unit.

H/W Elements


I’m running the Elk Pi OS v0.12.0 patched with the v1.0.0 release of Sushi. I am able to load plugins and produce processed audio using an audio effects track. I have been able to use Open Stage Control running on another machine to tweak the plugins remotely.

My intent is to implement a custom app (as per the"the Box" example that Elk discuss) running on the unit, this will provide:

Remote control A UI will be accessable using a remote web browser (Akin to the approach used in Mod-UI on the Dwarf). Users will be able to install plugins, create track layouts and configure and control processors etc, etc on the unit. The app will drive sushi using OSC or gRPC.

Onboard control Users will be able to turn on/off plugins as well as load different saved configurations of tracks/plugins and their settings, the use of footswitches is a common approach for hands free operation of multi-fx units whilst playing; the screen will display status information. The rotary encoders and touchpanel will also allow the user to perform many (if not all) of the actions available using the remote web interface; thus a user does not need to take a tablet/laptop to a gig to create/alter configurations on the go.

I’ve a couple of questions:

1) UI support - Sushi being headless is exactly what I want, allowing me totally control of any UI, but I need some way of driving the UI on the onboard display.

The Elk documentation says " Elk does not provide a specific GUI framework but you are free to use any of the popular and well-maintained solutions for this purpose. For example, Qt is a popular choice in many embedded devices."

Qt would do the job nicely for me. I have seen some old comments in the forum about Qt being added to the Pi Image, but as far as I can see it is not present in v0.12.0.

Is it possible to install Qt myself using opkg (or just copying in the appropriate binaries/libraries)? Is it possible that the next release of the Pi image can have Qt included?

2) Hardware Interfacing I will be offloading the management of the non-audio H/W I/O to a Pi Pico with bespoke code on it. I plan to interface to this from my main app over SPI. Having done some reading on Sensei I’m attracted to the possibility of writing and incorporating a Sensei compatible driver, so I could then configure my Pico interface using the Sensei JSON configuration in a similar way to how it can be done for the Elk PiHat or Blackboard. Is this possible/viable? Would Sensei support such an approach?

Many thanks,

Hi S’manth and welcome to the forums. That sounds like a very cool project indeed.
Answering you questions somewhat in reverse order here.

The proper way to add QT would be to add it to the distribution using yocto, I think @Nitin or @Sharan can fill you in a bit more on the details on how to do that as I’m not the expert on that. There might also be some forum threads on the topic.

Regarding HW interfacing, it should def be possible for you to interface a Pi Pico with Sensei. I checked the sensei code and a long time a ago I know we had a serial interface in sensei, but that was dropped in favor of a socket interface.

If you want to go that route you should write your own HwBackend that interfaces with your microcontroller over this interface GitHub - elk-audio/elk-gpio-protocol: Protocol and library to control GPIOs in Elk Audio OS devices, you can take a look here for the interface of BaseHwBackend sensei/base_hw_backend.h at master · elk-audio/sensei · GitHub

Another option is to use the gpio pins of the raspberry, though that puts a limit on the number of controls you can have, and if you want to have custom handling/filtering or just like writing that piece of code yourself, then you can go the above route :slight_smile:

1 Like