Using Multiple Audio Interfaces
It is possible to run Jamulus with multiple Audio Interfaces on all three operating systems. Useful when we need to output an instrument through external audio card for minimal latency and computer microphone for communication. Other use cases may apply.
Under Windows, the best option to run multiple interfaces through Jamulus at the same time is by using a combination of JACK Audio Connection Kit with VoiceMeeter. It can be accomplished with just VoiceMeeter, but I’ve found that it introduces some undesirable latency and it wasn’t supporting 64 frame buffer size correctly as it was producing some noises through my headphones.
- Install and configure JACK on Windows - Make sure you select your best audio interface in the configuration steps, also add
-r 48000 -p <desired frame buffer size>to ensure JACK is outputting audio in the required sample rate for Jamulus (48.000Hz). If your frame buffer size is too low for your hardware, you’ll need to change it to a higher value;
- Install and open Voicemeeter;
- Open configured Jack PortAudio shortcut, Jack Control and Jamulus software;
- On Voicemeeter, go to HARDWARE OUT and on A1 dropdown list, select JackRouter. On Hardware Input 1 select your computer microphone. You can make your computer microphone have the lowest latency possible by going into Menu > System Settings/Options… and enabling WDM Input Exclusive Mode (if you experience crackling noises while speaking, disable this) and changing the Engine Mode to Swift;
- Make sure the Hardware Input where you selected your microphone is sending sound through A1 by enabling the corresponding button next to the fader;
- On Jamulus, under Settings, select JackRouter as your Soundcard Device;
- On Jack Control, if you click the Connect button, you should now see three devices: portaudio (your external audio interface), voicemeeter and jamulus. If Jamulus doesn’t appear, try connecting and disconnecting from any server to enable it;
- To test things out, on Jack Control, connect portaudio and voicemeeter output ports to jamulus input ports, then connect jamulus output ports to portaudio input ports (assuming you’ll be using your external audio interface to listen, otherwise you can use voicemeeter to redirect the sound to another device, which I will not cover on this guide). Connect to a server on Jamulus and test it out by speaking into the microphone and playing your instrument. If everything went well you should hear yourself;
- To make JACK connections permanent, on Jack Control, open the Patchbay, add all inputs and outputs available (Add… > Select each Client > Click Add Plug until there’s none left) and make the connections you wish to make permanent. This usually goes like connecting both system and voicemeeter outputs into jamulus input, and jamulus output into system input. Once done, save the Patchbay definition and Activate it. Now every time you start jamulus and connect to a server, the connections on JACK should automatically be done.
- The Microphone can be muted and it’s volume adjusted on VoiceMeeter. Be sure to play with the VOICE graph too (equalization), I find that my voice sounds better if I move it halfway into Lo;
- If you’re using VoiceMeeter Banana or Potato, you can apply Gate to your microphone (useful to cut undesirable noises when you’re not speaking);
- If you set your default playback device under Windows to one of VoiceMeeter’s virtual inputs, you can route audio from your computer into JackRouter (and consequently, into Jamulus) by enabling the A1 button on the relevant input under Virtual Inputs. This is useful if you wish to play some audio through Jamulus (backing tracks, youtube, recordings, etc…)
Aggregate devices lets you do this. Just make sure your Jamulus version is 3.5.3 or higher.
On Linux, it is possible to route additional devices to Jack by using alsa_in.
- Follow this tutorial to route the desired interface into Jack by using alsa_in.
- Jamulus should automatically route the JACK configured interface, adjustments can be made through the Connect button.
- Connect the device configured on step 1 into jamulus input.
- Use Patchbay as described on Windows section to make connections permanent.