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.
OK! Let’s do It. Open a fracture request.
Anyway, i would like to add that currently you can choose, from webconf, the hardware MIDI ports being connected to Zynthian input and output.
Hi @aw-bs,
try this:
make 1th layer PD
make 2nd layer FluidSynth
from Layers menu select 1#PD and go to Layer Options by bold click
select MIDI Routing
and select [ ]2#FS
OK, so make experiment with Clone MIDI or Add MIDI-FX on Layer Options. Also look on web config to menu Software/LV2-Plugins and select other available MIDI Tools.
I maked some preparatiom, my AKAI EWI USB I rerouter by BomeBox, so I have on channel 1 only CC7 and on channel 2 only Note ON, Note OFF. This was going to Zynthian.
In Zynthian I setup to layers, 1#PD, 2#FS. Loaded your files, I edited pd files to set output to channel 2 and CC#7. Controled setup by patchage and I tried connect PD Midi Out to ZynMidi Router main in.
This is to record and play midi events (CC) with arrays and this by using the internal clock.
Otherwise a metro object can do it in the same way.
Only to see if it works…
It seems to me the jack transport clock is not integrated in pure data. However, the MIDI-FX Layer named MIDI Clock Generator can be used to route it’s internal clock or a host clock such as the zynthian sequencer to the midirealtimein object in pure data. A counter object can be used to adjust the incoming pulses to match the clock tempo. Here’s how it looks:
Here’s an example pd patch that uses the clock to step through a simple 8-step sequencer. The patch includes a control to select a midi channel to send the midi note data to. The pure data layer has to be routed to the synth layer you want it to control. To use the jack clock, a sequence in the zynthian sequencer needs to be started. The MIDI Clock Generator lets you chose which clock you want to use to control the tempo . Of course the zynthian sequencer can do all of this without using pure data or the MIDI Clock Generator. I made this patch and snapshot just to show how to bring in the jack clock to control the patch tempo. ClkTest.zip (2.2 KB) 008-clocktest1.zss (24.5 KB)
I included a snapshot of the layers I used to demonstrate.