Sorry, I just got a chance to read the whole thread and think about it for a few minutes… first off welcome to the boards @nra … like @rorywalsh said, there are lots of helpful people here that answer all sorts of questions, I’ve learned a lot hanging around here over the years. But in the scheme of things, the Csound (and in turn, the Cabbage) community is fairly small… and is entirely volunteer.
Anyways on to the problem at hand… believe it or not, I’m actually working on something very similar to this myself!
The problem I saw with this solution is that all of the processing is done in parallel (hence why you have to rebalance for the gain), and that might be perfectly acceptable for your situation, but it didn’t suit my needs. For example, in this case I wanted my LoFi to then route as the input into the reverb.
This can be done by moving the processing for all of these into UDOs rather than instruments, and then having one instrument that calls al of the UDOs and feeds them into each other. Since all of the instruments are on full-time anyway, the only benefit I see to having them separate is “modularity” for future use… in which case, UDO is probably the way to go anyway!
The multi-fx I’m working on has UDOs for modulation, distortion, delay, and reverb. This example code isn’t perfect and I still need to do some trouble-shooting. I think I’m also summing the delay here and not adjusting when routing delay to reverb, but the idea was to allow the delay taps to optionally re-feed the reverb (that’s what the boolean “kOrder” value is for).
Each UDO reads it’s own widgets and toggles and decides what to do, and then one instrument calls them in turn. Essentially it routes like this:
; This sends all audio out to effects
aSigL, aSigR FlexDist aInL, aInR
aSigL, aSigR FlexMod aSigL, aSigR
; aSigL, aSigR FlexMod aInL, aInR
; ensure kOrder is binary
kOrder = kOrder==1 ? 1 : 0
; send to del and rev, and route del to rev if enabled
aDelL, aDelR FlexDel aSigL, aSigR
aRevL, aRevR FlexRev aSigL+(aDelL*kOrder), aSigR+(aDelR*kOrder)
; This adds Dist+Chorus audio to Del+Rev audio
aSigL += aDelL+aRevL
aSigR += aDelR+aRevR
That might be overkill for what your goal is… but overkill and over-complication is one of my hobbies!