I don’t know if maybe this is more useful if i add an install VNC option first if the service is not installed, i was just trying to get acquainted with how the menu system works.
This does persist between reboots but it does so by using systemd.
What happens if you exercise the setting when vnc is not installed? Does zynthian_gui issue any errors or warnings (command line / log)?
If this feature is added to stable build then vnc should be installed by default (rather than installation triggered by application). That is the standard way to do things here.
I llike the use of systemd for persistent status but maybe @jofemodo knows better, e.g. it may or may not be desirable to save such a setting in backups in which case the zynthian configuration class would be used.
I wonder how many remote access methods we want to add here? vnc, ssh, x-forwarding, rdp, parsec, letmein?
I wonder how many remote access methods we want to add here? vnc, ssh, x-forwarding, rdp, parsec, letmein?
I think that VNC is really great to remote Zynthian UI via a computer, a tablet or a smartphone. For example when you want your zynthian in a distant position, like a pedalboard or a rack.
The main thing with VNC is that it comes builtin into the pi, somewhat at the very least. I just went with it because the installation was simple and it’s better then x-forwarding for some debugging.
I will check now to see what is the behavior of the zynthian if the service is not installed (maybe only show the menu if it’s installed or add it to a hidden developer menu?)
Excellent. I am running VNC on a second X-Display so that it does not display the Zynthian UI but can be used to display output from synth UIs, or in my case QJackCtl. I just created an xsecondscreen.service to run that. I wonder if it would be possible to integrate that in the admin setting.
I could totally integrate that as an option but I need @jofemodo approval for this, as I’m basically doing it on my own, I’m not 100% sure if it can be integrated as is, as @riban said before.
That’s actually one of the use cases I had in mind in fact, so it could be very interesting.
I finally integrated the “VNC Server” option in the UI’s admin menu. @Pastitas, I had to change a few things for using TigerVNC (instead of RealVNC), that is free software and it’s included on the raspbian repositories.
Simply update and test!
Notes:
You should connecto to zynthian.local:5901 and start your engines after that.
The password is the same than system password. When updating the system password from webconf, VNC Server password is changed too.
This integration is thought for running the engine’s UI on a remote display, not for running the UI itself. For that, you should start a VNC server instance for sharing display 0, or create another remote display and tweak the zynthian UI service. Up to you, but doesn’t use the display :1.
Ok, I tested this with an updated Zynthian but I’m not getting this to work for me…
After enabling the VNC server from the menu, I can succesfully connect with Tiger VNC Viewer to zynthian.local:5901 and I’m presented with a console screen of the zynthian. So far, so good.
If I subsequently start a Zynaddsubfx layer on the zynthian, it works as expected on the zynthian, but no ui is launched on the vncviewer.
If I peek from the console in the processes launched on the zynthian, I see that this is not a surprise since it is launched headless:
# ps aux | grep zynaddsubfx
root 14331 4.6 1.1 138244 94076 pts/1 SLsl+ 16:30 0:00 /usr/bin/zynaddsubfx -r 44100 -b 256 -O jack-multi -I jack -P 6693 -a -U
(The -U is the flag to launch without GUI)
so it seems that config_remote_display is not detecting that I have a remote session running.
From the console I also spotted this:
root@zynthian:~# env | grep VNC
ZYNTHIAN_VNCSERVER_ENABLED=0
Which I suspect needs to be something else when connected through VNC.
Should I connect in a different way, am I doing something else wrong or is this an issue?
I can confirm I get a working engine UI of ZynAddSubFx working now through VNC (using tigervncviewer)!
It seems that the quality and interactiveness before tweaking with display and compression options seems to be quite slow this way.
The quality of the display and the interactivity experience with the NoVNC connection seems to be quite better out of the box, quite useable.
It’s not quite clear to me what UI’s will show up and which ones do not, I assume LV2 engines won’t show (yet).
For now I just managed to get 1 UI Instance of ZynAddFx showing up, not of any other engines yet.
Currently you can access the native GUIs from these engines:
ZynAddSubFX => the Zynfussion is very nice but very slow. I’m thinking of stepping back to the “classical” GUI that is very light, although not so nice.
Aeolus
Pianoteq
PureData
I think we can easily add “setBfree”, although it’s not so useful as getting the LV2 GUIs. This is a little bit more challenging, but the incentive is high because this would cover most of interesting engines: Dexed, OBXd, Noizemaker, Helm, etc.
And the way to follow is not so hard. Simply we have to replicate the CLI functionality from jalv on the jalv.gtk and jalv.qt programs. I would do it ASAP.
I’ve tested with a few synth engines and FX plugins:
NoizeMaker
Synthv1
Nekobi
StringMachine
Surge
VL1
Dragonfly
etc.
It works quite well for most of them, although we haven’t full bi-directional sync between the native GUIs and Zynthian UI. I.e. moving a controller from zynthian UI will change the GUI’s controller, but moving a GUI controllers don’t move a Zynthian UI controller. I hope to improve this very soon.
Also, we have some important absences, like:
OBXd (the current version from KXStudio doesn’t include the GUI!) => It works but takes some seconds to be displayed!!
Dexed (@C0d3man , please, can you help me with this? I remember you added a GUI plugin …)