I’m currently working on improving the MIDI router, what will add new features and will solve some problems:
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 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. Initially i’m working in this configuration:
- Input Ports
- Output Ports
Every input port is processed depending on a set of flags that can be set independently for each:
- FLAG_ZMIP_UI => Capture Events for UI
- FLAG_ZMIP_ZYNCODER => Capture events for Zyncoder Sync.
- FLAG_ZMIP_CLONE => Enable Clone feature
- FLAG_ZMIP_FILTER => Enable Rule Filter
- FLAG_ZMIP_SWAP => Enable Swap Filter (MIDI learning)
- FLAG_ZMIP_TRANSPOSE => Enable Channel Transposing
- FLAG_ZMIP_TUNING => Enable Fine Tuning using Pitch Bending
The result can be routed to a list of output ports, that also can be configured for every input port. Output ports have an extra “by-channel” filter that can be set independently for each.
Improve Filter Rule System:
- 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.
- Execute Shell Command Rules
- More …
- Lot of bugfixes. I hope SysEx and Clock messages will stop giving problems.