New mixer proposal

Hi everyone. I was wondering if it would be possible to create a different kind of mixer.
It should have a volume and pan control for every open layer, and maybe a mute and a solo button. Everything configurable with midi learning. I know nothing of programming, so it’s just an idea. :upside_down_face:


…or volume, pan and button on / off midi input…

Hello everybody!!

1 Like

Good idea :slight_smile:

I think this would be a really useful feature and has been on my list of desirable features for some time. I have been waiting for some stuff to settle down before relighting a subject previously discussed where we have an audio path for each engine, like a mixer channel with a gain and pan / balance control between the engine and the main output mix. This is already possible with effect chains but I think a default config with mixer inserted after each engine would be good.

My soundcard (basic pcm5102 board) has no ALSA controls so the current mixer implementation is just a blank screen which means I now have an additional “MIXER” entry in my Layer List that does nothing and is a bit annoying! A real mixer would be far more beneficial.

I anticipate a screen that shows each channel as a vertical bar with level, pan / balance & mute for each channel. Some thought needs to be given to how each control is selected and adjusted but something like:

  • Encoder 4 to move between channels
  • Encoder 1 to adjust level
  • Encoder 2 to adjust pan / balance
  • Encoder 1 button to toggle mute

Maybe the insert points could also be displayed and accessible but one step at a time…

I see this as an actual mixer, i.e. LV2 plugin adjusting levels rather than adjustment of MIDI level which may prove less consistent. Of course we may be able to do same using MIDI but who knows how an engine will respond to pan or balance adjustment and indeed which to use!


This would surely add to CPU usage compared to MIDI, which could be scaled per channel for consistency. Perhaps add another pi specifically to mix/process audio streams with Zynthian audio sending over network…

Of course there is processing overhead for any scaling but the synth engine will need to do that if you do it via MIDI so it is already happening. We would certainly need to consider if the overhead had an adverse effect but it is quite simple and may be rolled into existing processes that already occur, e.g. the level metering is already processing audio and its JACK loop may be used to add the fairly simple mixer algorithm. I think it is worth exploring the idea of a JACK mixer (which is also already implemented within JACK daemon) because it provides a workflow that users can easily relate to.

I can put together a 16 channel JACK mixer (doesn’t event have to be LV2) to test the impact. The main change to the current implementation would be auto-connect would connect each engine to its corresponding mixer input rather than the main output. @jofemodo - should I have a bash at this? We can always bin it if it doesn’t work :wink: .

1 Like


I would vote for midi control of a specific audio mixer component. As @riban says the processing has to be done somewhere but I think we break our ‘MIDI can control everything’ philosophy at our peril.
Also if handled properly in the jack world we can presumably cue with considerably more precision than MIDI control can provide. That will become an issue when we get into loopers and other such audio ephemera.

Kind of fun to think vector synthesis in this arena. I don’t know if the Vector synth control signals could sit comfortably in a MIDI stream but if it could then that sort of technology should be considered in whatever control API we publish for the mixer component. ( kind of a pan/balance discussion but across multiple audio channels. . . )
Not so much to implement in the mixer we are describing but something to consider for the Control.

I would also like to see the GUI entirely drivable from the touchscreen, as well as the encoders. I suggest carrying over the status area, With the title section being the mixer configuration that is loaded. Isn’t it really a great big snapshot in fact when all is said and done.

I, as ever, would love to see the overall volume control as the default setting for encoder one. I purposely haven’t added an overall master volume fader in this, because the natural position for enc 1 would be on the hard left of the display which might unsettle traditionalists, althou a lot of synths put the master volume that side presumably for use with the left hand. IF this could be implemented as an external vol level to the original audio feeds from the engine then presumably we could save a multiplication at the end of the process but would rule out the possibility of Pre-Master busses but that might actually aid simplicity.

I suggest we rename the existing Mixer layer as Input or ALSA and try to bury it in admin rather than the layer menu, whilst it is certainly an excellent presentation of an element than can have from 0 - too many parameters, I sence it is unlikely to be used as the destination for xy control in a performance environment ( unless someone knows better . . :-), so it feels more of a configuration device than a performance control.
The present audio output level of this may almost have it’s role replaced by the mixer component we are considering.

How we display the current channel is obviously an area of great and intense debate
and best settled with suitable weaponry . . .


You so owe us a sound sample for this … :smiley: :face_with_monocle:

I have exactly the opposite problem. Way too many settings. Which is why I like @wyleu’s idea to…

…because, as he points out…

Good thoughts, everyone! :+1:

You could do it as an lv2 running in an effect layer and redirect the relative layers to that layer with no changes needed at all.

Oh wait. You’d need 4 stereo ins and a way to determine routing wouldn’t you. Not that easy then.

Both the Mixer IN & Mixer out components are really wrappers around the JACK core so can easily claim a different handling (IMHO) conceptually I think that helps as well. . . .
I think we allow a totally free for all down at Layer level but keep the way in and way out as simplistic as possible. .

This could indeed be implemented using current schema by adding a level / pan LV2 plugin that can be inserted on each engine then extending control to a dedicated mixer screen but I agree with @wyleu that the output path should be simple and consistent. We could and should be able to map each mixer control to MIDI CC and OSC. Maybe we have an option to select whether the mixer acts on MIDI volume or JACK mix level. I worry that the MIDI volume CC7 may prove challenging to tame. I can put something together which offers both options.

BTW, I seem to always get the encoder numbering wrong (which is why my encoders are cross-mapped).

Try living with two encoder cards with the sockets opposite ways round…

of course my lord…:yum:


Oh, I love it! :partying_face: :+1:
How much of it is Zynthian?


1ch - Drums: LS - Acetone Rhythm Ace, Drumkits Percussion + MDA Degrade.,

2ch - Bass: ZY - Bass 5.,

3ch - Lead 1: ZY - Brass - Fat Brass + TAL Reverb, Dexed - Synth Brass.,

4ch - Pad: ZY - the mysterious banks - echoes 2.,

5ch - Lead 2: Calf Monosynth - Goa Bass + MDA Delay…

and easy mastering in Cubase…


Very nice!

You know, that you can easily copy and paste the setup via webconf?

1 Like

Yessss! Really nice track … i just add it to the wiki’s SoundDemos :wink:

1 Like

You chose a perfect title for the demo:grin:

1 Like