MIDI Input organisation

Even though there is a “feature” in this, I continue to start each rackspace this way. I have found keeping tabs on splits and layers quite tricky and a lot of my setups are quite complex. So hopefully this will help others.

The setup is two keyboards a lower 88 note and an upper 49 note. The upper 49 is a CME VX controller and supplies it’s control surface as a separate MIDI input. The MIDI inputs are aliased as Lower 88, Upper 49 and Upper 49 Control, for me it makes the MIDI message flow very clear rather than assigning each zone block separately to a MIDI device input.

There are a number of reasons for the MIDI setup shown:

  1. In order to avoid accidental/controller default CC messages making their way into the plugins (this has caught me out a few times) I only use widgets to map to the plugin controls when actually required. So, the “Lower 88 Performance” and “Upper 49 Performance” blocks filter all SysEx and CC messages, except sustain aftertouch, expression, pitch bend and modulation. Each zone has the expression and sustain message filtered, so it is only turned on when needed.

  2. I do not like to use multiple pedals so the “Lower 88 Perf Controls” block takes in the “Lower 88” MIDI stream and filters out Note ON, Note OFF, and aftertouch messages, leaving just the controls being merged into the “Upper 49 Performance” block. You may want to also filter the “Lower 88” modulation and pitch bend at this point.

  3. The Zone blocks all have their MIDI input set to Local GP Port and MIDI merge enabled, so these blocks are now used to set the zones and the stream is limited to just performance data. The source of the stream is also very clear. So when adding a new zone there is no issue of getting unwanted CC messages flowing into the plugins or getting the single sustain or expression pedal correctly routed. For more infomation the zone name could include the low and high MIDI note names
    eg. C1 Zone B3 etc…

It is the third point that has the feature, you cannot use the learn function when setting zones. Setting the zones must be done manually…

This is one of my rackspaces with 7 zones on the 88 note (3 sequencer triggers on the right are very small) and three zones on the 49 note. I also make use of the Note On blocking in the zones when switching variations to avoid stuck notes. The Plugin bypasses are also switched on variations to save CPU cycles when no longer needed.

GP 4.1.5


A little gotcha when using global transpose. When global transpose is set to a value other than zero, the transpose is applied to each MIDI block. Setting transpose to -1 and looking at the template above, the global MIDI monitor shows the incoming key, the performance layers (1st layer) shows the key transposed down by 1 semitone, but looking at the output of the zone MIDI blocks, the key has been transposed by down by 2 semitones. The ignore global transpose checkbox must be checked in one layer. In the template I have chosen to disable global transport at the performance layer so that when adding a new block at the zone layer the global transpose is correct without having to remember to turn it off for each zone.