This patch has its basis in some code built with some help from my good buddy James Waterworth for the performance version of structuur (2016-7). For that piece, I needed a simple way of using my Launchpad Mini to select the output channels of each instance of the synthesis engine (8 voices, sending each to left, right, or both channels). The patch we put together is a simple controller for [matrix~], with selectable ramp times for some crossfading options.

Core of 'structuur' patch - larger image
Whilst considering what computer control I want for my modular synth, I came back to this patch and thought about repurposing the core code into a switch matrix for routing audio and CV signals.
The patch, like everything I do, is very simple. Six inputs from the Expert Sleepers ES-6 come into the computer via ADAT, and into Max. I can then send them back to the modular, via any of the ES-3’s eight outputs. Done!
Some [live.gain~] objects in between the [matrix~] and the computer’s output keep everything under control. In the future I may work out some dynamic unity mixing to automate things a bit.

Switch Matrix patch - larger image

ADAT inputs and outputs. Simple! - larger image
By default I've set a crossfade time of 1 second, which is most likely the fastest crossfade time I'd be looking for. I have no problem just using a number box to adjust the crossfade time from 1 second to several minutes.
This switch matrix could be made even simpler since the release of Max 8.3. With the new [crosspatch] object I can have control over routing, with added gain controls! That said, I’m unsure how much I want a screen-based control for signal routing. Something to experiment with further.