Sharing SuperCollider in Video Conferences

This is a resource guide for sharing SuperCollider audio in Zoom or other video conferences.

It has been posted in a wiki format, which means it is community editable. With that in mind:

  • If you have questions or comments on the topic, please post them as a reply.
  • If you have new information or clarifications, please modify the original post.
  • As questions are answered in the replies, lets incorporate them into the original post.
  • Keep information concise and helpful, and prioritize linking to more extensive guides, over re-writing or copy-pasting.

General Information

On all platforms, sharing SuperCollider in a video conference requires a similar setup:

  1. Microphone audio and SuperCollider’s audio must be routed to the same audio device, so you can both speak and play SC sounds.
  2. In order to avoid feedback, you must EITHER:
    • use headphones, or
    • setup your routing so that SuperCollider and the meeting audio plays to your speakers, but your microphone audio does not.
  3. To avoid more complex routing setups, consider joining with a phone/tablet (for voice) and your computer (for SC audio).
  4. If you plan to share audio, make sure to test on a private conference beforehand, to make sure both your microphone and SuperCollider can be heard.

Platforms

Mac

Audio routing solutions

  • Blackhole (free, GPL, simple setup)
  • Jack (free, GPL, powerful, requires command line)
  • Loopback ($100, powerful, easy GUI setup)

Blackhole setup

  1. Follow this guide to create a basic Blackhole routing setup for sharing in a conference, by adding SuperCollider as a source in the left-hand column.
  2. In the section “But it Doesn’t Detect My Microphone/Voice! What to do?”, you will need to setup SuperCollider to play your microphone audio out.
  3. Boot your sc server with your microphone as an input, by either setting it as your input device in Sound Preferences, or setting it using the ServerOptions object.
  4. This code snippet will give you a simple GUI for playing/stopping microphone input and controlling the volume:
    Ndef(\microphone, { SoundIn.ar(0) }).gui;
  5. Developer builds of SuperCollider may not have entitlements required to access the microphone. Official notarized SC builds should work correctly. If you’re not sure, test beforehand and when in doubt plan to share from an official build.

Loopback setup

Loopback conferencing setup

  1. Once Loopback is installed, you can route your audio after the SuperCollider server is booted.
  2. The above screenshot shows a simple routing setup for SuperCollider. Specifically:
  3. The first set of output channels (1 & 2) has both the microphone and SuperCollider audio. This audio will be consumed by your video conferencing application.
  4. The second set of ourput channels (3 & 4) has only SuperCollider audio. This audio can be monitored using headphones or speakers. This will allow you to hear your SuperCollider audio without generating feedback with your microphone.

Windows

Linux

Audio routing solutions

  • Jack (free, GPL, powerful, command line or GUI front-ends)

Video Conferencing Solutions

Zoom

1 Like

well, I am a Linux user, how to force Zoom to use Jack?

It’s easier to connect SC outputs to the PulseAudio JACK Sink, where they will be mixed with the mic signal.

I made an aj-snapshot configuration for it, can share later (not at the computer now)

hjh

thank you, I solved with Jack Sink!

I’ve been trying to get this to work and haven’t had success thus far. I downloaded BlackHole 2ch for macOS, set up a Multi-Output device per the instructions above, set BlackHole 2ch as my microphone in zoom, set the Multi-Output device as my output in Zoom, and turned on Original Audio for Musicians in zoom, but I haven’t got any sound routing from SuperCollider to zoom. I tried Server.default.options.outDevice_("Blackhole 2ch"); too, but that also didn’t provide any sound in zoom (though I could hear it on headphones, which would seem to indicate that the Multi-Output device is working as intended. Has anyone else had trouble with this? Has anyone had success? Any idea what I might be doing wrong?

I always start zoom first, then chose the ZoomAudioDevice as my output from SC. Then when you share audio in Zoom, everyone (including you) can hear it. But you won’t be able to hear it until you share audio.

Sam