Monitoring inputs and copy the outputs (without the monitors)

For relatively easy routing audio between applications in OSX, I want to make an audio router in SuperCollider that does the following:

  • Monitors the input channels 2 and 3
  • Duplicates the output channels 0 and 1 to 2 and 3 without duplicating the monitors.

In principle, I want what comes to input channels 2 and 3 to be captured (by SoundIn.ar) and listened to, while every sound that the user generates in the local server is duplicated in the output channels 2 and 3. Any ideas?

So it would be, in order:

  1. Copy output buses 0-1 to output buses 2-3. (Doing this first takes care of “not duplicating the monitors”.)
  2. Copy input buses 2-3 to output buses 0-1.

Note in this scheme that input buses 2-3 are different from output buses 2-3 – I don’t see how to do it if they’re the same, you would need a third stereo pair to save the mic signal before overwriting. But I’m not sure this would make sense anyway.

SynthDef(\route, {
    Out.ar(2, In.ar(0, 2));
    Out.ar(0, SoundIn.ar([2, 3]));
}).add;

This should keep the operations in order… put it at the end of the chain and see how it goes…?

hjh

1 Like

Thanks! That worked smoothly. I was trying ReplaceOut.ar(2, InFeedback.ar(0,2)) for copying the output 1 and 2 to 3 and 4 but this was duplicating the monitoring signals.