The standard V4 Zynthian has physical MIDI input and output ports, ability to connect to some network MIDI devices and USB MIDI, both host and OTG. By default all MIDI inputs are connected to all layers. MIDI FX layer outputs are connected to the built-in physical MIDI output and network MIDI targets. These two may be toggled via the layer’s output routing function. Layers cannot be connected to other MIDI outputs, e.g. USB MIDI. This is by design but I feel there is room for improvement. (I submitted a feature request but @jofemodo asked us to discuss it here first.)
The recently added MIDI FX layers offers the ability to use Zynthian as a MIDI processor, e.g. connect MIDI input to a plugin and the plugin’s output to MIDI output. This would allow such things as keyboard split, velocity dynamics adjustment, etc. for external devices.
I would like to see the ability to feed a MIDI FX layer to any MIDI output. Routing could default to current behaviour. All outputs could appear in the routing list. I would like this to be saved with the snapshot. Zynthian should gracefully ignore any routings involving a missing (temporary) MIDI device, e.g. USB MIDI but retain the routing information in the snapshot. Maybe such routing could be removed if the snapshot is saved whilst the device is missing. It may be possible to implement this functionality with MIDI filters but it seems more intuitive to use MIDI output routing.
I don’t propose changing any input routing. We may consider this advantageous in the future, e.g. allow two MIDI controllers to use channel 1 and route each to different engines but I think we can already do similar with MIDI filters so probably not worth it.
As a minimum I think we should be able to route to any MIDI output.
Please offer suggestions, support, alternative ideas, etc.