New Features: Improved Audio-Routing + Pianoteq Fast Preset Loading


Hi @zynthianers!

I’ve very good news for you. I’ve been working in 2 improvements that will make you enjoy:

  • Improved layer Audio-Routing: Now you can route the audio output to any available audio input. For instance, you can:

    • create a synth layer
    • create Jalv layer with some crazy audio processing LV2-plugin you like
    • send the synth’s layer audio output to the audio processing Jalv plugin layer
    • cascade as much as you want, by creating more jalv plugin layer
    • or send the audio to a MOD-UI pedalboard (mod-monitor)
    • also, you can send the output to several inputs, etc.
    • And all this, using uniquely the Zynthian-UI :wink:
  • Pianoteq Fast Preset Loading: As you probably have noticed, every time you change the preset in Pianoteq engine, the engine is reloaded and you have to wait a lot … Never more! I’ve partially-solved the problem by using the Pianoteq MIDI Mappings. I say “partially” because not all available presets can be mapped in a single file, so i’ve splitted the map in several files, so the engine will only re-loads when you cross the map borders. Currently 4 mapping files were needed, so there are 4 borders. As the presets have been re-ordered and the “licensed” ones are grouped at the top of the list, probably you can change to any of your favorite presets without crossing any border and never get the engine reloaded. I tried to reverse-engineer the file format, but finally some help from Pianoteq guys was needed and i’ve to say that they are really friendly and answer all my questions very fast and accurately. Thanks a lot Julien!! :wink:

For getting the new features, just update your zynthian using your favorite method.



Is that all . . .?

what have you been doing :wink: …?


Ohhh! Sorry … i also was visiting hard-porn-sites and looking apocalyptic videos about the next financial crisis and reptilian-governance, but i didn’t integrate any of this on Zynthian (by now …) :rofl:


You see the first part is the confession . . .

We can help you from here :smiley:


Nice, i will be waiting for your help, as i really need it … but the first help i really need is @mheidt’s magic fingers for implementing 2 separated list of plugins in the webconf tool:

  • generators (aka synths)
  • audio effects

I would like to separate the “engine list” in the Zynthian-UI’s layer screen and having 2 “New Layer” entries:

  • New Synth Layer => Synth-engine list
  • New Effect Layer => LV2 audio-processing plugin list

I think it will be more ergonomic :wink:



Yes, that’s good it was going to become a very busy new layer list !


Good news!!

Mr @mheidt has implemented the detection of “plugin type” in the webconf tool and i’ve modified the Zynthian-UI for having separated lists for the different types of engine. After updating your Zynthian Software you will see new entries in the “Layer Screen”:

  • NEW Synth Layer
  • NEW Effect Layer
  • NEW Special Layer

Ahhh! Don’t forget to click on the “Search for New Plugins” button in the webconf tool and Save the list. It’s needed for correctly regenerating the cached files.



Great that Pianoteq people have been in touch! Thanks for the work.


Hi, really cool. But i noticed that, except for my licensed instruments that came with the pianoteq stage license and some of the Demo instruments, there are no presets listed. There appears just an empty screen with preset 1 assigned to the bottom-right control.
How could that be fixed?
E. g., I have the free historical instruments installed - no presets listed and thus nothing to chose from - no sound. Same for Steingraeber Demo, which actually should provide 16 presets. From within the pianoteq gui seen through ssh connection everything works flawlessly.


Tried running a plugin using method.
On loading new layer graphics animates but gui locks up . . . .

