FluidPatcher Power Up
I was poking around in the Fluidsynth code as a result of trying to figure out a slick way to monitor MIDI messages and realized I could get FS to call my own custom python function to handle MIDI events, and do whatever I want to them and pass them on to the synth as needed. What does this mean? It means I can expand router rules to translate from one type of message to another, so if I want to make aftertouch affect a control change like filter cutoff, no problem! It also means I can throw midi events at my own callback to handle things like changing patches, tweaking reverb/effect settings, etc. – so I don’t have to rely on messily keeping track of CCLinks and polling CC values constantly.
I’m not noticing any increase in latency whatsoever with my python callback function – so I think this is going in the next update. This will be a bit of a breaking change, since the
cclinks keyword in bank files will go away. Router rules will now have an optional
target parameter, which can be another Fluidsynth rule type, or
effect, or some arbitrary name that gets handled by the specific patcher implementation, plus an arbitrary number of extra parameters that get passed as needed. If I’m a good boy and can figure out a way to do it cleanly, I’ll add a hack that translates cclinks keywords into the appropriate router rule.