# Improving plugins\_custom\_gui and zynthian\_engine\_jalv.py to add custom GUI to LV2 plugins

**URL:** <https://discourse.zynthian.org/t/improving-plugins-custom-gui-and-zynthian-engine-jalv-py-to-add-custom-gui-to-lv2-plugins/13650>\
**Category:** Software\
**Tags:** feature-request, vangelis\
**Created:** [September 13, 2026, 9:41am UTC](https://discourse.zynthian.org/t/improving-plugins-custom-gui-and-zynthian-engine-jalv-py-to-add-custom-gui-to-lv2-plugins/13650 "2026-09-13T09:41:45Z")\
**Posts on this page:** 13\
**Page:** 1

<div class="post-metadata">

**Author:** ![ascari.maximilian](https://discourse.zynthian.org/user_avatar/discourse.zynthian.org/ascari.maximilian/32/16542_2.png) [@ascari.maximilian](https://discourse.zynthian.org/u/ascari.maximilian)\
**Post date:** [September 13, 2026, 9:41am UTC](https://discourse.zynthian.org/t/improving-plugins-custom-gui-and-zynthian-engine-jalv-py-to-add-custom-gui-to-lv2-plugins/13650/1 "2026-09-13T09:41:45Z")

</div>

Hi @jofemodo , I developer some LV2 plugins with custom python GUI.

Currently, registering custom Python Touch Widgets for 3rd-party LV2 plugins requires modifying `plugins_custom_gui` inside `zynthian_engine_jalv.py`, which is overwritten on every system update. Would you consider allowing an external drop-in configuration (e.g. in `/zynthian/zynthian-my-data/jalv_custom_gui.json`) or auto-detecting a `zynthian_widget.py` inside the plugin’s LV2 bundle? This would make 3rd-party plugin distribution completely update-proof.

Thank you soo much, I really love my Zynthian and I’m having a lot of fun with it ❤

ps: this is a plugin I just developed, it’s a replacement for SooperLooper, since I cannot make it work properly (looped tracks often get stuck and do not respond to clicks and commands).

 ![Screenshot 2026-09-13 113829](https://discourse.zynthian.org/uploads/default/original/3X/3/6/36a301feab7656589d1a6502666ab9cdfed7b9a3.png)

---

<div class="post-metadata">

**Author:** ![jofemodo](https://discourse.zynthian.org/user_avatar/discourse.zynthian.org/jofemodo/32/2_2.png) [@jofemodo](https://discourse.zynthian.org/u/jofemodo)\
**Post date:** [September 13, 2026, 3:49pm UTC](https://discourse.zynthian.org/t/improving-plugins-custom-gui-and-zynthian-engine-jalv-py-to-add-custom-gui-to-lv2-plugins/13650/2 "2026-09-13T15:49:10Z")

</div>

Hi @ascari.maximilian !

Do you have a repository with your code.  
I would love to test your plugins.

Thanks!

---

<div class="post-metadata">

**Author:** ![niels](https://discourse.zynthian.org/user_avatar/discourse.zynthian.org/niels/32/5005_2.png) [@niels](https://discourse.zynthian.org/u/niels)\
**Post date:** [September 13, 2026, 4:33pm UTC](https://discourse.zynthian.org/t/improving-plugins-custom-gui-and-zynthian-engine-jalv-py-to-add-custom-gui-to-lv2-plugins/13650/3 "2026-09-13T16:33:20Z")

</div>

I second that!

---

<div class="post-metadata">

**Author:** ![jofemodo](https://discourse.zynthian.org/user_avatar/discourse.zynthian.org/jofemodo/32/2_2.png) [@jofemodo](https://discourse.zynthian.org/u/jofemodo)\
**Post date:** [September 13, 2026, 4:58pm UTC](https://discourse.zynthian.org/t/improving-plugins-custom-gui-and-zynthian-engine-jalv-py-to-add-custom-gui-to-lv2-plugins/13650/4 "2026-09-13T16:58:41Z")

</div>

BTW, you can now put your custom widgets in this folder:

> /zynthian/zynthian-ui/zyngui/widgets\_user

They won’t be overwritten by updates, but they must have the right file name:

> zynthian\_widget\_plugin\_name.py

where plugin\_name is the “official” plugin’s name lowercased and with spaces replaced by underscores. If you have doubts, look at the UI’s debug log. When creating the processor, it prints a line with the “user custom widget” file name it’s looking for.

Remember that the class inside the file also have to match the filename.

Regards,

---

<div class="post-metadata">

**Author:** ![riban](https://discourse.zynthian.org/user_avatar/discourse.zynthian.org/riban/32/2331_2.png) [@riban](https://discourse.zynthian.org/u/riban)\
**Post date:** [September 13, 2026, 6:23pm UTC](https://discourse.zynthian.org/t/improving-plugins-custom-gui-and-zynthian-engine-jalv-py-to-add-custom-gui-to-lv2-plugins/13650/5 "2026-09-13T18:23:17Z")

</div>

I am interested to know what issues you have with SooperLooper. It is the most established and feature rich looper available for zynthian so it should be stable and offer most features that users require. We don’t expose all features because some don’t make much sense in zynthian… or at least not to me!

---

<div class="post-metadata">

**Author:** ![ascari.maximilian](https://discourse.zynthian.org/user_avatar/discourse.zynthian.org/ascari.maximilian/32/16542_2.png) [@ascari.maximilian](https://discourse.zynthian.org/u/ascari.maximilian)\
**Post date:** [September 13, 2026, 7:04pm UTC](https://discourse.zynthian.org/t/improving-plugins-custom-gui-and-zynthian-engine-jalv-py-to-add-custom-gui-to-lv2-plugins/13650/6 "2026-09-13T19:04:49Z")

</div>

Hi @jofemodo , not yet! As soon as I’ll publish them, I will let you know.

---

<div class="post-metadata">

**Author:** ![ascari.maximilian](https://discourse.zynthian.org/user_avatar/discourse.zynthian.org/ascari.maximilian/32/16542_2.png) [@ascari.maximilian](https://discourse.zynthian.org/u/ascari.maximilian)\
**Post date:** [September 13, 2026, 7:05pm UTC](https://discourse.zynthian.org/t/improving-plugins-custom-gui-and-zynthian-engine-jalv-py-to-add-custom-gui-to-lv2-plugins/13650/7 "2026-09-13T19:05:19Z")

</div>

Cool! I’ll give it a try tomorrow. Thanks!

---

<div class="post-metadata">

**Author:** ![ascari.maximilian](https://discourse.zynthian.org/user_avatar/discourse.zynthian.org/ascari.maximilian/32/16542_2.png) [@ascari.maximilian](https://discourse.zynthian.org/u/ascari.maximilian)\
**Post date:** [September 13, 2026, 7:31pm UTC](https://discourse.zynthian.org/t/improving-plugins-custom-gui-and-zynthian-engine-jalv-py-to-add-custom-gui-to-lv2-plugins/13650/8 "2026-09-13T19:31:36Z")

</div>

Hi! Yes SooperLooper is a great, features rich plugin and you did a great job.

I tested it on Oram and I had often problems using it, because looped tracks often got stuck and they did not respond to commands (like mute, pause, reverse, and so on).

At the time I didn’t feel like using it in a live show. So I started developing my own Looper, as an experiment. I like to have all the functions on screen without the need to menu dive or to search for the right parameter to tweak.

Recently I started using Vangelis and maybe now SooperLooper works well, but at the moment I find my looper easier to use, mostly because I don’t have to menu dive.

I’m aware of some things that need to be fixed or improved and there are probably bugs I did not find out yet 😅

My main goal now is to explore creative ways to use the touch screen and create good user interfaces with limited menu diving.

Next step, I’ll try to use zynthian knobs to change some params, with knobs hardcoded to these params only (when the ui is fullscreen and the default zynthian params column on the right is hidden).

For instance, I want to use knobs to change duration, speed, pitch and volume of each loop. I don’t know how to do it, yet… but I’ll find it out.

Cheers!

---

<div class="post-metadata">

**Author:** ![ascari.maximilian](https://discourse.zynthian.org/user_avatar/discourse.zynthian.org/ascari.maximilian/32/16542_2.png) [@ascari.maximilian](https://discourse.zynthian.org/u/ascari.maximilian)\
**Post date:** [September 13, 2026, 7:54pm UTC](https://discourse.zynthian.org/t/improving-plugins-custom-gui-and-zynthian-engine-jalv-py-to-add-custom-gui-to-lv2-plugins/13650/9 "2026-09-13T19:54:29Z")

</div>

> [@jofemodo](#):
>
> BTW, you can now put your custom widgets in this folder:

I made a quick test and it did not work. No “use custom widget” inside logs. I updated Vangelis last friday. Do I need to update it again?

Thanks

---

<div class="post-metadata">

**Author:** ![jofemodo](https://discourse.zynthian.org/user_avatar/discourse.zynthian.org/jofemodo/32/2_2.png) [@jofemodo](https://discourse.zynthian.org/u/jofemodo)\
**Post date:** [September 13, 2026, 8:51pm UTC](https://discourse.zynthian.org/t/improving-plugins-custom-gui-and-zynthian-engine-jalv-py-to-add-custom-gui-to-lv2-plugins/13650/10 "2026-09-13T20:51:50Z")

</div>

Of course!! How do you think the new feature, implemented today, gets into your zynthian?

cherrs

---

<div class="post-metadata">

**Author:** ![ascari.maximilian](https://discourse.zynthian.org/user_avatar/discourse.zynthian.org/ascari.maximilian/32/16542_2.png) [@ascari.maximilian](https://discourse.zynthian.org/u/ascari.maximilian)\
**Post date:** [September 14, 2026, 5:51am UTC](https://discourse.zynthian.org/t/improving-plugins-custom-gui-and-zynthian-engine-jalv-py-to-add-custom-gui-to-lv2-plugins/13650/11 "2026-09-14T05:51:19Z")

</div>

Of course!! How do you think the new feature, implemented today, gets into your zynthian?

> [@jofemodo](#):
>
> Of course!! How do you think the new feature, implemented today, gets into your zynthian?

I hadn’t realized you’d implemented it just now! 😅

Thanks! ❤

---

<div class="post-metadata">

**Author:** ![HelenMarsh](https://discourse.zynthian.org/letter_avatar_proxy/v4/letter/h/a183cd/32.png) [@HelenMarsh](https://discourse.zynthian.org/u/HelenMarsh)\
**Post date:** [September 14, 2026, 7:47am UTC](https://discourse.zynthian.org/t/improving-plugins-custom-gui-and-zynthian-engine-jalv-py-to-add-custom-gui-to-lv2-plugins/13650/12 "2026-09-14T07:47:50Z")

</div>

Nice improvement—keeping the GUI configuration external should be much easier to maintain than patching `zynthian_engine_jalv.py` on every update. I’d test three cases: a plugin with a long parameter list, one with booleans/enums, and a preset reload after reboot; also log whether widget state and LV2 port values stay in sync. For a repeatable listening check, I keep a neutral [432 Hz reference](https://kyma369.com/hz/432) handy when comparing captures—just a reference tone, not a claim about effects.

---

<div class="post-metadata">

**Author:** ![ascari.maximilian](https://discourse.zynthian.org/user_avatar/discourse.zynthian.org/ascari.maximilian/32/16542_2.png) [@ascari.maximilian](https://discourse.zynthian.org/u/ascari.maximilian)\
**Post date:** [September 14, 2026, 8:23am UTC](https://discourse.zynthian.org/t/improving-plugins-custom-gui-and-zynthian-engine-jalv-py-to-add-custom-gui-to-lv2-plugins/13650/13 "2026-09-14T08:23:26Z")

</div>

It works! Thanks 😊
