New Features: Channel Clone & Active Channel


Hi @Zynthianers!

After my 2-weeks holidays, i’m in Mas Fort, the family country-house for the rest of summer. Barcelona is too hot in summer :wink:

It’s a relaxed semi-holidays time, although normally is quite productive, probably because of the relaxed ambient. I’m quitely working in the MIDI filter and other internals, preparing the way for the sequencer and other big improvements.

This update includes a lot of re-factoring, specially in the zyncoder, as i’ve commented here in detail:

These are the main functional improvements and features that you will get by updating your zynthian software right now:

  • Channel Clone: it’s the new method for “layering” sounds while allowing to change volume and other controllers independently. Any MIDI channel can be bond to other channels, what it means that all the note on/off + pitch bending + channel presure (aftertouch) messages received by the source channel will be cloned to the bond channels.

  • Multi-port Architecture: the new MIDI router allows having several input and output ports, that can be configured and routed easily (by code). This will allow to adapt the Zynthian MIDI Router to the new features as we develop it.

  • Active Channel: this feature, that can be enabled/disabled from the webconf tool, allows to forward all MIDI input to the active layer’s channel. This is very useful when your master keyboard can’t change its MIDI channel easily. You can rotate the active layer by clicking the “layer” knob, or selecting from the layer list.

  • Improve Filter Rule System:

    • Fix IGNORE rules. Now it should work as expected!
    • Add new events types: NOTE_ON, NOTE_OFF
    • Program Change event name has changed from PG to PC!!!
    • Allow specifying PC number in rules, so you can set rules for specific Prog.Nums.

More to come very soon!! Stay tunned …


Preloading samples at boot

As example of the new “MIDI-filter rule system” features, you can split our keyboard like that:

MAP CH#0 NON#0:45 => CH#1 NON#0:45
MAP CH#0 NOFF#0:45 => CH#1 NOFF#0:45

When playing in channel 1, this will map the lower notes (until A-1) of your keyboard to channel 2. Easy!
We can make simpler by adding a learning procedure … proposals? :wink:


Keyboard Split Zones: Mapping sounds to note ranges

if you intend to make zynthian midi filter stronger (and come close to what mididings does, see our discussion New Engine : Aeolus), then I’d need filters based not only on the CC controllers number, but also on their values.
And the ability to make calculations or apply filters to those values.


No plans for adding that kind of functionality in the near future, but i intend to support mididings engine integration when required (aeolus, etc.).


When (if?) you want to add programmatic MIDI… this might be useful… . Can process live MIDI and MIDI files.


I would use lilypond and translate it to a midi file.