Streaming Online Real-Time Jam Sessions Into Zoom Video Conferencing
By John Lyon
Deep Cove, North Vancouver, BC
Last Updated 30 April 2021
Before You Start
The concept of ‘signal chain’ is key to understanding and setting up these software interfaces. Conceptually, it’s similar to ruuning wires from your stage microphone, to your mixer, setting the levels, tone controls, and signal processing (reverb, compression, etc.), and running wires to your amp or your powered speakers. On your computer you need to run the signal from your microphone, to your USB audio interface, into your computer, and then into your online jamming software, then into a connecting ‘virtual’ device called Blackhole, then into Zoom, and from Zoom back out to your headphones. Keep this in mind as you study the processes described below.
Please note that this document focuses on the Mac computer, not Windows or Linux. While I know that everything described here can be done on these other platforms, I have only minimal experience with them.
Update 30 April 2021: I started learning by first installing and using the JackTrip online jamming software developed at the Stanford Centre For Computer Music and Acoustics (CCRMA). Since I have recently also been testing Jamulus and Sonobus streaming into Zoom, please note that the procedure I describe for streaming JackTrip into Zoom on the Mac is somewhat different than the procedure required for streaming Jamulus aned Sonobus. The difference to note is that JackTrip to Zoom requires that you create an ‘Aggregate Audio device’ using the ‘Audio MIDI Setup’ app which comes with your Mac, while Jamulus and Sonobus streaming into Zoom require that you create a ‘Stacked Audio Device’, and they do not require that you run the QJackCtl command on the Mac. This has been a ‘gotcha’ for me at times since I often switch between all three online jamming apps, and when I forget to switch between the ‘Aggregate’ device (JackTrip) and the ‘Stacked’ device (Jamulus and Sonobus), streaming into Zoom doesn’t work. If you only use one online jamming package, you can make the proper device your ‘default’ audio device, and indicate the ‘default’ device when setting up your online jamming software and Zoom. Because I switch between these apps, I have to explicitly set the audio devices every time.
This document describes the steps required to integrate Zoom and online jamming software JackTrip (with additions covering Jamulus and Sonobus), so that the low-latency audio stream from a JackTrip session, either peer-to-peer between two users, or Hub-client, with more than two users could be heard in real-time by all viewers of a Zoom session. This document is for Mac users, as I haven’t done the JackTrip/Zoom integration on Windows. It assumes you have already watched Jan Stoltenberg’s YouTube tutorial videos explaing how to install, set up and run qjackctl and JackTrip (see below for links), or better than the text version of JackTrip, you are using Aaaron Wyatt’s GUI version of JackTrip, QJackTrip (see below for links).
1. Follow either Jan Stoltenberg’s excellent YouTube tutorial series on setting up JackTrip on your Mac, or Synthia Cynthia Paine’s fine series of YouTube videos on setting up JackTrip on Windows 10.
The last two YouTube videos in Jan Stoltenberg’s presentation cover:
- The integration of JackTrip online jamming software with a Digital Audio Workstation (DAW), in this case Ableton Live, but, using the same instructions, I was able to stream JackTrip audio signals into Logic Pro X on my Mac
- The integration of a JackTrip low-latency audio stream into a session of the Zoom video conferencing software.
This document is a step-by-step summary of the process of setting up both the JACK Audio Connection Kit (JACK), Qjackctl, Jacktrip, Qjacktrip, and the Zoom app on the my Mac Mini, and streaming the Jamulus and Sonobus online jamming software into Zoom.
You will need to install the Blackhole Virtual Audio device on your Mac. It works on even the newest version of Mac OS, Big Sur. See Jan Stoltenberg’s last two JackTrip tutorials for instructions.
The Blackhole download site is here: https://existential.audio/blackhole/
[News Flash: From the Blackhole web site, March, 2021: If you are using a multi-output device, due to issues with macOS a 2ch audio driver must be enabled and listed as the top device in the Multi-Output. This was a problem for me as I was experimenting with the 4-channel Behringer U-Phorria UMC404HD USB audio interface and I could not determine why it simply wasn’t working with Blackhole)
Figure 1. QJackCtl ‘Setup’ Window. Usually the Sample Rate and Frame/Period are the only two settings you need to change. In the ‘Advanced’ window you can also change the number of channels (Channel 1/O) to add the extra channels needed by the Blackhole virtual audio device.
Figure 2. The QJackCtl ‘Setup’, ‘Advanced’ window. Here you add the extra audio channels needed by the Blackhole virual audio device.
Run the Qjackctl software. In the ‘Setup’ window, set the ‘Sample Rae’ to 48000, and the ‘Frames/Period’ to an agreed size. I am using 128, which may need to be higher if you have a slower internet bandwidth/speed. In the ‘Advanced’ section of the QJackCtl ‘Setup’ Window, set the number of channels to match either the 2 or the 16 extra input and output channels provided by the Blackhole software (depending on which version of Blackhole you downloaded and installed. I have installed both the 2 channel and the 16 channel Blackhole virtual audio devices). In my case, my USB audio interface (an Apogee Duet) provides 2 inputs and 4 outpus (stereo speakers and headphones) so I have 4 input channes (2 + 2 Blackhole channels) and 6 output channels (4 + 2 Blackhole channels).
The original JackTrip app on the Mac, Windows, and Linux is a command-line app, harkening back to the days of MS-DOS (no graphics). To run the text version, you need to open a Terminal. On your Mac, you find the Terminal app in the Utilities sub-folder in the Applications folder. If this is strange and off-putting, I suggest you download and install Aaron Wyatt’s new GUI version of JackTrip, ‘QJackTrip’ (you can find QjackTrip here: https://www.psi-borg.org/other-dev.html).
Here is what I did to test JackTrip and Zoom working together. Use QjackTrip to log onto the test server at The Stanford Center for Computer Research in Music and Acoustics (CCRMA). (JackTrip was developed at Stanford CCRMA and there is lots of useful information on their web site about JackTrip). The IP address for 128 Frames/Period is 18.104.22.168. It’s a Hub Server so you need to be a Hub Client. The command line test would be: ‘jacktrip -C 22.214.171.124’ if you have more than one microphone, set the number of channels to match, e.g. ‘-n2’ for two channels. Make sure you are listening with headphones or earbuds. If you’ve done everything right, you should hear the sound of clapping, looped and repeated endlessly. If this is not making sense, go watch the whole tutorial series on JackTrip on the Mac by Jan Stoltenberg. It’s remarkably clear and straightforward. Quite short too.
If you have installed Blackhole, and set up a new Aggregate Device in the ‘Audio Midi Setup’ window on the Mac. Zoom will use a couple of the extra channels provided by Blackhole, and each extra JackTrip user will connect to these same two extra Blackhole channels used by Zoom. Windows users can watch the Windows JackTrip tutorials made by Synthia/Cynthia Payne found here: https://www.youtube.com/playlist?list=PL1PiOF-Vo5KA-xxBue6BjdrEQAXOzDlNM
Now you have to make sure that Zoom is connected to JACK in the Qjackctl ‘Connect’ window. By default Zoom will use the 2 playback channels above the 4 output channels taken up by my USB audio interface (your USB audio interface may only have 2 output channels—or it may have more). So highlight the receive channel on the left hand side of the ‘Connect’ window, the one coming from the Stanford server, and coonect it to playback channels 5 and 6 (in my case), while at the same time connecting to playback channnels 1 and 2 (on the USB interface). Connect channels 3 and 4 in my case (the headphone playback channels). See Figure 3 below.
Figure 4. The QJackCtl ‘Connections’ window, with the audio coming from my JackTrip server hooked into playback channels 5 and 6, the 2 Blackhole audio channels. Channels 5 and 6 will connect JackTrip to the input channels in in Zoom.
In Zoom, set up a new meeting or join a meeting. Choose to ‘Join With Computer Audio’. In the Zoom ‘Settings’, ‘Audio’, for ‘Speaker’, choose your USB audo interface. For ‘Microphone’, choose ‘Blackhole 2 channel’. Under ‘Music and Professional Audio’, tick the box for ‘Show in-meeting option to ‘Enable Original Sound’ from microphone’ so as to avoid using the sound tweaking and compression built into Zoom. Finally, go to the upper left-hand corner of the Zoom window and click the button ‘Turn On Original Sound’. If you have a stereo JackTrip signal coming in, you can use the Qjackctl ‘Connect’ window to route your left-hand ‘Receive’ signal to both your USB audio interface channel 1, and your Zoom audio interface channel 5 (that’s channel 5 for me. For you, it may be channel 3. It will be the first channel number above the channels in your USB audio interface. Do the same for your right-hand stereo signal ‘Receive’ channel 2, your ‘playback’ channel 2 and ‘playback’ channel 6 (or channel 4; see above). If your audio interface is stereo (for example, I have 2 microphones, one for guitar and one for voice) in your Zoom Preferences, go to Audio and down near the bottom, click on the ‘Stereo Audio’ tick box.
Remember that on the upper left corner of your Zoom window, you want to see ‘Original Sound Off’. That means that your original sound has been turned on. I know, it’s confusing.
If in doubt of any of this, go listen to Jan Stoltenberg’s tutorial on integrating Zoom and JackTrip. And if you haven’t yet, watch his whole series of short YouTube videos. They are essential to solidify your understanding of how to make all this work. And I can’t help but think they are brillient examples of clear teaching.
Figure 5. Here is a Zoom meeting showing the Audio Settings. Notice that my ‘microphone’ is the 2-channel Blackhole virtual audio device. Output is my USB audio interface, an Apogee Duet.
Jamulus and Zoom
Jamulus can be streamed itno Zoom too, but doesn’t require the QJackCtl app or the Aggregate device you need with JackTrip.
Open the Mac ‘Audio MIDI Setup’ app. Create a ‘Multi-layer Device’ NOT an Aggregate Device – don’t ask me why at this point) that includes both your audfio interface (e.g. USB mic or headset, Forcusrite Scarlett or in my case Apogee Duet) AND your Blachole 2-channel input and 2-channel output (or 16-channel input and output) Virtual Device, as described in Jan Stoltenberg’s tutorials on JackTrip and Recording DAWs and JackTrip and Zoom (see https://www.youtube.com/watch?v=qp_8sM7uG00 ). Stoltenberg tells you to use an Aggregate Devive, which is correct for JackTrip. However, Jamulus seems to require a stacked Multi-layer Device.
Figure 6. The ‘Audio Devices’ window from my Mac ‘Audio MIDI Setup’ app, showing the stacked Multi-Output Device I created, ‘USB Duet + Blackhole 2ch’ highlighted. Right-click on this device to make it the default audio device. If you are using JackTrip (as I am), you must create an ‘Aggregate Audio Device’. I called mine ‘Agg. Duet + Blackhole 2ch’ and as you see from the icons it is my default audio device.
In Jamulus, open the ‘Settings’ window by pressing the ‘Settings’ button. You can use the default system input and output devices if you have your stacked Multi-layer device set as your default device. Or you can set ‘input device’ to your USB audio interface (e.g. Focusrite) and set ‘output device’ to your Blackhole 16-channel or 2-channel device. Lately I’ve been using the 2-channel Blackhole device for simplicity).
In Jamulus, make sure no one you want to record is muted. See the image below.
Figure 7. The Jamulus app with the ‘Settings’ window opened. Note that my ‘Device’ is set as follows” ‘in’ Duet USB, my audio device, and ‘out’ Blackhole 2ch. This will connect Jamuls to the Zoom app.
Sonobus and Zoom
The Sonobus-to-Zoom setup is pretty much the same as the Jamulus setup described above.
On the Mac, open the‘Audio MIDI Setup’ app. Create a ‘Multi-layer Device’ NOT an Aggregate Device – don’t ask me why at this point) that includes both your audfio interface (e.g. Forcusrite Scarlett or in my case Apogee Duet) AND your Blachole 2-channel input and 2-channel output (or 16-channel input and output) Virtual Device, as described in Jan Stoltenberg’s tutorials on JackTrip and Recording DAWs and JackTrip and Zoom (see https://www.youtube.com/watch?v=qp_8sM7uG00 ). Stoltenberg tells you to use an Aggregate Devive, which is correct for JackTrip. However, Sonobus and Jamulus require a stacked Multi-layer Device.
In Sonobus, on the Mac, go the Sonobus menu item at the top of the screen (next to the apple icon). On Windows and Linux, click on the ‘File’ menu item) Click on the ‘Show Options’ menu item (the first one) to open the AUDIO OPTIONS RECORDING window. You can use the default system input and output devices if you have your stacked Multi-layer device set as your default device. Or you can set ‘input device’ to your USB audio interface (e.g. Focusrite or your USB microphone or USB headset) and set ‘output device’ to your Blackhole 2-channel or 16-channel device. Lately I’ve been using the ‘USB Duet + 2-channel Blackhole’ device for simplicity). Make sure no one you want to record is muted in Sonobus. See the image below.
Figure 8. Sonobus with the Audio Setup screen open showing the input as my USB audio device (yours will likely be different) and the output as the Blackhole 2-channel virtual audio device. This is what will carry the audio from Sonobus to Zoom.
Logic Pro into Zoom
In Logic Pro the trick is to set your USB audio interface as the ‘input’ on your tracks, and the Blackhole 2-channel device as your output. In Zoom the Blackhole 2-channel device becomes your ‘microphone’ and your USB device becomes your ‘speaker’. The main reason for doing this is to be able to use all of the signal processing power of Logic Pro, plus even use pre-recorded tracks, e.g. drum or bass tracks or Band-in-a-box tracks.
Band-In-A-Box to Zoom?
I haven’t tried it yet, but why not?
Transcribe! Audio Player to Zoom
Transcribe! By Seventh String Software is a musician’s music player optimized for learning and transcribing music. It allows you to change speed of the music without changing pitch, or change the pitch of the music. It allows for selecting and looping any section of the music. Many music books have been written with the author using ‘Transcribe!’ to make perfect musical texts of recorded songs.
I tested this and it works, but ‘Transcribe!’ seems to like to work at a 44,100 sample rate, whereas JackTrip default is 48,000. When I reset JackTrip to a sample rate of 44,100, I could output music from ‘transcribe!’ to Zoom using the Blackhole 2-channel virtual audio device.