numOutputBusChannels offset

An 8-channel system I am working with is configured in a way in which the outputs 2-9 are routed to the speakers. Is there a way to offset the numbers in SuperCollider so that I can use the indexes 0-7?

I don’t know, but you could do something like…

SynthDef(\outputRouter, {
   ReplaceOut.ar(2, In.ar(0, 8));
}).add;

… and place it at the end of your node tree.

1 Like

IMO this isn’t the best way to frame the question, because it assumes that you should write your signals to 0-n and then something else is responsible for connecting those to the hardware channels.

IMO a better solution would be to mix your signals down to a private bus (Bus.audio(...)) and then, as Jordan correctly suggests, use a synth at the end of the chain to rearrange the channels however you need. Abstracting the logical channels away from the physical channels will give you a lot more adaptability.

hjh

I want to share my clumsy experience even though others suggested better solutions:

I had the same problem ten years ago when I had to work with various audio interfaces. At that time, I added an environment variable to each Synth. It could be quickly done using “Find” and “Replace” in SC-IDE.

Assuming that there is one of the following codes at the end of each SynthDef,

Out.ar(out, source)
OffsetOut.ar(out, source)
ReplaceOut.ar(out, source)
XOut.ar(out, xfade, source)

there may be the following part in each Synth to create a synth node:

\out, 0 

I could find \out, 0, then replace all of these strings with \out, 0 + ~offsetOut by pressing the “Replace all” button.

For events and patterns, this way may also be applicable.