My opinion is, fwiw, that SC’s built in bus routing objects are too low level to be pleasant for normal usage. It’s possible to do mixing with them, but you have to rebuild architecture in various places. And it’s too easy to forget to include the bus and group objects in patterns. Too many ways to get it wrong.
For these reasons, I wrote a MixerChannel class (to avoid repeating architecture, and to support DAW-like signal routing, including sends), and a wrapper class for patterns that “binds” a pattern to resources upon which it depends.
Delegating routing to helper objects has made it all a lot easier for me.
hjh