Volume (zynthian encoders) of single engine affects both engines


2 engines on same midi channel, (a piano and a pad playing together) reacts to volume change almost together, i mean with zynthian encoders.
Explaining “almost”:
Zyn choir+GrandPiano on FluidSynth: changing zyn volume, Piano stays. changing fluidsynth, both sounds change.
Obviously if volume is midi controlled, both reacts, and volume parameters are flattened. but if volume was mapped strictly on engine’s global, they would change volume channel proportionally and stay separate, Even on same channel…


Currently MIDI CC 7 is used for volume, so it will affect to all the layers in the same channel. The same applies to other standard MIDI CC like pan, sustain, etc. I know, it’s far from perfect, so let’s work to improve it :wink:

The problem is that both features are interesting and useful. You want to adjust the volume, panning, etc, of every layer, but also you would like to change the volume, panning, etc. for the MIDI-chan (all the layers in it). How can we achieve the best functionility and usability? Ideas?



Unfortunately I am not familiar with Python programming or anything else related to which function is controllable without knocking at midi cc…etc… and it’s a bit frustrating…:tired_face: so i can only suggest…
Don’t know if it’s possibile, but would Be good mapping zynthian encoders (on relative pages) directly to engine’s controls and not with midi cc.
Hardware encoders are one of the WOW part of zynthian, and should have a priority over midi controls.
So could be perfect calibrating volume for each engine/layer but directly on part’s volume/pan.
engine Master, instead, should be mapped on CC7. (or pan etc…)

All this, repeated on any engine… i believe each one has a master volume over the single part’s volumes…

In this way, relative volumes stay unchanged, over the master eventually remoted by cc7 on that specific channel.

The Mod UI affair is a bit more complex, i know… but being a totally independent world, its integration can be examined later… maybe could be useful building default preset with a master volume plugin…
or… i don’t know :yum:
haven’t explored Mod UI so much


I’m thinking about it …
You can be sure that i will do something regarding this problem … if nobody does it before, of course :wink:



Do you have a Press and Rotate?
If you rotate the volume button, the volume of the selected instrument is changed.
If you press and hold while you rotate, CC7 volume for all instruments is changed.


It happens already Just rotating. Cc7 in same Channel does It like any midi event. … Which is practically the right thing… but maybe zynaddsubfx volume is mapped as virtually “hard-wired”… In linuxsampler or fluidsynth volume is probably controlled with cc7 only . For this reason, being on same Channel, i can lower zyn’s volume separatedly ,being not cc7 controlled, but if i want to lower fluidsynth, both engines do. Obviously zyn changes 'cause It has cc7 too… Anyway this is not the worst issue :wink: but better know It…


And we need to consider another thing. I have volume slider on my master keyboard and I expect that this one changes the volume of the current midi channel. But in the zynthian-ui, the upper left volume is not changed.


Well, as you know, on zynaddsubfx volume there is no cc Number associated like in others.
maybe because encoder is pointed on real synth volume.

Anyway zyn itself has cc7 mapped internally, then reacts equally.
Its Ui volume doesn’t move most probably for this reason…this is technically correct too.

But once midi is touched, every engine on same channel goes on the same value, whatever value it was… but i believe here we could be against an engine’s limitation…

Here 's a possible scenario for a better structure (not sure if realizable,but just take the idea):

The layer manager should be “active”, i mean:

layers should be volume adjustable, filtered to accept only midi cc 7;
Layers are mapped singularly on each midi channel (not changeable);
each layer can contain several engines, which react to all midi data except cc7
note: program change could be a problem in multiengine layer :open_mouth:
Could be useful inserting a program change filter if more than 1 engine is loaded, avoiding unwanted simultaneous patch changes.

The goal is to have each engine’s volume controllable only by zynthian hardware, so volume differences can stay over master layer changed by cc 7. (by a controller or a sequencer)

The problem is if it’s possible to create a reactive layer manager in this way …

Regards… Ivan


I expect that when I Send midi channel 2 cc7 value 40 then all engines that are responding to midi channel 2 will be set to 40. then If I change midi channel 1 cc7 to value 100 then I expect all engines on midi channel 1 to be set to 100. The only issue is a master volume for zynthian assignable to a cc which is a subject of another discussion.

Program changes on multiple engines or (sysths in the good old days) using the same midi channel is always a problem and the easiest way is if you send a program change to midi channel 1 to change to number 20 then all engines should change to program 20 and if a bank message is sent then all should react. up to the user to program patch 20 on each engine to be what is wanted.


Maybe i misunderstood your point of view. So i do an example: Have you ever used a combination of piano+strings played together (the simplest example) and want to give different presence to each sound? How Can you “freeze” different volumes on engines sharing the same midi Channel using cc7 ? You should waste One midi channel for each instrument?.. mapping a keyboard controller with two or more layers Just for separating volume? Not every keyboard controller is capable of sophisticated setup like this. I’m thinking to the poorest keyboard with at least the choice of playing One Channel at once… Don’ t think a feature-rich controller…imagine a zynthian standalone keyboard with few simple controls, pitchbend, mod, some program change, plus the zynthian hardware(which i’m planning ti build…).


All controllers I have ever used allow you to layer two sounds from different midi channels (rolland a800pro, emu xboard 61, akai mx73) that is not a problem. which is the way to do it is have piano in midi channel 1 and strings midi channel 2 set your volumes to get your balance you want. lets say piano cc7 value 100 and strings cc7 value 80. now change the master volume of the zynthian for your output volume or run the outs of the zynthian into a stereo volume pedal (i use a boss fv50l any boss foot volume pedal with and L at the end will work) then to mixer, amp, whatever.

if you really do want to use one midi channel then you will need to edit the individual presets to get you desired balance save it as a snapshot and use a volume pedal (like boss fv50l).

But you are never going to use 16 midi channels at once more likely you are going to load them all up with different sounds and then switch your controller midi channel so you can play each one.


Don’t know… too much peripherals to Simply balance 2 or more volumes… Maybe i had enough stress using software instruments with a laptop in stage, and my vision while suggesting is more close to reach a multitimbral
standalone workstation,than a soft-engine trapped in a box …and yes, with a master volume…:wink:. But at this point, a mini mixer with the rest of Gear…


controler to Zynthian
Zynthain to boss fv50l
boss fv50l to FOH

3 pieces of kit and just do some programing of the patches.


We will have this master midi channel (f.e. 16) you can already set in the webconf.
We plan to change the alsa volume, if you send cc7 on this channel.