Oct 11 10:07:20 zynthian-amp2 startx[536]: Current version of pixman: 0.33.3
Oct 11 10:07:20 zynthian-amp2 startx[536]: Before reporting problems, check
Oct 11 10:07:20 zynthian-amp2 startx[536]: to make sure that you have the latest version.
Oct 11 10:07:20 zynthian-amp2 startx[536]: Markers: (–) probed, (**) from config file, (==) default setting,
Oct 11 10:07:20 zynthian-amp2 startx[536]: (++) from command line, (!!) notice, (II) informational,
Oct 11 10:07:20 zynthian-amp2 startx[536]: (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
Oct 11 10:07:20 zynthian-amp2 startx[536]: (==) Log file: “/var/log/Xorg.0.log”, Time: Thu Oct 11 10:07:20 2018
Oct 11 10:07:20 zynthian-amp2 startx[536]: (==) Using config directory: “/etc/X11/xorg.conf.d”
Oct 11 10:07:20 zynthian-amp2 startx[536]: (==) Using system config directory “/usr/share/X11/xorg.conf.d”
Oct 11 10:50:53 zynthian-amp2 startx[536]: ERROR:root:Can’t add layer C* ChorusI - Mono chorus/flanger - Plugin LV2 => Expecting property name enclosed in double quotes: line 1 column 51 (char 50)
root@zynthian-amp2:~# systemctl stop zynthian
root@zynthian-amp2:~# cd /zynthian/zynthian-ui
root@zynthian-amp2:/zynthian/zynthian-ui# ./
Zyncoder: Zynswitches poll thread created successfully
ZynMidiRouter: MIDI tuning frequency set to 440 Hz (8192)
ERROR:root:Can’t add layer C* ChorusI - Mono chorus/flanger - Plugin LV2 => Expecting property name enclosed in double quotes: line 1 column 51 (char 50)


Hi, could you tell me how to observe the output on the shell while zynthian is operated via gui?


It’s a bit of trick . . .

Shut down the zynthian process . . .

> systemctl stop zynthian

Then ssh onto the box. . . with the -X option (putty will do this for you )

cd /zynthian/zynthian-ui/

this will start up the GUI on your pc and the putty terminal will display the text output and the exceptions when you run things.

Basically you are running the gui in a shell rather than using systemd to do fire it up so you get a stdout to look at. . .


You don’t need -X, if you want to see the logs only. If I understood him correctly, he wants to run the Zynthian in normal mode.


Hi @hal80!

I’ve fixed some Pianoteq problems related with preset list regeneration, so perhaps your problem is solved now. You have to update the software and force the engine to regenerate the preset list:

rm -f /zynthian/zynthian-my-data/pianoteq6/*
systemctl restart zynthian

A button for force regenerating the presets cache should be added to the webconf tool: @mheidt :wink:

Kind Regards!


Indeed, fixed :slight_smile:
Hope that was an easy fix, though.
And thanks @wyleu for the command line trick :ok_hand:


hi, i really appreciated new layers structure :slight_smile:
anyway i had some time to do some debug.
Found some issues:

  • Saved Snapshots with effect layers loose again audio routing changes. Sometimes this results as a corrupted snapshot or partially loaded.

      DEBUG:root:WS >> remove :all
      DEBUG:root:ZCTRL 'Layer': 0 (0 -> 6), None, None
      DEBUG:root:FREE PARTS => [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
      DEBUG:root:ADD LAYER => PART 0
      DEBUG:root:CONTROLLER panning depth OSC PATH => /part0/ctl/panning.depth
      DEBUG:root:CONTROLLER filter.cutoff depth OSC PATH => /part0/ctl/filtercutoff.depth
      DEBUG:root:CONTROLLER filter.Q depth OSC PATH => /part0/ctl/filterq.depth
      DEBUG:root:CONTROLLER drum on/off OSC PATH => /part0/Pdrummode
      DEBUG:root:CONTROLLER legato on/off OSC PATH => /part0/Plegatomode
      DEBUG:root:CONTROLLER poly on/off OSC PATH => /part0/Ppolymode
      DEBUG:root:CONTROLLER portamento time OSC PATH => /part0/ctl/portamento.time
      DEBUG:root:CONTROLLER portamento up/down OSC PATH => /part0/ctl/portamento.updowntimestretch
      DEBUG:root:CONTROLLER portamento thresh OSC PATH => /part0/ctl/portamento.pitchthresh
      DEBUG:root:CONTROLLER modulation depth OSC PATH => /part0/ctl/modwheel.depth
      DEBUG:root:CONTROLLER modulation exp OSC PATH => /part0/ctl/modwheel.exponential
      DEBUG:root:CONTROLLER bandwidth depth OSC PATH => /part0/ctl/bandwidth.depth
      DEBUG:root:CONTROLLER bandwidth exp OSC PATH => /part0/ctl/modwheel.exponential
      DEBUG:root:CONTROLLER depth OSC PATH => /part0/ctl/resonancecenter.depth
      DEBUG:root:CONTROLLER depth OSC PATH => /part0/ctl/resonancebandwidth.depth
      DEBUG:root:CONTROLLER velocity sens. OSC PATH => /part0/Pvelsns
      DEBUG:root:CONTROLLER velocity offs. OSC PATH => /part0/Pveloffs
      ERROR:root:Invalid snapshot format: 'JV/ZynChorus'

or trying to reload it, system hangs, and waveform logo runs endless:

DEBUG:root:CLOSE MODAL => snapshot
DEBUG:root:BACK TO SCREEN => control
WARNING:root:zynthian_gui.zyncoder_read() => 'NoneType' object has no attribute 'get_ctrl_screens'

By now i found this…


Could you attach the snapshot?



yes sure here are:
002.zss (3.7 KB)
This is a working snapshot with a zyn patch preset and sooperlooper coming from mod-ui

001-test01.zss (2.9 KB)
This is a snapshot with same zyn patch and a jv2 effect on a brand new effect layer.
The effect i loaded from webconf is JV/ZynReverb.

This one worked before saving and reloading. After saving, zynaddsubfx is loaded with default sound (a sine wave i guess) and no effect layer present. Randomly, reloading it causes hanging.
NOTE: on webconf snapshot page, engine list for each snapshot shows all layers originally used as expected.


Hi @ivanmonterosso!

Your snapshot format is not valid in the latest software versions. Backward snapshot compatibility has been broken with the latest updates. I had to do it because of the new structure … sorry :relaxed:

Are you running the latest version? Could you update your software, recreate your snapshots from scratch and try to reproduce the error?



I just created this snapshot, with a ZynAddSubFX layer audio-routed to an effect layer (ZynReverb) and works perfectly after REMOVE ALL and loading the snapshot again.

001-test01.zss (2.9 KB)