Displaying control outputs on UI?

Hi @Looperlative and other @zynthianers interested on cutting edge developments!

I’ve a “proof of concept” of a “custom GUI mechanism”. It allows to specify custom GUI for any engine/LV2 engine. You can create the custom GUI from scratch or derive from other zynthian GUI class.

For testing this, simply update on testing and load this snapshot:

004-spectrum30.zss (21.6 KB)

In this example, i’ve created a custom GUI for the “1/3 Octave Spectrum Meter”, inhereting from the “zynthian_gui_control” class. You can see the code here:

  /zynthian/zynthian-ui/zyngui/zynthian_gui_spectr30.py

I’ve to implement a mechanism for loading the custom GUI file from the LV2 bundle dir. Step by step.

zui_custom_spectr30

Enjoy!

10 Likes

This looks great… If you are looking for another example to test with, I would love to see an instrument tuner included. I was actually looking at building one from circuit boards to put in my eurorack to tune oscillators this morning… Then I saw this!

Great progress @jofemodo. Would we be able to set up inputs as well as outputs?

Wow, this is amazing.

:+1:

I highly second this.

The example above has 4 inputs and 30 outputs

2 Likes

So do I :+1::wink:

Great, well done @jofemodo . I will give it a try next week.

1 Like

@jofemodo Well done. I’ll dig into this and see what I can do. I’ll have to learn how to update my Zynthian first. I haven’t done that before. Thanks!

@jofemodo Tried a few times to get switched to testing without success. I even started with a fresh microSD. Each time that I switch to the testing branch, my user i/f fails to be usable. If there is another process other than using the webconf to switch, then let me know.

Please, tell the procedure you try for changing to testing and updating.

Thanks!

What about something like this?

zui_custom_tuner

To test, update on testing branch and create a layer with the “x42 Instrument Tuner” Audio-FX.

FYI, the tuner GUI is in this file:

/zynthian/zynthian-ui/zyngui/zynthian_gui_tunaone.py

Feel free to improve it!

Enjoy!

4 Likes

Almost brilliant!

I love the tuner (and it save me some work I was going to do to implement this feature so thanks). It works pretty well except…

  • It does not work as part of a chain, e.g. add x42 Instrument Tuner to an existing audio layer
  • It locks up after a couple of minutes (that might have been the plugin as I adjusted the Tuning parameter)
  • Custom UI continues to show when selecting different plugin / page

But I do love having a tuner. We were missing that feature.

2 Likes

I haven’t had time to test yet, but I am already pleased to see the progress …

It appears I have more things to do this evening. Thanks!

  • I start with the “latest stable image” which is the 9/25 image.
  • I boot that and then use the update option from the UI.
  • I then use the web ui to select the testing branch
  • It tells me that I need to update So, I do the update.
  • After the reboot, the UI is messed up and doesn’t work.

Where did I go wrong?

From these steps, I’d say step 3. Testing is testing. :joy::joy::joy:

But check your webconfig settings

Examining the UI log entry in the webconf is very useful.

It’s under interface.

Relax :rofl:

From webconf, you can restart UI in debug mode => see if it complains
Also from webconf you can access to a command line terminal (you can have the same through ssh), then you can investigate further with these commands :

  • systemctl status zynthian
  • systemctl status jack2 (or jack)
  • dmesg
  • aplay -l

I’ve tried to address all these issues. I hope it’s working better, but for sure there are some bugs yet.
Update and test !

FYI, i’ have implemented a second mechanism of GUI customization: widgets, and have ported the 2 examples above:

They both inherit from zynthian_widget_base, that implements the basic stuff. The widgets are loaded dynamically from zynthian_gui_control and they don’t need to be on the zynthian-ui directory/repo. They can be in any place, including the plugin bundle directory (i’ve to implement the TTL stuff for this)

I’m pretty sure widgets are going to grow up in the future: evelope editors, oscillator control, etc. We could create widgets associated to “groups of controllers”, using LV2 parameters, like specified here:

http://lv2plug.in/ns/ext/parameters

OK! I’m only exploring and having some fun with the future “extension system”. I feel the time for more serious tasks is coming now … :zynthianic:

Enjoy!

1 Like

Hi @Looperlative !

The logs from the update would be very useful here. Also the logs from the UI:

# systemctl -u zynthian

Regards,

Amazing!

7 Likes

Wonderful!! I love to see my work being useful!! :heart_eyes:

2 Likes

Yay! That’s better. I haven’t had a chance to test for longer than a couple of minutes but it looks better now when cascaded. I wonder if anyone has considered how we might jump to a particular screen, e.g. tuner which a guitarist may wish to see quickly, hands-free. Also how to mute (although that could be via the mixer) for a similar scenario.