Diversity | Inclusion | Technology

Routing System Audio to Jitsi Meet

If you are playing your audio via a software synthesiser or another program, you’ll need to be able to get your system audio to your web browser.

Before we start, ask yourself if you also want to route your mic to Jitsi meet all of the time, or just some of the time, for example if you just want to speak between playing.

Getting set up on a mac

Unfortunately, audio routing doesn’t come as a part of the OS X operating system, so mac users will need to install extra software for this. One free tool that works on older operating systems and Catalina is Blackhole.

Simple Setup

If you just want to send audio to Jitsi and don’t want to use your mic at same time, the easiest way forward is to create a Multi Ouput Device.

Once you’ve installed Blackhole, go to Applications → Utilities → Audio MIDI Setup. Under the windows menu, select Show Audio Devices. Click the + button in the lower left and select Create Multi Output Device. Right-click on the new device and rename it to Jitsi Audio. Select Built-in Output and Blackhole 16ch. Make sure the Master device is the built-in. Also tell that device to do drift correction.

Or for a DAW

If you have a slightly more complex setup, for example, you are running a DAW and want to use your mic at the same time as you use the DAW’s output or if you want to reprocess sounds made by your Jitsi collaborators, you’ll want to make an Aggregate device.

Once you’ve installed Blackhole, go to Applications → Utilities → Audio MIDI Setup. Under the windows menu, select Show Audio Devices. Click the + button in the lower left and select Create Aggregate Device. Right-click on the new device and rename it to Jitsi Aggregate. Select Built-in in Input, Built-in Output and Blackhole 16ch. Make sure the Master device is a built-in. Also tell that device to do drift correction. The GUI on this step will show you a graph of which channels on the new aggregate device are routed to the mic, Blackhole and the speakers.

Creating an Aggregate Device with Blackhole in Audio MIDI Setup
Creating an Aggregate Device with Blackhole in Audio MIDI Setup

Tell your DAW to use your new aggregate device. Make sure that any sound you want to send to your web browser (where Jitsi is!) goes to the channels associated with Blackhole. For channels you wish to monitor, make sure those also go to channels associated with Built-In Output, so that they reach your speakers.

Connecting this to Jitsi

The audio you want to use for Jitsi is now coming from the Blackhole device. You can use Jitsi Meet’s settings to get audio from Blackhole rather than the mic or line in, which is something covered previously. Remember that you’ll need to switch the settings when you want to return to just using the mic as normal.

You can use this same audio setup to send sound to any web application, including other online meeting tools like BigBlueButton. Some tools don’t have easy settings like Jitsi. If you were, for example, using BigBlueButton in Chrome, you could change your audio routing by going to chrome://settings/content/microphone. Switch to Blackhole. If you want to switch back to normal and just use your microphone, you’ll need to to back to the Chrome settings. You may wish to check this when you finish your session.

Linux

Pulse Audio

Many linux audio applications use a system called Pulse Audio. If you are making audio on Linux and you don’t know what “Pulse” or “Jack” is, your audio is probably using Pulse Audio.

You can route pulse audio using pavucontrol. Go to the Recording tab. There should be an item named after either Jitsi itself or after the browser you’re using. To the right of the name, there’s a button with your current input source. Click that and set it to Monitor of XXXX where XXXX is whatever physical device you’re using. Jitsi will then use audio from that device. Keep in mind, however, that you won’t be able to narrate or talk until you switch the Recording device back to your microphone.

Jack Audio

Jack is the audio system used by more “professional” audio applications on Linux. It also has much greater flexibility for audio routing, so if you are having trouble with Pulse, you may want to try using Jack for routing.

By default, Jack and Pulse can’t normally run at the same time. However, as our web browser is a Pulse app and we wish to use Jack for routing, we’ll need to overcome that. One relatively easy route to achieving this uses QJackctl. In settings, under the option tab, go to Execute Script after startup. Paste in pactl load-module module-jack-sink channels=2; pactl load-module module-jack-source channels=2; pacmd set-default-sink jack_out.

This will create two separate Pulse channels, called “sinks”. If you want to route around more Pulse audio, you may decide to create extra sinks, which you can do by changing the ‘2’s above to a higher number.

Once you’ve changed the settings, you’ll want to test if things have worked. Start Jack and then open any normal audio application such as your mp3 player. Try playing some sound. If you hear anything, it worked.

Now, if you’re using a pro audio application like SuperCollider, PD or Reaper, go start it and turn on the Audio engine. In Qjackctl, click on connections and open the Audio tab. You’ll see a list of inputs and outputs on your system, including your audio application, the pulse sinks, and the system (ie, the physical inputs and outputs).

You are going to set Jitsi to get audio from Source-01, so you want to connect outputs on the left to that input on the right. If you want to send your microphone directly to Jitsi, then click on system on the left and Source-01 on the right, then click the connect button below. Do this for everything you wish to connect. So if, as in the image below, you want to connect SuperCollider to Jitsi, you would click SuperCollider on the right and Source-01 on the left and establish a connection. Make sure that anything you want to monitor is also connected to the System output.

SuperCollider connected to Source-01 and the system audio. Note that the system on the left is not connected to Source-01 which means the mic is not connected to that sink.
SuperCollider connected to Source-01 and the system audio. Note that the system on the left is not connected to Source-01 which means the mic is not connected to that sink.

If you have connected everything you wish to monitor to the system directly, you should then disconnect Sink-01 on the left with system on the right. If you are using a microphone, it’s especially important to do this or you risk feedback.

Now go to your web browser, open Jitsi and go to the settings (something we’ve covered previously). Make sure that your input is Source-01 and your output is Jack Sink (without the 01). The settings window may be too narrow to see the full name of things, so you may need to experiment to find the right input and output.

If you are using a different web application like BigBlueButton or just want to be able to see what you’re doing, you could also change your settings elsewhere. Make sure that your Jitsi settings are set to default for input and output. Assuming you’re using Chrome or Chormium, in another browser tab go to chrome://settings/content/microphone Change the mic input to Pulse Audio Jack Source-01. Open your desktop Settings app and go to sound. Set your output device to Jack Sink (without the 01).

Windows

I’m afraid I know virtually nothing about Windows, but I’m eager to hear from you how you’ve solved this problem!

Thanks

Portions of this post come from our friend Amolith at nixnet.services, who has a guide for using and routing audio for BigBlueButton, a more feature-heavy FOSS meeting platform designed for teaching.