Tutorial: Layer Split Using Clone and MIDI Filter Rules

Hi @Aethermind and everyone!

Here is a short tutorial on using Clone and Midi Filter Rules to create layers and splits.

The workflow is better using the Mixer, Clone, Key Range and Transpose.

MIDI rules are good if we frequently re-use them in splits or controller templates. MIDI rules have limitations with program changes, note mapping and controller learning.

The MIDI rules can be found here:


The Zynthian is a 16 midi channel multi-timbral synth. Each mixer slot uses a unique MIDI channel. There are 16 MIDI channels available.

In multi channel mode we can only play the MIDI channel(s) that our controller is sending. In stage mode we can only play the active Zynthian channel (1, 2, 3 or 4). We can CLONE the channel data to another channel, or we can Rule IGNORE and MAP the data to another channel.


Set our controller to transmit on MIDI channel 1. Use Multi mode on the Zynthian. Create four mixer chains:

Linuxsampler Salamander Piano to MIDI 1
Dexed FM EP to MIDI 2
MDA Rhodes to MIDI 3
OBXd Cloud Pad to MIDI 4

In order to layer the Piano, DX and Pad, in Multi mode:

Clone the Piano Layer (MIDI channel 1) to
MIDI Channel 2 and include controllers  1 and 64
MIDI Channel 4 and include controllers 1, 64, 71 and 74

We can capture a program change (PC0) and save the snapshot as “Layer Split Tutorial."

To play the MDA Rhodes instead:

Zero the piano mixer volume 
Clone Piano (MIDI channel 1) to
MIDI channel 3 and include controller 1 and 64
MIDI channel 4 and include controllers 1, 64, 71 and 74
and Uncheck the Clone to MIDI channel 2

Save this as a program change (PC1) and re-save the snapshot.

Now to split the keyboard at Eb3-E3:

Select program change 0 (The piano volume should be restored)
Transpose the Piano and Dexed up one Octave
Set Key range from full A-1 to Eb3
Transpose OBXd down one octave
Set Key range from from E3 to C7

Save this as a program change (PC2) and re-save the snapshot. We now have three programs and a split that we can access using program changes.


On the Zynthian, CLEAN ALL and create new mixer chains

Linuxsampler Piano on MIDI02
Dexed FM Piano on MIDI03
OBXd Silky Brass on MIDI04

On the zynthian, using zynthian.local, Interface, Midi Options, Midi filter rules, Delete the contents of the MIDI filter rules box. Save a MIDI profile as “Clear Rules” or “Default”.

Paste this script into the Midi filter rules box. Save the MIDI profile as “Split 2, E4, 4.”

IGNORE CH#1 NON#64:127
MAP CH#0 NON#0:63 => CH#1 NON#0:63
MAP CH#0 NOFF#0:63 => CH#1 NOFF#0:63
MAP CH#0 CC => CH#1 CC
MAP CH#0 NON#64:127 => CH#3 NON#64:127
MAP CH#0 NOFF#64:127 => CH#3 NOFF#64:127
MAP CH#0 CC => CH#3 CC

What the lines mean:

Do not play MIDI 02 (piano) note-on or note-off above Eb3
Do not play MIDI 04 (OBXd) note-on or note off Below E3
Map MIDI 01 note-on, note-off and controllers to MIDI 02 notes 0-63
Map MIDI 01 note-on, note-off and controllers to MIDI 04 notes 64-127

The limitations are:

The source channel (MIDI 01 MDA EP) is muted when using MIDI rules
Only one source note range maps to one target (Piano range 0:63)
MAP-ped controllers cannot be directly learned
Snapshots can change MIDI rules,
Program changes in a snapshot cannot change MIDI rules

To play the DX layer, we have to Clone MIDI Channel 2 to MIDI Channel 3:

Apply the MIDI profile using the Zynthian’s Admin menu:

Select the Admin Page:

Select the MIDI profile menu and pick the profile:

Save the snapshot as “MIDI Split Rules Tutorial.”

If we want to play the EP, just apply the Clear or Default Profile.

We can also add the MIDI profile using the zynthian.local Snapshot page.

Select the saved snapshot. The MIDI rules are displayed in the middle of the page:

At the bottom of the page, Select the script “Split 2, E3, 4”, and click the + to add the script to the snapshot.

Re-save the snapshot. Enjoy the layered split!

I attached the snapshots to make learning easier.

013-Layer Split Tutorial.zss (123.3 KB)

014-Split Midi Rules Tutorial.zss (32.5 KB)

Hope this helps! Happy New Year!

Sam in NJ USA


Excellent piece of work!


Sam, this is a perfect tutorial. Perfect job, thanks a lot.

1 Like

Great tutorial! It should be in the wiki. Congrats!


1 Like

Thank you all! I will add it to the review cue.

Happy New Year!


Thank you Sam @samriccijr :slightly_smiling_face:

This is a very thorough introduction, to setting Midi filters with rules scripts in Webconf.

I am pretty versed in multichannel Midi programming, which I have been doing continually since my late teenage years, and wrapped my head around this specific field of Zynthian applications rather quickly.

Instead, being my electronic music-making seldom focused on live performance, I somehow overlooked the useful side of a Zynth usage as an on-the-fly Midi layering machine.

Thanks for pointing at the Webconf procedures and Zynthian interface pages, that help implementing ranges and split points of the same Midi channel, including the scant reference documentation on rules scripts, which I will consider as an available tool from now on, especially for building multi-range/instrument patches, being that the potentially most interesting aspect for my workflow.

All the best (in life and music)

These do date back to the pre-history of the zynthian, when writing wasn’t as widespread as it perhaps is now…

1 Like